.s2047-game { position: fixed; inset: 0; min-height: 100dvh; background: radial-gradient(circle at 50% 0%, #193c59 0, #07131f 52%, #02060b 100%); overflow: hidden; touch-action: none; }
#s2047-canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.s2047-hud { position: absolute; z-index: 5; top: max(12px, env(safe-area-inset-top)); left: 14px; right: 14px; display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; pointer-events: none; }
.s2047-title-card { display: grid; gap: 2px; padding: 10px 14px; border: 1px solid rgba(255,255,255,.18); border-radius: 14px; background: rgba(4,16,27,.82); box-shadow: 0 12px 34px rgba(0,0,0,.28); backdrop-filter: blur(10px); }
.s2047-hud strong { letter-spacing: .12em; color: #ffe177; font-size: clamp(.76rem, 2vw, 1rem); }
.s2047-hud span { opacity: .82; font-size: clamp(.68rem, 1.8vw, .88rem); }
.s2047-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; pointer-events: auto; }
.s2047-actions button, .s2047-dialogue button { min-width: 44px; min-height: 44px; padding: 0 12px; border: 1px solid rgba(255,255,255,.22); border-radius: 12px; color: #fff; background: rgba(4,16,27,.9); box-shadow: 0 8px 24px rgba(0,0,0,.24); cursor: pointer; }
.s2047-status { position: absolute; z-index: 5; left: 50%; bottom: max(18px, env(safe-area-inset-bottom)); transform: translateX(-50%); padding: 8px 14px; border-radius: 999px; background: rgba(4,16,27,.82); border: 1px solid rgba(255,255,255,.16); font-size: .82rem; white-space: nowrap; max-width: calc(100vw - 330px); overflow: hidden; text-overflow: ellipsis; }
.s2047-joystick-zone { position:absolute; z-index:10; left:max(20px,env(safe-area-inset-left)); bottom:max(20px,calc(env(safe-area-inset-bottom) + 12px)); width:clamp(190px,24vw,280px); height:clamp(190px,24vw,280px); display:grid; place-items:center; pointer-events:auto; touch-action:none; }
.s2047-joystick { position:relative; width:78%; height:78%; border-radius:50%; touch-action:none; user-select:none; -webkit-user-select:none; -webkit-touch-callout:none; }
.s2047-joystick-ring { position:absolute; inset:0; border-radius:50%; border:3px solid rgba(255,255,255,.35); background:radial-gradient(circle,rgba(255,255,255,.09) 0 18%,rgba(4,16,27,.74) 20% 68%,rgba(255,225,119,.15) 70% 100%); box-shadow:0 16px 42px rgba(0,0,0,.42),inset 0 0 30px rgba(255,255,255,.08); backdrop-filter:blur(7px); }
.s2047-joystick-ring::before,.s2047-joystick-ring::after { content:""; position:absolute; left:50%; top:12%; bottom:12%; width:2px; background:rgba(255,255,255,.13); transform:translateX(-50%); }
.s2047-joystick-ring::after { left:12%; right:12%; top:50%; bottom:auto; width:auto; height:2px; transform:translateY(-50%); }
.s2047-joystick-knob { position:absolute; left:50%; top:50%; width:39%; height:39%; margin-left:-19.5%; margin-top:-19.5%; display:grid; place-items:center; border-radius:50%; border:3px solid #fff0a5; background:linear-gradient(145deg,#ffe177,#d7aa24); color:#251c00; font-weight:950; font-size:.72rem; letter-spacing:.08em; box-shadow:0 10px 25px rgba(0,0,0,.38),inset 0 2px 7px rgba(255,255,255,.72); transition:transform 60ms linear; pointer-events:none; }
.s2047-joystick.is-active .s2047-joystick-ring { border-color:#ffe177; box-shadow:0 16px 45px rgba(0,0,0,.5),0 0 0 6px rgba(255,225,119,.1); }
.s2047-action-cluster { position:absolute; z-index:11; right:max(22px,env(safe-area-inset-right)); bottom:max(22px,calc(env(safe-area-inset-bottom) + 14px)); width:clamp(220px,27vw,330px); height:clamp(205px,25vw,300px); pointer-events:none; }
.s2047-action-cluster button { position:absolute; display:grid; place-items:center; align-content:center; gap:2px; width:clamp(70px,8vw,92px); height:clamp(70px,8vw,92px); border:2px solid rgba(255,255,255,.42); border-radius:50%; color:#fff; background:rgba(4,16,27,.91); box-shadow:0 12px 30px rgba(0,0,0,.38); touch-action:manipulation; user-select:none; -webkit-user-select:none; pointer-events:auto; cursor:pointer; }
.s2047-action-cluster button b { font-size:1.45rem; line-height:1; }
.s2047-action-cluster button span { font-size:.64rem; font-weight:850; letter-spacing:.04em; text-transform:uppercase; }
.s2047-action-cluster .action-interact { right:0; bottom:0; width:clamp(86px,10vw,112px); height:clamp(86px,10vw,112px); border-color:#fff0a5; background:#ffe177; color:#251c00; }
.s2047-action-cluster .action-run { left:0; bottom:0; }
.s2047-action-cluster .action-inventory { right:4%; top:0; }
.s2047-action-cluster .action-menu { left:8%; top:2%; }
.s2047-action-cluster button:active,.s2047-action-cluster button.is-active { transform:scale(.92); border-color:#fff0a5; background:#ffe177; color:#251c00; }
.s2047-help { position: absolute; z-index: 4; left: 16px; bottom: max(18px, env(safe-area-inset-bottom)); padding: 10px 12px; border: 1px solid rgba(255,255,255,.14); border-radius: 12px; background: rgba(4,16,27,.72); font-size: .74rem; line-height: 1.45; opacity: .86; }
.s2047-panel { position: absolute; z-index: 20; width: min(430px, calc(100vw - 28px)); padding: 22px; border: 1px solid rgba(255,255,255,.22); border-radius: 18px; background: rgba(4,16,27,.96); box-shadow: 0 24px 80px rgba(0,0,0,.55); backdrop-filter: blur(12px); }
.s2047-panel h2 { margin: 0 0 12px; color: #ffe177; }
.s2047-panel h3 { margin: 0 0 8px; }
.s2047-panel p { margin: 0; line-height: 1.55; }
.s2047-quest { top: 84px; left: 14px; }
.s2047-dialogue { left: 50%; bottom: 92px; transform: translateX(-50%); }
.s2047-dialogue button { margin-top: 18px; background: #ffe177; color: #271e00; font-weight: 800; }
.s2047-panel-close { position: absolute; top: 9px; right: 10px; width: 36px; height: 36px; border: 0; border-radius: 10px; color: #fff; background: rgba(255,255,255,.1); font-size: 1.4rem; }
@media (max-width: 720px) {
  .s2047-help { display:none; }
  .s2047-actions button { min-width: 40px; min-height: 40px; padding: 0 10px; }
  .s2047-actions button[data-action="zoom-out"], .s2047-actions button[data-action="zoom-in"] { display:none; }
  .s2047-joystick-zone { width:190px; height:190px; left:4px; bottom:max(4px,env(safe-area-inset-bottom)); }
  .s2047-action-cluster { width:205px; height:190px; right:8px; bottom:max(8px,env(safe-area-inset-bottom)); }
  .s2047-action-cluster button { width:66px; height:66px; }
  .s2047-action-cluster .action-interact { width:82px; height:82px; }
  .s2047-status { left: 12px; right: 230px; transform:none; max-width:none; text-align:center; }
  .s2047-title-card span { display:none; }
  .s2047-dialogue { bottom: 170px; }
}

.s2047-inventory,.s2047-menu { top:50%; left:50%; transform:translate(-50%,-50%); }
.s2047-menu-grid { display:grid; gap:10px; }
.s2047-menu-grid button { min-height:48px; border:1px solid rgba(255,255,255,.22); border-radius:12px; background:rgba(255,255,255,.08); color:#fff; font-weight:800; }
@media (max-width:520px){
 .s2047-status{bottom:198px;left:12px;right:12px;max-width:none;transform:none;}
 .s2047-title-card{max-width:55vw;}
 .s2047-actions{max-width:42vw;}
 .s2047-action-cluster button span{font-size:.56rem;}
}


/* 2.0 Beta interface foundation */
.s2047-title-card small{display:block;margin-top:3px;color:#b9d8e8;font-size:11px;font-weight:700;letter-spacing:.04em}
.s2047-minimap-wrap{position:fixed;right:max(18px,env(safe-area-inset-right));top:88px;width:154px;padding:8px;border:1px solid rgba(165,224,255,.32);border-radius:16px;background:rgba(3,13,24,.84);backdrop-filter:blur(10px);z-index:8;box-shadow:0 10px 32px rgba(0,0,0,.32)}
.s2047-minimap-wrap canvas{display:block;width:138px;height:138px;border-radius:10px;background:#07111d}
.s2047-minimap-wrap span{display:block;padding-top:5px;text-align:center;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#c9e9f6}
.s2047-minimap-wrap[hidden]{display:none!important}
.s2047-menu-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.s2047-menu-grid button[data-action="new-game"]{border-color:rgba(255,119,119,.55)}
.s2047-actions button,.s2047-menu-grid button{transition:transform .15s ease,background .15s ease,border-color .15s ease}
.s2047-actions button:hover,.s2047-menu-grid button:hover{transform:translateY(-1px)}
body.s2047-reduced-motion .s2047-actions button,body.s2047-reduced-motion .s2047-menu-grid button{transition:none}
@media(max-width:760px){.s2047-minimap-wrap{top:104px;right:10px;width:112px;padding:6px}.s2047-minimap-wrap canvas{width:98px;height:98px}.s2047-minimap-wrap span{font-size:9px}.s2047-title-card small{font-size:9px}.s2047-menu-grid{grid-template-columns:1fr!important}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.s2047-actions button,.s2047-menu-grid button{transition:none!important}}


/* 2.2 Beta survival-lite and inventory controls */
.s2047-inventory{max-height:min(76vh,640px);overflow:auto}
.s2047-inventory h3{margin:18px 0 8px;color:#c9e9f6}
.s2047-inventory-items{display:grid;gap:8px;margin-top:14px}
.s2047-item-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid rgba(255,255,255,.14);border-radius:12px;background:rgba(255,255,255,.06)}
.s2047-item-row span{min-width:0;overflow-wrap:anywhere}
.s2047-item-row button{min-width:70px;min-height:38px;border:1px solid rgba(255,225,119,.55);border-radius:10px;background:#ffe177;color:#251c00;font-weight:850;cursor:pointer}

.s2047-travel-buttons{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-top:14px}.s2047-travel-buttons button{min-height:48px;text-align:left}.s2047-travel-buttons button:disabled{opacity:.45;cursor:default}

.s2047-contract-list{display:grid;gap:10px;margin-top:12px}.s2047-contract-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:12px;border:1px solid rgba(255,255,255,.18);border-radius:12px;background:rgba(255,255,255,.05)}.s2047-contract-row h3,.s2047-contract-row p{margin:0}.s2047-contract-row p{margin-top:4px;font-size:.9rem;opacity:.86}.s2047-contract-row button{min-width:110px}@media(max-width:560px){.s2047-contract-row{grid-template-columns:1fr}.s2047-contract-row button{width:100%}}

.s2047-contact-list{display:grid;gap:10px;margin-top:12px}.s2047-contact-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:12px;border:1px solid rgba(255,255,255,.15);border-radius:12px;background:rgba(255,255,255,.05)}.s2047-contact-row h3,.s2047-contact-row p{margin:0}.s2047-contact-row p{font-size:.86rem;opacity:.82}.s2047-contact-row button{min-height:40px;padding:0 12px;border-radius:10px;border:1px solid rgba(255,255,255,.2);background:#17283a;color:#fff}.s2047-contact-row button:disabled{opacity:.5}.s2047-companion-badge{color:#ffe177;font-weight:700}@media(max-width:600px){.s2047-contact-row{grid-template-columns:1fr}.s2047-contact-row button{width:100%}}


/* 2.6 Beta faction reputation */
.s2047-factions{top:50%;left:50%;transform:translate(-50%,-50%);max-height:min(80vh,700px);overflow:auto}
.s2047-faction-list{display:grid;gap:10px;margin-top:14px}
.s2047-faction-row{display:grid;gap:8px;padding:12px;border:1px solid rgba(255,255,255,.15);border-radius:12px;background:rgba(255,255,255,.05)}
.s2047-faction-row h3,.s2047-faction-row p{margin:0}.s2047-faction-row p{font-size:.88rem;opacity:.86}.s2047-faction-row button{min-height:40px;border:1px solid rgba(255,225,119,.55);border-radius:10px;background:#ffe177;color:#251c00;font-weight:850}
.s2047-reputation-track{height:10px;overflow:hidden;border-radius:999px;background:rgba(255,255,255,.12)}.s2047-reputation-track span{display:block;height:100%;border-radius:inherit;background:#ffe177}


/* 2.7 Beta crafting workshop */
.s2047-crafting{top:50%;left:50%;transform:translate(-50%,-50%);max-height:min(82vh,720px);overflow:auto}
.s2047-recipe-list{display:grid;gap:10px;margin-top:14px}
.s2047-recipe-row{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;padding:12px;border:1px solid rgba(255,255,255,.15);border-radius:12px;background:rgba(255,255,255,.05)}
.s2047-recipe-row h3,.s2047-recipe-row p{margin:0}.s2047-recipe-row p{margin-top:4px;font-size:.88rem;opacity:.88}.s2047-recipe-row small{display:block;margin-top:7px;color:#b9d8e8;line-height:1.4}
.s2047-recipe-row button{min-width:110px;min-height:42px;border:1px solid rgba(255,225,119,.55);border-radius:10px;background:#ffe177;color:#251c00;font-weight:850}.s2047-recipe-row button:disabled{opacity:.48;cursor:default}
@media(max-width:600px){.s2047-recipe-row{grid-template-columns:1fr}.s2047-recipe-row button{width:100%}}


/* 2.8 Beta equipment loadout */
.s2047-equipment{top:50%;left:50%;transform:translate(-50%,-50%);max-height:min(82vh,720px);overflow:auto}
.s2047-equipment-list{display:grid;gap:10px;margin-top:14px}
.s2047-equipment-row{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;padding:12px;border:1px solid rgba(255,255,255,.15);border-radius:12px;background:rgba(255,255,255,.05)}
.s2047-equipment-row h3,.s2047-equipment-row p{margin:0}.s2047-equipment-row p{margin-top:4px;font-size:.88rem;opacity:.88}
.s2047-equipment-row button{min-width:110px;min-height:42px;border:1px solid rgba(255,225,119,.55);border-radius:10px;background:#ffe177;color:#251c00;font-weight:850}.s2047-equipment-row button:disabled{opacity:.48;cursor:default}
@media(max-width:600px){.s2047-equipment-row{grid-template-columns:1fr}.s2047-equipment-row button{width:100%}}


/* 2.9 Beta persistent field guide */
.s2047-field-guide{top:50%;left:50%;transform:translate(-50%,-50%);max-height:min(84vh,760px);overflow:auto}
.s2047-field-guide-list{display:grid;gap:10px;margin-top:14px}
.s2047-field-guide-list>h3{margin:12px 0 0;color:#ffe177}
.s2047-field-guide-row{display:grid;gap:4px;padding:12px;border:1px solid rgba(255,255,255,.15);border-radius:12px;background:rgba(255,255,255,.05)}
.s2047-field-guide-row strong{font-size:1rem}.s2047-field-guide-row small{color:#b9d8e8}.s2047-field-guide-row p{font-size:.88rem;opacity:.88}

.s2047-navigation{top:50%;left:50%;transform:translate(-50%,-50%);max-height:min(84vh,720px);overflow:auto}
.s2047-navigation-list{display:grid;gap:9px;margin-top:14px}
.s2047-navigation-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid rgba(255,255,255,.14);border-radius:12px;background:rgba(255,255,255,.05)}
.s2047-navigation-row span{min-width:0}
.s2047-navigation-row button,.s2047-field-guide-row button{border:1px solid rgba(255,255,255,.18);border-radius:10px;padding:7px 10px;color:#fff;background:rgba(255,216,77,.16)}


/* 2.11 Beta explorer camera and photo journal */
.s2047-photo-journal{top:50%;left:50%;transform:translate(-50%,-50%);max-height:min(84vh,760px);overflow:auto}
.s2047-photo-list{display:grid;gap:10px;margin-top:14px}
.s2047-photo-row{display:grid;grid-template-columns:74px 1fr auto;gap:12px;align-items:center;padding:12px;border:1px solid rgba(255,255,255,.15);border-radius:12px;background:rgba(255,255,255,.05)}
.s2047-photo-thumb{display:grid;place-items:center;width:74px;height:58px;border-radius:10px;border:1px solid rgba(255,255,255,.18);font-size:1.5rem;color:#ffe177}
.s2047-photo-row strong,.s2047-photo-row small{display:block}.s2047-photo-row small{margin-top:4px;color:#b9d8e8}
.s2047-photo-row>div:last-child{display:flex;gap:7px;flex-wrap:wrap}.s2047-photo-row button{border:1px solid rgba(255,255,255,.18);border-radius:9px;padding:7px 9px;color:#fff;background:rgba(255,216,77,.16)}.s2047-photo-row button:disabled{opacity:.45}
@media(max-width:620px){.s2047-photo-row{grid-template-columns:64px 1fr}.s2047-photo-thumb{width:64px;height:52px}.s2047-photo-row>div:last-child{grid-column:1/-1}.s2047-photo-row button{flex:1}}

/* v2.12 Nouala Museum collection */
.s2047-museum-list{display:grid;gap:.55rem;margin-top:.75rem}
.s2047-museum-entry{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.65rem .75rem;border:1px solid rgba(255,255,255,.16);border-radius:12px;background:rgba(4,14,26,.62)}
.s2047-museum-entry div{display:grid;gap:.18rem;min-width:0}
.s2047-museum-entry small{opacity:.78}
.s2047-museum-entry button{flex:0 0 auto}
.s2047-museum-entry button:disabled{opacity:.55;cursor:default}
@media (max-width:520px){.s2047-museum-entry{align-items:stretch;flex-direction:column}.s2047-museum-entry button{width:100%}}


.s2047-encyclopedia label{display:block;margin:.5rem 0 .25rem;font-weight:700}.s2047-encyclopedia input{width:100%;padding:.7rem .8rem;border:1px solid rgba(255,255,255,.28);border-radius:.7rem;background:rgba(0,0,0,.32);color:#fff}.s2047-encyclopedia-list{display:grid;gap:.55rem;margin-top:.8rem}.s2047-encyclopedia-row{padding:.7rem;border:1px solid rgba(255,255,255,.16);border-radius:.7rem;background:rgba(0,0,0,.2)}.s2047-encyclopedia-row p{margin:.3rem 0 0}.s2047-encyclopedia-list h3{margin:.8rem 0 .1rem;color:#ffd84d}


/* 2.14 Beta captain's expedition log */
.s2047-expedition-log{top:50%;left:50%;transform:translate(-50%,-50%);max-height:min(86vh,780px);overflow:auto}
.s2047-log-controls{display:grid;gap:.5rem;margin:1rem 0;padding: .8rem;border:1px solid rgba(255,255,255,.15);border-radius:12px;background:rgba(255,255,255,.04)}
.s2047-log-controls label{font-weight:800}.s2047-log-controls textarea{width:100%;resize:vertical;padding:.7rem;border:1px solid rgba(255,255,255,.25);border-radius:10px;background:rgba(0,0,0,.28);color:#fff}.s2047-log-controls button{min-height:42px;border:1px solid rgba(255,225,119,.55);border-radius:10px;background:#ffe177;color:#251c00;font-weight:850}
.s2047-expedition-list{display:grid;gap:.6rem}.s2047-expedition-row{display:grid;gap:.25rem;padding:.75rem;border:1px solid rgba(255,255,255,.15);border-radius:12px;background:rgba(255,255,255,.05)}.s2047-expedition-row small{color:#b9d8e8}.s2047-expedition-row p{font-size:.9rem;opacity:.9}

.s2047-relic-list{display:grid;gap:10px}.s2047-relic-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px;border:1px solid rgba(255,255,255,.14);border-radius:12px;background:rgba(255,255,255,.045)}.s2047-relic-row p{margin:.35rem 0 0;color:rgba(255,255,255,.78)}.s2047-relic-row button{min-width:96px}@media(max-width:560px){.s2047-relic-row{grid-template-columns:1fr}.s2047-relic-row button{width:100%}}


/* 2.16 Beta explorer passport */
.s2047-passport{top:50%;left:50%;transform:translate(-50%,-50%);max-height:min(86vh,780px);overflow:auto}
.s2047-passport-list{display:grid;gap:10px;margin-top:14px}.s2047-passport-row{display:grid;gap:9px;padding:12px;border:1px solid rgba(255,255,255,.14);border-radius:12px;background:rgba(255,255,255,.045)}.s2047-passport-row.is-complete{border-color:rgba(255,225,119,.6);background:rgba(255,216,77,.09)}.s2047-passport-marks{display:flex;gap:7px;flex-wrap:wrap}.s2047-passport-marks span{padding:5px 8px;border-radius:999px;background:rgba(255,255,255,.07);font-size:.84rem;opacity:.7}.s2047-passport-marks span.is-earned{background:rgba(255,216,77,.17);color:#ffe177;opacity:1}


/* 2.17 Beta crew expedition desk */
.s2047-crew-expeditions{top:50%;left:50%;transform:translate(-50%,-50%);max-height:min(86vh,800px);overflow:auto}
.s2047-crew-expedition-list{display:grid;gap:10px;margin-top:14px}.s2047-crew-expedition-list>h3{margin:12px 0 0;color:#ffe177}
.s2047-crew-expedition-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px;border:1px solid rgba(255,255,255,.14);border-radius:12px;background:rgba(255,255,255,.045)}
.s2047-crew-expedition-row strong{display:block}.s2047-crew-expedition-row p{margin:.35rem 0 0;font-size:.88rem;opacity:.84}.s2047-crew-expedition-row button,.s2047-crew-expedition-row select{min-height:40px;border:1px solid rgba(255,225,119,.45);border-radius:10px;padding:0 10px}.s2047-crew-expedition-row button{background:#ffe177;color:#251c00;font-weight:850}.s2047-crew-expedition-row button:disabled{opacity:.48}.s2047-crew-expedition-row select{background:#13283c;color:#fff}.s2047-crew-expedition-controls{display:flex;gap:8px;align-items:center}
@media(max-width:640px){.s2047-crew-expedition-row{grid-template-columns:1fr}.s2047-crew-expedition-controls{display:grid;grid-template-columns:1fr}.s2047-crew-expedition-row button,.s2047-crew-expedition-row select{width:100%}}


/* 2.18 Beta ship engineering bay */
.s2047-ship-upgrades{top:50%;left:50%;transform:translate(-50%,-50%);max-height:min(86vh,780px);overflow:auto}
.s2047-ship-upgrade-list{display:grid;gap:10px;margin-top:14px}.s2047-ship-upgrade-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px;border:1px solid rgba(255,255,255,.14);border-radius:12px;background:rgba(255,255,255,.045)}.s2047-ship-upgrade-row.is-installed{border-color:rgba(255,225,119,.6);background:rgba(255,216,77,.09)}.s2047-ship-upgrade-row strong{display:block}.s2047-ship-upgrade-row p{margin:.35rem 0 0;font-size:.88rem;opacity:.84}.s2047-ship-upgrade-row button{min-width:130px;min-height:42px;border:1px solid rgba(255,225,119,.55);border-radius:10px;background:#ffe177;color:#251c00;font-weight:850}.s2047-ship-upgrade-row button:disabled{opacity:.48}
@media(max-width:620px){.s2047-ship-upgrade-row{grid-template-columns:1fr}.s2047-ship-upgrade-row button{width:100%}}


/* 2.19 Beta captain's trophy gallery */
.s2047-trophy-gallery{top:50%;left:50%;transform:translate(-50%,-50%);max-height:min(86vh,800px);overflow:auto}
.s2047-trophy-list{display:grid;gap:10px;margin-top:14px}.s2047-trophy-list>h3{margin:12px 0 0;color:#ffe177}
.s2047-trophy-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px;border:1px solid rgba(255,255,255,.14);border-radius:12px;background:rgba(255,255,255,.045)}
.s2047-trophy-row.is-earned{border-color:rgba(255,225,119,.65);background:rgba(255,216,77,.1)}.s2047-trophy-row strong{display:block}.s2047-trophy-row p{margin:.35rem 0 0;font-size:.88rem;opacity:.84}
.s2047-trophy-row button{min-width:120px;min-height:42px;border:1px solid rgba(255,225,119,.55);border-radius:10px;background:#ffe177;color:#251c00;font-weight:850}.s2047-trophy-row button:disabled{opacity:.48}
.s2047-trophy-honour{padding:10px 12px;border:1px solid rgba(255,225,119,.28);border-radius:10px;background:rgba(255,216,77,.06)}
@media(max-width:620px){.s2047-trophy-row{grid-template-columns:1fr}.s2047-trophy-row button{width:100%}}


.s2047-completion-list { display:grid; gap:.75rem; }
.s2047-completion-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:.75rem; align-items:center; padding:.8rem; border:1px solid rgba(255,255,255,.16); border-radius:.8rem; background:rgba(255,255,255,.045); }
.s2047-completion-row p { margin:.25rem 0 0; opacity:.82; }
.s2047-completion-row.is-earned { border-color:rgba(255,216,77,.65); background:rgba(255,216,77,.08); }
.s2047-completion-row.is-grand { border-width:2px; }
@media (max-width:560px){.s2047-completion-row{grid-template-columns:1fr}.s2047-completion-row button{width:100%}}

/* v2.20.1 mobile loading repair */
.s2047-panel[hidden], [hidden] { display:none !important; }
@media (max-width: 700px) {
  .s2047-menu-grid { grid-template-columns: repeat(2,minmax(0,1fr)) !important; gap:8px !important; }
  .s2047-menu-grid .s2047-btn { min-height:44px !important; padding:8px 10px !important; font-size:15px !important; }
  .s2047-panel { left:12px !important; right:12px !important; top:76px !important; width:auto !important; max-height:58vh !important; overflow:auto !important; }
  .s2047-hud { max-width:48vw !important; font-size:12px !important; }
  .s2047-minimap-wrap { width:112px !important; height:112px !important; }
}

/* v2.20.2 guaranteed loader and compact mobile HUD */
@media (max-width: 700px) {
  .s2047-hud { left:8px !important; right:8px !important; top:max(6px,env(safe-area-inset-top)) !important; max-width:none !important; gap:6px !important; }
  .s2047-title-card { max-width:52vw; padding:7px 9px; }
  .s2047-actions { max-width:44vw; gap:5px; }
  .s2047-actions button { display:none !important; min-width:42px; min-height:40px; padding:0 8px; font-size:13px; }
  .s2047-actions button[data-action="quest"],
  .s2047-actions button[data-action="save"],
  .s2047-actions button[data-action="map-toggle"],
  .s2047-actions button[data-action="scan"] { display:block !important; }
  .s2047-minimap-wrap { top:112px !important; }
  .s2047-status { bottom:calc(env(safe-area-inset-bottom) + 150px) !important; max-width:calc(100vw - 32px) !important; }
}

/* v2.23.6 save-slot manager */
.s2047-save-summary{grid-column:1/-1;padding:10px 12px;border:1px solid rgba(255,216,77,.35);border-radius:12px;background:rgba(255,216,77,.08);font-size:13px;line-height:1.45;color:#fff7c7}
.s2047-menu-grid button[data-action="save-slot"],.s2047-menu-grid button[data-action="load-slot"]{text-align:left;padding:10px 12px;line-height:1.25}
.s2047-menu-grid .s2047-delete-slot{border-color:rgba(255,119,119,.45);background:rgba(120,20,28,.25)}
.s2047-menu-grid button:disabled{opacity:.45;cursor:not-allowed;transform:none!important}

/* v2.23.7 save health diagnostics */
.s2047-menu-grid button[data-action="check-save-health"]{border-color:rgba(112,224,255,.55);background:rgba(17,74,92,.35)}

/* v2.23.8 automatic save repair */

/* v2.24.6 save search, filter and sorting */
.s2047-save-search{grid-column:1/-1;display:grid;grid-template-columns:auto minmax(150px,1fr) auto minmax(140px,.7fr) auto minmax(130px,.65fr);gap:8px;align-items:center;padding:10px 12px;border:1px solid rgba(121,214,255,.35);border-radius:12px;background:rgba(37,113,154,.14)}
.s2047-save-search label{font-size:12px;font-weight:700;color:#dff7ff}
.s2047-save-search input,.s2047-save-search select{min-width:0;border:1px solid rgba(255,255,255,.25);border-radius:8px;background:#102c3d;color:#fff;padding:9px 10px;font:inherit}
.s2047-save-search input::placeholder{color:#b7ccd6}
#s2047-save-filter-status{grid-column:1/-1;font-size:12px;color:#dff7ff}
.s2047-menu-grid button[hidden]{display:none!important}
@media(max-width:640px){.s2047-save-search{grid-template-columns:1fr}.s2047-save-search label{margin-top:2px}}


/* v2.25.8 Nouala district event calendar */
.s2047-event-calendar-list{display:grid;gap:12px;margin-top:14px;max-height:min(58vh,560px);overflow:auto;padding-right:4px}
.s2047-event-card{border:1px solid rgba(255,255,255,.18);border-radius:12px;padding:12px;background:rgba(255,255,255,.055)}
.s2047-event-card h3{margin:0 0 6px;color:#ffe27a}
.s2047-event-card p{margin:5px 0}
.s2047-event-card.is-live{border-color:#ffd84d;box-shadow:0 0 0 2px rgba(255,216,77,.18) inset}
.s2047-event-card.is-complete{background:rgba(89,186,126,.11)}
.s2047-event-status{font-weight:800;letter-spacing:.03em}
.s2047-event-card.is-live .s2047-event-status{color:#ffd84d}
.s2047-event-card.is-complete .s2047-event-status{color:#8ee3aa}
.s2047-event-card button{margin-top:8px}

/* v2.26.0 Nouala Festival Passport */
.s2047-festival-passport{margin:0 0 18px;padding:16px;border:1px solid rgba(255,216,77,.45);border-radius:14px;background:linear-gradient(145deg,rgba(22,39,58,.96),rgba(8,21,35,.96));box-shadow:inset 0 0 24px rgba(255,216,77,.06)}
.s2047-festival-passport h3{margin:0 0 6px;color:#ffe177}.s2047-festival-passport>p{margin:0 0 12px;line-height:1.45}
.s2047-festival-stamp{display:flex;align-items:center;gap:11px;margin:8px 0;padding:9px 10px;border-radius:10px;background:rgba(255,255,255,.045);opacity:.72}
.s2047-festival-stamp.is-current{outline:1px solid rgba(255,225,119,.55);opacity:1}.s2047-festival-stamp.is-earned{opacity:1;background:rgba(74,180,117,.11)}
.s2047-festival-mark{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;border:2px solid;border-radius:50%;font-size:20px;font-weight:900}
.s2047-festival-stamp strong,.s2047-festival-stamp small{display:block}.s2047-festival-stamp small{margin-top:2px;color:#bdd0df}
.s2047-festival-complete{margin:12px 0 0!important;padding:10px;border-radius:9px;background:rgba(74,180,117,.16);color:#b9ffd1;font-weight:800}

.s2047-festival-countdown{padding:9px 10px;border-left:4px solid #ffe177;background:rgba(255,225,119,.08);color:#fff3b0;font-weight:700}
.s2047-festival-waypoint{width:100%;margin-top:10px;padding:10px 12px;border:1px solid rgba(255,225,119,.6);border-radius:9px;background:#263e55;color:#fff;font-weight:800;cursor:pointer}.s2047-festival-waypoint:hover,.s2047-festival-waypoint:focus-visible{background:#34516d;outline:2px solid #ffe177;outline-offset:2px}


/* v2.26.2 Festival Keepsake Display */
.s2047-festival-stamp{position:relative;flex-wrap:wrap}
.s2047-festival-stamp.is-worn{box-shadow:inset 0 0 0 2px rgba(255,225,119,.72),0 0 16px rgba(255,225,119,.14)}
.s2047-festival-stamp>span:nth-child(2){flex:1;min-width:160px}
.s2047-festival-wear{margin-left:auto;padding:7px 10px;border:1px solid rgba(255,225,119,.55);border-radius:8px;background:#1e3549;color:#fff;font-weight:800;cursor:pointer}
.s2047-festival-wear:hover,.s2047-festival-wear:focus-visible{background:#31516b;outline:2px solid #ffe177;outline-offset:2px}


/* v2.26.3 Festival Hall of Fame */
.s2047-festival-hall{margin-top:14px;padding:12px;border:1px solid rgba(255,255,255,.18);border-radius:12px;background:rgba(4,16,28,.55)}
.s2047-festival-hall h3{margin:0 0 5px}.s2047-festival-hall-progress{margin:0 0 10px;opacity:.82}
.s2047-festival-hall-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.s2047-festival-hall-card{padding:9px;border:2px dashed rgba(255,255,255,.22);border-radius:9px;opacity:.58;background:rgba(255,255,255,.035)}
.s2047-festival-hall-card.is-earned{border-style:solid;opacity:1;background:rgba(255,215,95,.09)}
.s2047-festival-hall-card strong,.s2047-festival-hall-card small{display:block}.s2047-festival-hall-card small{margin-top:3px;opacity:.8}
.s2047-festival-ambassador{text-align:center;font-weight:800;letter-spacing:.05em;color:#ffe28a;margin:12px 0 0}
@media(max-width:640px){.s2047-festival-hall-grid{grid-template-columns:1fr}}


/* v2.26.4 Festival Memory Book */
.s2047-festival-memory-note{width:100%;min-height:58px;margin-top:8px;resize:vertical;box-sizing:border-box;border:1px solid rgba(255,255,255,.24);border-radius:8px;background:rgba(5,20,33,.82);color:#fff;padding:8px;font:inherit;line-height:1.35}
.s2047-festival-memory-note::placeholder{color:#9db1bf}.s2047-festival-memory-note:focus{outline:2px solid #ffe177;outline-offset:1px}
.s2047-festival-note-save{width:100%;margin-top:6px;padding:7px 9px;border:1px solid rgba(255,225,119,.52);border-radius:8px;background:#263e55;color:#fff;font-weight:800;cursor:pointer}
.s2047-festival-note-save:hover,.s2047-festival-note-save:focus-visible{background:#365873;outline:2px solid #ffe177;outline-offset:2px}


/* v2.26.5 Festival Memory Curator */
.s2047-festival-curator{margin-top:14px;padding:12px;border:1px solid rgba(255,215,96,.55);border-radius:10px;background:rgba(44,32,8,.72)}
.s2047-festival-curator p{margin:0 0 9px;line-height:1.45}
.s2047-festival-curator strong{display:block;color:#ffe58a}
.s2047-festival-curator-claim{font-weight:700}


/* v2.26.6 Festival Memory Book export */
.s2047-festival-memory-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.18)}
.s2047-festival-memory-actions button{flex:1 1 170px;min-height:40px;border:1px solid rgba(255,215,120,.65);border-radius:10px;background:linear-gradient(180deg,#314b65,#1b2d40);color:#fff;font-weight:700;cursor:pointer}
.s2047-festival-memory-actions button:hover,.s2047-festival-memory-actions button:focus-visible{background:linear-gradient(180deg,#416783,#24425b);outline:2px solid #ffd86a;outline-offset:2px}

/* v2.26.7 Festival Memory Data Transfer */
.s2047-festival-memory-actions{display:flex;flex-wrap:wrap;gap:8px}.s2047-festival-memory-actions button{flex:1 1 150px}


/* v2.26.8 Festival Import Preview & Undo */
.s2047-festival-memory-actions button:last-child{border-color:rgba(255,180,120,.7);background:linear-gradient(180deg,#60402e,#3b261c)}
.s2047-festival-memory-actions button:last-child:hover,.s2047-festival-memory-actions button:last-child:focus-visible{background:linear-gradient(180deg,#80583f,#4e3224)}

.s2047-festival-memory-archive{margin-top:14px;padding:12px;border:1px solid rgba(255,255,255,.18);border-radius:12px;background:rgba(7,13,30,.72)}
.s2047-festival-memory-archive h4{margin:0 0 4px}.s2047-festival-memory-archive>p{margin:0 0 10px;opacity:.8}
.s2047-festival-archive-row{display:grid;grid-template-columns:minmax(0,1fr) repeat(6,auto);gap:8px;align-items:center;padding:8px 0;border-top:1px solid rgba(255,255,255,.12)}
.s2047-festival-archive-row span{display:flex;flex-direction:column;min-width:0}.s2047-festival-archive-row small{opacity:.72}
@media(max-width:760px){.s2047-festival-archive-row{grid-template-columns:1fr 1fr}.s2047-festival-archive-row span{grid-column:1/-1}.s2047-festival-archive-row button{width:100%}}

.s2047-festival-archive-row.is-pinned{background:rgba(255,215,64,.08);border-radius:8px;padding-left:8px;padding-right:8px}
.s2047-festival-archive-row button[aria-pressed="true"]{font-weight:700;box-shadow:0 0 0 2px rgba(255,215,64,.45) inset}
.s2047-festival-archive-row button:disabled{opacity:.45;cursor:not-allowed}

/* v2.27.5 archive collections */
.s2047-festival-archive-collection{margin-top:10px;border:1px solid rgba(255,255,255,.14);border-radius:10px;background:rgba(255,255,255,.025);overflow:hidden}
.s2047-festival-archive-collection>summary{cursor:pointer;padding:10px 12px;display:flex;justify-content:space-between;gap:12px;align-items:center;background:rgba(255,255,255,.05)}
.s2047-festival-archive-collection>summary small{opacity:.72;text-align:right}
.s2047-festival-archive-collection .s2047-festival-archive-row{padding-left:10px;padding-right:10px;grid-template-columns:minmax(0,1fr) repeat(7,auto)}
@media(max-width:760px){.s2047-festival-archive-collection>summary{align-items:flex-start;flex-direction:column}.s2047-festival-archive-collection>summary small{text-align:left}.s2047-festival-archive-collection .s2047-festival-archive-row{grid-template-columns:1fr 1fr}}

.s2047-festival-collection-actions{display:flex;justify-content:flex-end;gap:8px;padding:8px 10px;border-top:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.12)}
.s2047-festival-collection-actions button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:760px){.s2047-festival-collection-actions{justify-content:stretch;flex-direction:column}.s2047-festival-collection-actions button{width:100%}}


/* v2.27.7 archive collection search and statistics */
.s2047-archive-tools{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,auto) auto;gap:8px;align-items:center;margin:10px 0;padding:10px;border:1px solid rgba(255,255,255,.12);border-radius:10px;background:rgba(0,0,0,.16)}
.s2047-archive-tools input,.s2047-archive-tools select{min-width:0;padding:9px 10px;border-radius:8px;border:1px solid rgba(255,255,255,.18);background:#0b1d2d;color:#fff}
.s2047-archive-result-count{font-size:.86rem;opacity:.78;white-space:nowrap}
.s2047-festival-archive-row[hidden],.s2047-festival-archive-collection[hidden]{display:none!important}
@media(max-width:760px){.s2047-archive-tools{grid-template-columns:1fr}.s2047-archive-result-count{white-space:normal}}


/* v2.27.8 archive tags */
.s2047-archive-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.s2047-archive-tags em{font-style:normal;font-size:11px;line-height:1.2;padding:3px 7px;border:1px solid rgba(255,255,255,.24);border-radius:999px;background:rgba(255,255,255,.08);color:#fff4b5}

/* v2.27.9 archive tag filtering */
.s2047-archive-tag-filter{min-width:145px}
.s2047-archive-tags em[role=button]{cursor:pointer;transition:transform .12s ease,filter .12s ease}
.s2047-archive-tags em[role=button]:hover,.s2047-archive-tags em[role=button]:focus{transform:translateY(-1px);filter:brightness(1.18);outline:2px solid currentColor;outline-offset:2px}
@media(max-width:720px){.s2047-archive-tag-filter{width:100%;min-width:0}}


/* v2.28.0 bulk archive tagging */
.s2047-archive-bulk-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 14px;padding:10px;border:1px solid rgba(255,255,255,.16);border-radius:10px;background:rgba(0,0,0,.18)}
.s2047-archive-selection-count{margin-left:auto;font-size:12px;font-weight:700;opacity:.85}
.s2047-archive-select{width:18px;height:18px;flex:0 0 auto;accent-color:#ffd95a;cursor:pointer}
.s2047-archive-bulk-action:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:720px){.s2047-archive-selection-count{width:100%;margin-left:0}.s2047-archive-bulk-tools button{flex:1 1 calc(50% - 8px)}}


/* v2.28.1 bulk archive organisation */
.s2047-archive-bulk-tools .s2047-archive-bulk-action{min-width:108px}
@media(max-width:720px){.s2047-archive-bulk-tools .s2047-archive-bulk-action{min-width:0}}


/* v2.28.2 bulk archive transfer and cleanup */
.s2047-archive-bulk-delete:not(:disabled) { border-color: rgba(255, 120, 120, .8); }
.s2047-archive-bulk-delete:not(:disabled):hover { background: rgba(150, 24, 36, .35); }

/* v3.15.3 responsive dialogue and speech text */
.s2047-dialogue{width:min(560px,calc(100vw - 28px));max-height:min(62vh,520px);overflow:auto;overflow-wrap:anywhere;word-break:normal}
.s2047-dialogue h2{padding-right:40px;overflow-wrap:anywhere}
.s2047-dialogue p{font-size:clamp(1rem,2.8vw,1.15rem);line-height:1.55;white-space:normal;overflow-wrap:anywhere}
.s2047-dialogue button{width:100%}
@media(max-width:720px){.s2047-dialogue{left:14px;right:14px;width:auto;bottom:calc(176px + env(safe-area-inset-bottom));transform:none;padding:18px;max-height:44vh}.s2047-dialogue h2{font-size:1.1rem;margin-bottom:8px}.s2047-dialogue p{font-size:1rem;line-height:1.45}.s2047-dialogue button{margin-top:14px}}
@media(max-width:390px){.s2047-dialogue{bottom:calc(166px + env(safe-area-inset-bottom));padding:15px;max-height:42vh}.s2047-dialogue p{font-size:.96rem}}


/* 3.16.1 searchable conversation history */
.s2047-speech-tools{display:grid;grid-template-columns:minmax(180px,2fr) repeat(2,minmax(130px,1fr));gap:.65rem;align-items:end;margin:.75rem 0}
.s2047-speech-tools label{display:grid;gap:.28rem;font-weight:700}
.s2047-speech-tools input[type="search"],.s2047-speech-tools select{width:100%;min-width:0;padding:.6rem .7rem;border:1px solid rgba(255,255,255,.28);border-radius:.65rem;background:#102536;color:#fff}
.s2047-speech-favourites{display:flex!important;align-items:center;gap:.5rem;grid-column:1/-1;font-weight:600!important}
.s2047-speech-actions{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.8rem}
.s2047-speech-entry-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}
.s2047-speech-entry.is-bookmarked{outline:2px solid #f2cf4e;outline-offset:-2px}
.s2047-speech-bookmark{white-space:nowrap;padding:.45rem .6rem;font-size:.85rem}
#s2047-speech-history-summary{font-weight:700;margin:.4rem 0}
@media(max-width:680px){.s2047-speech-tools{grid-template-columns:1fr}.s2047-speech-favourites{grid-column:auto}.s2047-speech-entry-head{align-items:stretch;flex-direction:column}.s2047-speech-bookmark{align-self:flex-start}}


/* 3.16.2 conversation notes and portable archive */
.s2047-speech-notes{margin-top:.65rem;border-top:1px solid rgba(255,255,255,.14);padding-top:.55rem}
.s2047-speech-notes summary{cursor:pointer;font-weight:700}
.s2047-speech-notes label{display:block;margin-top:.55rem;font-weight:700}
.s2047-speech-notes textarea,.s2047-speech-notes input{box-sizing:border-box;width:100%;margin-top:.25rem;border:1px solid rgba(255,255,255,.24);border-radius:.55rem;background:#111d2a;color:#fff;padding:.62rem;font:inherit}
.s2047-speech-notes button{margin-top:.55rem}
.s2047-speech-actions{display:flex;flex-wrap:wrap;gap:.55rem}
@media(max-width:560px){.s2047-speech-actions button{flex:1 1 100%}}


/* 3.16.3 speech accessibility controls */
.s2047-speech-accessibility{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;margin:.75rem 0;padding:.75rem;border:1px solid rgba(255,255,255,.25);border-radius:12px}
.s2047-speech-accessibility legend{font-weight:700;padding:0 .35rem}
.s2047-speech-accessibility label{display:grid;gap:.25rem}
.s2047-speech-accessibility select{width:100%;padding:.55rem;border-radius:8px}
.s2047-speech-accessibility button{align-self:end}
@media (max-width:600px){.s2047-speech-accessibility{grid-template-columns:1fr}}


/* 3.16.4 speech replay and hold controls */
.s2047-speech-entry-actions,.s2047-speech-playback-actions{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center}
.s2047-speech-replay{white-space:nowrap;padding:.45rem .65rem;font-size:.85rem}
.s2047-speech-playback-actions{grid-column:1/-1}
@media(max-width:560px){.s2047-speech-entry-actions{width:100%}.s2047-speech-entry-actions button,.s2047-speech-playback-actions button{flex:1 1 auto}}


/* 3.16.7 conversation clue board */
.s2047-speech-clue[aria-pressed="true"]{border-color:#8fe9ff;background:rgba(42,139,168,.28)}
.s2047-clue-controls{display:flex;flex-wrap:wrap;gap:.55rem;margin:.7rem 0}
.s2047-clue-board{margin:.8rem 0;padding:.8rem;border:1px solid rgba(143,233,255,.4);border-radius:12px;background:rgba(8,28,43,.72)}
.s2047-clue-board h3{margin-top:0}
#s2047-clue-board-list{display:grid;gap:.8rem}
.s2047-clue-group{display:grid;gap:.5rem}
.s2047-clue-group>h3{margin:0;font-size:1rem;color:#bcefff}
.s2047-clue-card{display:grid;gap:.35rem;padding:.65rem;border-left:4px solid #8fe9ff;border-radius:8px;background:rgba(255,255,255,.07)}
.s2047-clue-card p{margin:0;overflow-wrap:anywhere}
.s2047-clue-card small{opacity:.8}
.s2047-clue-card button{justify-self:start}
@media(max-width:560px){.s2047-clue-controls button{flex:1 1 100%}.s2047-clue-card button{width:100%}}

/* v3.16.8: Clue case folders and responsive filing controls. */
.s2047-case-controls{display:grid;grid-template-columns:minmax(0,2fr) auto minmax(0,1fr);gap:.55rem;align-items:end;margin:.65rem 0 1rem}
.s2047-case-controls label{display:grid;gap:.25rem}
.s2047-case-controls input,.s2047-case-controls select,.s2047-clue-card-controls select{min-width:0;width:100%;padding:.55rem;border-radius:8px;border:1px solid rgba(143,233,255,.45);background:#0c2232;color:#fff}
.s2047-clue-card-controls{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.s2047-clue-card-controls select{flex:1 1 170px}
@media(max-width:650px){.s2047-case-controls{grid-template-columns:1fr}.s2047-case-controls button{width:100%}.s2047-clue-card-controls>*{width:100%;flex-basis:100%}}

/* v3.16.9 case progress tracker */
.s2047-case-help{margin:.15rem 0 .7rem;color:#cfeaf5}
.s2047-case-heading{display:flex;gap:.6rem;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
.s2047-case-heading h3{margin:.2rem 0}
.s2047-case-progress-controls{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.s2047-case-progress-controls select,.s2047-case-progress-controls button{padding:.48rem .58rem;border-radius:8px;border:1px solid rgba(143,233,255,.45);background:#0c2232;color:#fff}
.s2047-clue-group[data-status="solved"]{border-color:rgba(132,255,178,.58);background:rgba(15,63,48,.38)}
.s2047-clue-group[data-priority="high"]>.s2047-case-heading h3::before{content:"! ";color:#ffd75e}
.s2047-clue-group[data-status="solved"]>.s2047-case-heading h3::before{content:"✓ ";color:#91ffbd}
@media(max-width:650px){.s2047-case-heading{display:block}.s2047-case-progress-controls{display:grid;grid-template-columns:1fr 1fr}.s2047-case-progress-controls select,.s2047-case-progress-controls button{width:100%}}

/* v3.17.2 evidence timeline controls are styled in style.css. */


/* v3.17.3 case suspects and action plan */
.s2047-case-actions{display:grid;gap:.55rem;padding:.7rem;border:1px solid rgba(143,233,255,.28);border-radius:10px;background:rgba(4,20,31,.38)}
.s2047-case-action-list{display:grid;gap:.4rem}
.s2047-case-action-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.55rem;align-items:center;padding:.45rem .5rem;border-radius:8px;background:rgba(255,255,255,.05)}
.s2047-case-action-row.is-done span{text-decoration:line-through;opacity:.72}
.s2047-case-action-row button,.s2047-case-action-add button{padding:.45rem .6rem;border-radius:8px;border:1px solid rgba(143,233,255,.45);background:#0c2232;color:#fff}
.s2047-case-action-add{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5rem}
.s2047-case-action-add input{min-width:0;width:100%;padding:.55rem;border-radius:8px;border:1px solid rgba(143,233,255,.45);background:#0c2232;color:#fff}
@media(max-width:650px){.s2047-case-action-add{grid-template-columns:1fr}.s2047-case-action-add button{width:100%}.s2047-case-action-row{grid-template-columns:auto minmax(0,1fr)}.s2047-case-action-row button{grid-column:2;justify-self:start}}


/* v3.17.4 case deadlines and automatic progress */
.s2047-case-logistics{display:grid;grid-template-columns:minmax(0,1fr) minmax(150px,.55fr);gap:10px;align-items:end}
.s2047-case-logistics label{min-width:0}
.s2047-date-wrap{display:flex;width:100%;min-width:0;border:1px solid rgba(255,255,255,.28);border-radius:8px;padding:7px 9px;background:rgba(0,0,0,.22)}
.s2047-date-wrap input{display:block;width:100%;min-width:0;border:0;background:transparent;color:inherit;padding:0}
.s2047-deadline-note{grid-column:1/-1;margin:0;font-weight:700}
.s2047-clue-group[data-deadline="overdue"]{outline:2px solid rgba(255,95,95,.9)}
.s2047-clue-group[data-deadline="due-today"],.s2047-clue-group[data-deadline="due-soon"]{outline:2px solid rgba(255,205,74,.85)}
.s2047-auto-progress{display:inline-flex!important;align-items:center;gap:6px;white-space:nowrap;padding:6px 8px!important}
.s2047-auto-progress input{width:auto!important;margin:0}
@media(max-width:620px){.s2047-case-logistics{grid-template-columns:1fr}.s2047-deadline-note{grid-column:auto}.s2047-auto-progress{width:100%;justify-content:flex-start}}

/* 3.17.5 Case Command Centre */
.s2047-case-command-controls{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:.55rem;align-items:end;padding:.75rem;margin:.4rem 0 .75rem;border:1px solid rgba(143,233,255,.3);border-radius:12px;background:rgba(4,20,31,.5)}
.s2047-case-command-controls label{display:grid;gap:.25rem;min-width:0}
.s2047-case-command-controls select,.s2047-case-command-controls button{min-width:0;width:100%;padding:.55rem;border-radius:8px;border:1px solid rgba(143,233,255,.45);background:#0c2232;color:#fff}
.s2047-case-command-controls .s2047-case-hide-solved{display:flex;align-items:center;gap:.45rem;padding:.55rem 0}
.s2047-case-command-controls .s2047-case-hide-solved input{width:auto}
.s2047-case-dashboard{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem;margin:.45rem 0 .85rem}
.s2047-case-dashboard-card{display:grid;gap:.1rem;padding:.65rem;border:1px solid rgba(143,233,255,.28);border-radius:10px;background:rgba(255,255,255,.05)}
.s2047-case-dashboard-card strong{font-size:1.25rem;color:#fff}.s2047-case-dashboard-card span{color:#cfeaf5}
.s2047-case-focus{grid-column:1/-1;text-align:left;padding:.65rem .75rem;border-radius:10px;border:1px solid rgba(255,215,94,.55);background:rgba(255,215,94,.12);color:#fff}
@media(max-width:760px){.s2047-case-command-controls{grid-template-columns:1fr 1fr}.s2047-case-dashboard{grid-template-columns:1fr 1fr}}
@media(max-width:460px){.s2047-case-command-controls{grid-template-columns:1fr}.s2047-case-dashboard{grid-template-columns:1fr 1fr}}


/* v3.17.6 case activity timeline */
.s2047-case-activity{margin-top:.75rem;border-top:1px solid rgba(143,233,255,.24);padding-top:.65rem}
.s2047-case-activity summary{cursor:pointer;font-weight:700;color:#d9f8ff}
.s2047-case-activity ol{display:grid;gap:.45rem;margin:.6rem 0 0;padding-left:1.25rem}
.s2047-case-activity li{display:grid;grid-template-columns:minmax(135px,auto) 1fr;gap:.65rem;align-items:start}
.s2047-case-activity time{font-size:.82rem;color:#9fc7d8;white-space:nowrap}
.s2047-case-activity span{overflow-wrap:anywhere}
@media(max-width:520px){.s2047-case-activity li{grid-template-columns:1fr;gap:.1rem}.s2047-case-activity time{white-space:normal}}


/* 3.17.7 investigation snapshots */
.s2047-case-snapshots{margin-top:.75rem;border-top:1px solid rgba(143,233,255,.24);padding-top:.65rem}
.s2047-case-snapshots summary{cursor:pointer;font-weight:700;color:#d9f8ff}
.s2047-snapshot-tools{margin:.6rem 0}
.s2047-snapshot-list{display:grid;gap:.45rem}
.s2047-snapshot-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:.45rem;align-items:center;padding:.5rem;border:1px solid rgba(143,233,255,.18);border-radius:.55rem;background:rgba(4,18,31,.42)}
.s2047-snapshot-row span{overflow-wrap:anywhere}
@media(max-width:520px){.s2047-snapshot-row{grid-template-columns:1fr 1fr}.s2047-snapshot-row span{grid-column:1/-1}.s2047-snapshot-row button{width:100%}}
