@font-face{font-family:Inter;src:local('Inter')}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#b3c6ca;color:#f2f4f2;font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:14px}button,select{font:inherit}button{cursor:pointer}button:focus-visible,select:focus-visible{outline:2px solid #efc781;outline-offset:4px}button{touch-action:manipulation}button,select{color:inherit}button{border:0}button:hover{filter:brightness(1.13)}[hidden]{display:none!important}#world,#world>canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}.glass{background:rgba(22,37,42,.9);border:1px solid rgba(225,239,239,.13);box-shadow:0 8px 32px #10262e13;backdrop-filter:blur(18px)}.topbar{position:absolute;inset:24px 28px auto;display:flex;align-items:center;justify-content:space-between;gap:20px;pointer-events:none}.topbar>*{pointer-events:auto}.brand{display:flex;align-items:center;gap:14px;padding:16px 20px;border-radius:10px}.brand-mark{font-size:27px;font-weight:400;letter-spacing:-7px;padding-right:8px;color:#e9bb77;border-right:1px solid #526064;width:43px}.brand-mark span{font-weight:200}h1{font-size:14px;letter-spacing:2.5px;margin:0;font-weight:600}.brand p{font-size:10px;letter-spacing:1.35px;color:#aebcbb;margin:7px 0 0}.live-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#a2c8b2;vertical-align:2px;margin-right:7px}.edition{color:#d1a970}.top-actions{display:flex;gap:10px;align-items:center}.camera-switch{padding:5px;display:flex;gap:4px;border-radius:9px}.camera-switch button{font-size:12px;font-weight:500;padding:11px 14px;border-radius:5px;background:transparent;color:#b8c4c5;transition:background .2s}.camera-switch button span{font-size:10px;margin-right:7px;color:#90a0a4}.camera-switch button.active{background:#ecdfc8;color:#243b41}.camera-switch button.active span{color:#816e51}.icon-button{width:40px;height:40px;border-radius:50%;font-size:18px}.district-card{position:absolute;top:133px;left:28px;width:247px;border-radius:10px;padding:20px 21px}.eyebrow{font-size:10px;font-weight:600;letter-spacing:1.5px;color:#b9c5c5;display:block}.district-card .eyebrow{display:flex;justify-content:space-between;color:#d5b180}.district-card h2{font-size:29px;line-height:1.15;letter-spacing:-1px;font-weight:450;margin:18px 0 12px}.district-card p{font-size:12px;color:#b6c3c5;line-height:1.7;margin:0;max-width:190px}.district-meta{display:flex;gap:14px;margin:21px 0 18px;font-size:11px;color:#aebbbb}.district-meta b{font-weight:500;color:#f0efea}.weather{margin-left:auto}.phase{display:flex;align-items:center;gap:6px;font-size:10px;border-top:1px solid #ffffff17;padding-top:14px;color:#ead3af}.phase span:last-child{margin-left:auto;color:#92a5a8}.phase-dot{width:5px;height:5px;background:#d0ab74;border-radius:50%}.bottom-left{position:absolute;bottom:24px;left:28px;width:222px}.minimap-panel{border-radius:10px;overflow:hidden}.map-heading{padding:15px 15px 5px;display:flex;justify-content:space-between;font-size:9px;letter-spacing:1.7px;color:#b3c1c2}.north{font-size:10px;color:#e4c398}#minimap{width:100%;height:auto;display:block}.map-legend{padding:0 12px 12px;display:flex;justify-content:space-between;font-size:9px;color:#bbc7c9}.map-legend i{display:inline-block;width:5px;height:5px;margin-right:4px;border-radius:50%}.you{background:#edb765}.agent{background:#9ec7bc}.work{background:#bb8967}.reset-button{width:100%;border-radius:7px;margin-top:8px;padding:9px;font-size:17px;color:#d8c5a5}.reset-button span{font-size:11px;margin-left:6px;color:#bdcacc}.controls{position:absolute;bottom:27px;left:50%;transform:translateX(-50%);border-radius:8px;display:flex;align-items:center;gap:15px;padding:11px 15px;white-space:nowrap;font-size:11px;color:#c3cdcd}.controls>span{display:flex;align-items:center;gap:7px}.controls>i{width:1px;height:19px;background:#ffffff20}.key-stack{display:inline-flex;gap:3px}kbd{font-family:inherit;font-size:10px;line-height:19px;padding:0 5px;min-width:20px;text-align:center;display:inline-block;border:1px solid #dce6df2e;border-radius:3px;color:#ebe8dc;background:#ffffff09}.controls button{background:transparent;color:#829b9e;font-size:16px;padding:0;margin-left:0}.admin-card{position:absolute;right:28px;bottom:27px;display:flex;align-items:center;border-radius:10px;padding:14px;gap:12px;min-width:232px}.admin-avatar{height:42px;width:42px;display:grid;place-items:center;background:#b2905d;color:#fff2d9;border-radius:7px;font-size:20px;position:relative}.admin-avatar span{position:absolute;width:9px;height:9px;border:2px solid #203239;background:#9fbda6;border-radius:50%;bottom:-2px;right:-2px}.admin-card .eyebrow{font-size:8px;letter-spacing:1px;color:#9aafb1}.admin-card strong{font-size:13px;display:block;font-weight:500;margin:5px 0}.admin-card small{font-size:10px;color:#a1b5b7}.settings-button{background:transparent;font-size:19px;color:#a7b9ba;margin-left:10px;padding:3px}.interaction{position:absolute;bottom:104px;left:50%;transform:translateX(-50%);border-radius:8px;padding:12px 16px;display:flex;align-items:center;gap:12px}.interaction kbd{font-size:14px;padding:6px 10px;color:#efd7ab}.interaction b{display:block;font-size:13px;font-weight:500}.interaction span{display:block;margin-top:4px;font-size:10px;color:#b2c2c4}.interaction button{background:transparent;color:#e5c18d;font-size:12px;margin-left:15px}.world-label{position:absolute;pointer-events:none;transform:translate(-50%,-100%);padding:7px 11px;background:#172f37e8;border-radius:5px;font-size:10px;letter-spacing:.8px;border:1px solid #ffe3ad52;color:#f0d3a1}.toast{position:absolute;left:50%;top:115px;transform:translateX(-50%);font-size:13px;border-radius:7px;padding:13px 20px;max-width:90%;text-align:center}.crosshair,#crosshair{position:absolute;top:50%;left:50%;height:5px;width:5px;border-radius:50%;border:1px solid #ffffffb0;box-shadow:0 0 3px #000;pointer-events:none}dialog{border:1px solid #ffffff20;border-radius:16px;width:440px;max-width:calc(100% - 32px);padding:32px;background:#1b2e34;color:#eff1ec;box-shadow:0 20px 100px #0006}dialog::backdrop{background:#09191d77;backdrop-filter:blur(5px)}dialog h2{font-size:30px;font-weight:500;letter-spacing:-1px;line-height:1.15;margin:15px 0}dialog p{font-size:14px;line-height:1.75;color:#b7c5c5}.close-dialog{position:absolute;right:18px;top:14px;background:transparent;font-size:23px;color:#b6c3c4}.primary{background:#e6c493;color:#24383c;width:100%;padding:14px 16px;text-align:left;border-radius:6px;margin-top:20px;font-weight:600}.primary span{float:right}.detail-icon{color:#dab279;font-size:38px;margin-bottom:24px}.detail-state{border:1px solid #dcbb7e45;padding:13px 15px;border-radius:6px;color:#e9c691;font-size:13px;margin:20px 0}.detail-state small{color:#b0c3c6;display:block;line-height:1.7;margin-top:5px}.detail-pair{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid #fff1;font-size:12px;color:#aebfc2}.detail-pair strong{color:#eef0e8;font-weight:400}.note{font-size:12px!important;line-height:1.7!important;color:#95acad!important}dl{margin:22px 0}dl>div{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid #ffffff10;padding:10px 0;font-size:12px}dt{color:#e2d3b9}dd{margin:0;color:#a8bfc1;text-align:right}.setting-row{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-top:24px;font-size:13px}.setting-row select{background:#294048;border:1px solid #526569;border-radius:5px;padding:8px}.setting-row input{accent-color:#dfb77c;width:19px;height:19px}#loading{position:absolute;inset:0;background:#1b3037;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:30}.loading-brand{font-size:58px;font-weight:300;letter-spacing:-7px;color:#dbb37b;text-align:center}.loading-brand span{display:block;font-size:12px;letter-spacing:4px;color:#e6ebdf;margin-top:15px}.load-line{width:160px;height:2px;background:#ffffff14;margin:35px 0 10px;overflow:hidden}.load-line i{display:block;width:70%;height:100%;background:#d0a86d;animation:loading 1.5s infinite}#loading p{font-size:12px;color:#c0ceca}#loading small{font-size:9px;color:#7e989e;letter-spacing:2px;margin-top:20px}@keyframes loading{0%{transform:translateX(-100%)}100%{transform:translateX(150%)}}#error{position:absolute;inset:0;background:#182d34;z-index:40;padding:20vh 12vw}#error p{max-width:650px;line-height:1.8}#error button{padding:12px 20px;background:#dab681;color:#18323c;border-radius:5px}#touch-controls{display:none}body.mode-first .district-card,body.mode-third .district-card{display:none}body.mode-first #agent-label{display:none!important}@media(max-width:1250px){.controls{bottom:125px;padding:9px 12px;font-size:10px;gap:8px}.admin-card{min-width:200px}.camera-switch button{padding:10px}.district-card{width:221px}.district-card h2{font-size:26px}}@media(max-width:760px){.topbar{inset:14px 14px auto;align-items:flex-start;gap:9px}.brand{padding:12px;gap:10px}.brand-mark{font-size:23px;width:33px}.brand h1{font-size:10px;letter-spacing:1.6px}.brand p{font-size:7px;letter-spacing:.7px}.brand .edition{display:none}.top-actions{gap:5px;flex-direction:column;align-items:flex-end}.camera-switch{padding:4px}.camera-switch button{font-size:0;padding:9px 11px}.camera-switch button span{font-size:12px;margin:0}.icon-button{width:29px;height:29px;font-size:14px}.district-card{top:100px;left:14px;width:180px;padding:14px}.district-card h2{font-size:22px;margin:12px 0 9px}.district-card p{font-size:10px}.district-card .eyebrow{font-size:8px}.district-meta{gap:12px;font-size:9px;margin:14px 0}.phase{font-size:8px;padding-top:10px}.bottom-left{left:14px;bottom:155px;width:148px}.minimap-panel{border-radius:7px}.map-heading{font-size:7px;padding:10px 10px 0}.map-legend{font-size:7px;padding:0 7px 8px}.map-legend i{width:4px;height:4px}.map-legend span:last-child{display:none}.reset-button{padding:6px;font-size:14px}.reset-button span{font-size:9px}.admin-card{right:14px;bottom:18px;min-width:172px;padding:10px;gap:8px}.admin-card .eyebrow{font-size:7px}.admin-card strong{font-size:11px}.admin-avatar{width:32px;height:32px;font-size:17px}.admin-card small{font-size:8px}.settings-button{font-size:17px;margin-left:4px}.controls{display:none!important}.interaction{bottom:98px;max-width:calc(100% - 28px);padding:10px;gap:8px;width:max-content}.interaction b{font-size:12px}.interaction button{margin-left:5px}.interaction span{font-size:9px}.toast{top:90px;font-size:11px;width:max-content}.world-label{font-size:9px}#touch-controls{display:block}#joystick{position:absolute;left:28px;bottom:28px;width:98px;height:98px;border-radius:50%;border:1px solid #ffffff60;background:#20333b66;touch-action:none}#stick{position:absolute;left:28px;top:28px;width:40px;height:40px;background:#e8d3adc9;border-radius:50%;box-shadow:0 3px 12px #0002}.touch-actions{position:absolute;right:22px;bottom:151px;display:flex;gap:10px}.touch-actions button{border:1px solid #ffffff40;border-radius:50%;width:42px;height:42px;background:#213b43cc;color:#edd5b0;font-size:11px;touch-action:none}}@media(pointer:coarse) and (min-width:761px){#touch-controls{display:block}#joystick{position:absolute;left:275px;bottom:25px;width:100px;height:100px;border-radius:50%;border:1px solid #ffffff50;background:#20333b80;touch-action:none}#stick{position:absolute;left:30px;top:30px;width:40px;height:40px;background:#e6c493;border-radius:50%}.touch-actions{position:absolute;right:280px;bottom:25px;display:flex;gap:10px}.touch-actions button{height:44px;width:44px;border-radius:50%;background:#213b43dd}.controls{display:none!important}}@media(prefers-reduced-motion:reduce){.load-line i{animation:none}}

body.island-overview .district-card{display:none}

/* Island travel map */
#minimap{cursor:pointer}#minimap:focus-visible{outline:2px solid #eac58b;outline-offset:3px}
#map-dialog{width:min(900px,92vw);max-width:92vw;padding:26px;max-height:92vh;overflow:auto}#map-dialog h2{margin:8px 0;font-size:32px}#map-dialog p{margin:8px 0 14px}#travel-map{display:block;width:min(100%,80vh);height:auto;max-height:none;aspect-ratio:4/3;margin:auto;background:#245461;border-radius:14px;cursor:crosshair;touch-action:manipulation} .map-destinations{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.map-destinations button{border:1px solid #526967;background:#284449;color:#eee1c9;border-radius:8px;padding:10px 14px;cursor:pointer}.map-destinations button:hover,.map-destinations button:focus-visible{background:#476460;outline:2px solid #eac58b}#map-status{min-height:2.7em}.district-meta{flex-wrap:wrap;gap:10px}@media(max-width:600px){#map-dialog{padding:20px 14px}#map-dialog h2{font-size:26px}.map-destinations button{padding:9px 10px}}

@media(max-width:760px){.map-legend span:last-child{display:inline-flex}}

/* Asisten AI identity: preserve the supplied wordmark and its aspect ratio. */
.brand h1{margin:0;line-height:1}.brand-logo{display:block;width:185px;height:auto}.brand p{margin-top:9px;font-size:9px;letter-spacing:1.7px}.loading-brand{letter-spacing:normal;line-height:1}.loading-brand img{display:block;width:min(330px,72vw);height:auto;margin:0 auto 24px}#help-dialog{max-height:85vh;overflow:auto}#help-dialog h2{font-size:30px}@media(max-width:760px){.brand-logo{width:124px}.brand p{font-size:7px;letter-spacing:1px}.brand .edition{display:none}}

/* Keep the mobile text labels centred inside comfortable touch targets. */
.touch-actions button{padding:0;min-width:48px;min-height:48px}

/* Text-labelled mobile actions use pills rather than cramped circles. */
.touch-actions button{width:60px;min-width:60px;height:44px;min-height:44px;border-radius:999px;padding:0 8px;font-size:11px}
@media(max-width:360px){.touch-actions{flex-direction:column;align-items:flex-end;right:14px;bottom:150px}}

/* Environmental audio controls also fit compact screens. */
#settings-dialog{max-height:85vh;overflow:auto}.setting-row input[type="range"]{width:130px;max-width:45%;height:26px}.setting-row input:focus-visible{outline:2px solid #efc781;outline-offset:4px}
