@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=DM+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&display=swap');

:root{color-scheme:light;--ink:#193a3e;--muted:#547276;--sea:#216a70;--sea-deep:#174a53;--foam:#e4f0e9;--paper:#f4f0e3;--sand:#d8c7a4;--sun:#e6a861;--coral:#c46653;--line:#c8d8d1;--panel:#fbfaf4;--mono:"DM Mono",monospace;--sans:"DM Sans",sans-serif;--serif:"Fraunces",serif}
*{box-sizing:border-box}html{min-height:100%;background:var(--paper)}body{margin:0;color:var(--ink);font-family:var(--sans);min-height:100dvh;background:radial-gradient(ellipse at 74% -10%,#d3e5db 0,transparent 36%),var(--paper)}button,input,select,textarea{font:inherit}button{cursor:pointer}.skip{position:absolute;top:-80px;left:16px;z-index:30;background:var(--ink);color:#fff;padding:12px}.skip:focus{top:12px}.boot{padding:24px}.app-shell{max-width:1380px;margin:auto;padding:22px clamp(16px,3vw,48px) 56px}.topbar{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:6px 0 18px;gap:16px}.brand{display:flex;align-items:center;gap:12px}.brand img{width:42px;height:42px}.brand-name{font-weight:700;letter-spacing:.02em}.brand-sub{font-size:.75rem;color:var(--muted);letter-spacing:.12em;text-transform:uppercase}.top-meta{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:.85rem}.status-dot{height:8px;width:8px;border-radius:50%;background:#55a178;display:inline-block}.layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,420px);gap:28px;align-items:start;padding-top:26px}.main-column{min-width:0}.scene-wrap{height:clamp(230px,32vw,405px);position:relative;border-radius:4px 42px 4px 4px;overflow:hidden;background:#b7d0c8;border:1px solid #a9c4bb;box-shadow:0 18px 42px #254c4b1c}.scene-wrap canvas{display:block;width:100%;height:100%;outline:none}.scene-caption{position:absolute;left:18px;bottom:15px;color:#17383a;background:#f4f0e3dd;padding:8px 11px;font:500 .7rem var(--mono);letter-spacing:.06em;text-transform:uppercase}.scene-fallback{height:100%;display:grid;place-items:center;padding:30px;text-align:center;color:#24494d;background:linear-gradient(160deg,#b9d2cc,#d4d8c3 48%,#859e91)}.scene-fallback strong{font:600 1.6rem var(--serif);display:block}.scene-fallback p{max-width:38ch}.intro-row{display:flex;justify-content:space-between;align-items:end;gap:18px;margin:24px 0 18px}.eyebrow{font:500 .72rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--sea)}h1,h2,h3,p{margin-top:0}h1{font:600 clamp(2.2rem,5vw,4.2rem)/.98 var(--serif);letter-spacing:-.04em;margin:8px 0 10px}h2{font:600 1.65rem/1.1 var(--serif);letter-spacing:-.02em;margin-bottom:12px}h3{font-size:1rem;margin-bottom:8px}.lede{max-width:57ch;line-height:1.58;color:var(--muted);margin:0}.pill{font:500 .72rem var(--mono);letter-spacing:.04em;border:1px solid var(--line);border-radius:99px;padding:8px 11px;white-space:nowrap;color:var(--sea-deep);background:#f8f6ed}.panel{background:var(--panel);border:1px solid var(--line);border-radius:4px 22px 4px 4px;padding:clamp(19px,3vw,30px);box-shadow:0 8px 24px #193a3e0a}.panel+.panel{margin-top:16px}.side-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}.side-heading h2{margin:0}.stock-card{background:var(--sea-deep);color:#f2f1e6;padding:22px;border-radius:3px 22px 3px 3px;margin-bottom:16px}.stock-title{display:flex;justify-content:space-between;align-items:center;gap:10px}.stock-title span:first-child{font:500 .72rem var(--mono);letter-spacing:.1em;text-transform:uppercase;color:#b9d5c8}.stock-number{font:600 2.2rem var(--serif);margin:10px 0 12px}.stock-number small{font:400 .9rem var(--mono);color:#b9d5c8}.stock-track{height:12px;background:#ffffff28;border-radius:99px;overflow:hidden}.stock-fill{height:100%;background:linear-gradient(90deg,#d5bc82,#e4a760);border-radius:99px;transition:width .45s ease}.stock-foot{display:flex;justify-content:space-between;font:400 .7rem var(--mono);color:#c5d8ce;margin-top:9px}.metric-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}.metric{padding:13px;border:1px solid var(--line);background:#f4f2e9}.metric b{display:block;font:600 1.3rem var(--serif)}.metric small{color:var(--muted);font:400 .68rem var(--mono);text-transform:uppercase;letter-spacing:.07em}.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:46px;border:1px solid transparent;border-radius:3px 14px 3px 3px;padding:0 18px;background:var(--sea);color:#fff;font-weight:700;transition:transform .18s ease,background .18s ease,opacity .18s ease}.btn:hover:not(:disabled){background:var(--sea-deep);transform:translateY(-1px)}.btn:focus-visible,.text-button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #e6a861;outline-offset:3px}.btn:disabled{opacity:.46;cursor:not-allowed}.btn.secondary{background:transparent;color:var(--sea-deep);border-color:var(--line)}.btn.secondary:hover:not(:disabled){background:var(--foam)}.btn.warn{background:var(--coral)}.actions{display:flex;gap:10px;flex-wrap:wrap}.actions .btn{flex:1}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field{display:grid;gap:7px}.field label,.field legend{font-weight:700;font-size:.85rem}.field small,.hint{font-size:.77rem;color:var(--muted);line-height:1.45}.field input,.field select,.field textarea{width:100%;min-height:46px;padding:10px 12px;border:1px solid #b8ccc3;border-radius:3px;background:#fffdf7;color:var(--ink)}.field input[type=range]{padding:0;accent-color:var(--sea);min-height:28px}.field textarea{min-height:96px;resize:vertical}.full{grid-column:1/-1}.choice-set{display:flex;flex-wrap:wrap;gap:8px}.choice{position:relative}.choice input{position:absolute;opacity:0;pointer-events:none}.choice span{display:block;padding:9px 12px;border:1px solid var(--line);background:#f4f2e9;border-radius:2px 10px 2px 2px;font-size:.81rem}.choice input:checked+span{border-color:var(--sea);background:var(--foam);box-shadow:inset 0 0 0 1px var(--sea);color:var(--sea-deep)}.choice input:focus-visible+span{outline:3px solid var(--sun);outline-offset:2px}.section-rule{border:0;border-top:1px solid var(--line);margin:20px 0}.notice{padding:13px 15px;border-left:3px solid var(--sun);background:#f6f0df;color:#496368;font-size:.87rem;line-height:1.5}.notice.error{border-color:var(--coral);background:#f6e8e2;color:#703e36}.notice.success{border-color:#5b9b79;background:#e8f1e9}.room-code{font:500 1.55rem var(--mono);letter-spacing:.18em;color:var(--sea-deep)}.players{display:grid;gap:8px;margin:14px 0}.player{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:#f4f2e9;border:1px solid #e0e4d9;font-size:.88rem}.player small{color:var(--muted)}.player-mark{display:inline-block;width:8px;height:8px;border-radius:50%;background:#69a77e;margin-right:8px}.player-mark.offline{background:#b4aaa0}.dayline{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:16px}.day-badge{font:500 .72rem var(--mono);padding:8px 11px;background:var(--foam);color:var(--sea-deep);border-radius:2px 10px 2px 2px}.decision-lock{text-align:center;padding:28px 18px;background:var(--foam);border:1px solid #c6dcd1;margin-top:16px}.lock-mark{font:500 1.4rem var(--mono);color:var(--sea)}.decision-lock h3{font:600 1.4rem var(--serif);margin:8px 0}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:.82rem}th{text-align:left;font:500 .68rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:10px;border-bottom:1px solid var(--line)}td{padding:11px 10px;border-bottom:1px solid #e3e7dd;white-space:nowrap}td:last-child,th:last-child{text-align:right}.profit{font:500 .76rem var(--mono);color:var(--sea)}.reflection-card{border-left:3px solid var(--sun);padding:12px 14px;background:#f6f0df;margin:13px 0}.reflection-card p{font:500 1.08rem/1.4 var(--serif);margin:0}.error-banner{margin:14px 0}.footer-note{margin-top:25px;color:var(--muted);font-size:.76rem;line-height:1.5}.text-button{border:0;background:transparent;color:var(--sea);font-weight:700;text-decoration:underline;text-underline-offset:3px;padding:8px 0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:10;padding:12px 16px;background:var(--ink);color:#fff;border-radius:3px 12px 3px 3px;box-shadow:0 8px 24px #193a3e33}.muted{color:var(--muted)}.host-tag{font:500 .68rem var(--mono);color:#805337;background:#f5ead7;padding:5px 8px}
.group-progress{display:grid;gap:12px;margin:14px 0}.group-progress-card{border:1px solid var(--line);background:#f4f2e9;padding:15px}.group-progress-head,.group-progress-meta{display:flex;align-items:center;justify-content:space-between;gap:10px}.group-progress-head strong{font:600 1.05rem var(--serif)}.group-progress-meta{font:400 .72rem var(--mono);color:var(--muted);margin:13px 0 8px}.group-stock{font:500 .96rem var(--mono);color:var(--sea-deep);margin-top:10px}.group-stock small{font-size:.7rem;color:var(--muted)}.group-progress-foot{font-size:.74rem;color:var(--muted);margin:9px 0 0}
@media(max-width:850px){.layout{grid-template-columns:1fr;gap:18px}.side-column{order:-1}.scene-wrap{height:clamp(210px,48vw,340px)}.intro-row{align-items:start;flex-direction:column}.pill{white-space:normal}}
@media(max-width:520px){.app-shell{padding:12px 14px 38px}.topbar{align-items:flex-start}.top-meta{font-size:.75rem}.brand-sub{font-size:.65rem}.brand img{width:36px;height:36px}.layout{padding-top:16px}.field-grid{grid-template-columns:1fr}.full{grid-column:auto}.actions{flex-direction:column}.actions .btn{width:100%}.stock-card{padding:18px}.scene-wrap{height:225px}.dayline{align-items:flex-start;flex-direction:column}.table-wrap{margin:0 -8px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
.rules-card{margin-top:16px;background:var(--panel);border:1px solid var(--line);border-radius:4px 22px 4px 4px;box-shadow:0 8px 24px #193a3e0a}.rules-card summary{cursor:pointer;padding:19px 22px;color:var(--sea-deep);font-weight:700;list-style:none}.rules-card summary::-webkit-details-marker{display:none}.rules-card summary::after{content:"+";float:right;font:500 1.15rem var(--mono)}.rules-card[open] summary{border-bottom:1px solid var(--line)}.rules-card[open] summary::after{content:"−"}.rules-card summary:focus-visible{outline:3px solid var(--sun);outline-offset:2px}.rules-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;padding:22px}.rules-grid .full{grid-column:1/-1}.rules-grid h3{font:600 1.15rem var(--serif);color:var(--ink)}.rules-grid ul{display:grid;gap:9px;margin:0;padding-left:19px}.rules-grid li{font-size:.8rem;line-height:1.5;color:var(--muted)}.rules-grid strong{color:var(--ink)}.table-wrap th small,.table-wrap td small{font:400 .68rem var(--mono);color:var(--muted)}.player{align-items:flex-start}.player>small{text-align:right}
@media(max-width:720px){.rules-grid{grid-template-columns:1fr}.rules-grid .full{grid-column:auto}}
.scene-caption{position:relative;left:auto;bottom:auto;display:table;margin:8px 0 20px 12px;z-index:2}.scene-fallback{display:block;padding:0;position:relative;text-align:left;overflow:hidden}.scene-fallback .lake-art{position:absolute;inset:0;width:100%;height:100%}.scene-fallback-copy{position:absolute;left:16px;bottom:16px;z-index:1;padding:10px 13px;background:#f4f0e3e8;color:var(--ink);text-align:left;border-radius:2px 10px 2px 2px}.scene-fallback-copy strong{font:600 1rem var(--serif)}.scene-fallback-copy p{font-size:.74rem;margin:3px 0 0;color:var(--muted)}
@media(max-width:850px){.side-column{order:0}}
.teacher-rooms-panel form{display:grid;gap:14px}.teacher-room-list{display:grid;gap:10px;margin:18px 0}.teacher-room-card{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px;background:#f4f2e9;border:1px solid var(--line)}.teacher-room-card .room-code{font-size:1.25rem;margin:7px 0}.teacher-room-card>div>small,.teacher-room-status{display:block;color:var(--muted);font-size:.72rem}.teacher-room-status{font:500 .66rem var(--mono);letter-spacing:.04em;text-transform:uppercase}.teacher-room-actions{display:grid;justify-items:end;gap:4px}.teacher-room-actions .btn{min-height:40px;padding:0 12px;font-size:.76rem}.teacher-room-back{padding:5px 8px;white-space:nowrap}.teacher-rooms-panel select{width:100%;min-height:46px;padding:10px 12px;border:1px solid #b8ccc3;border-radius:3px;background:#fffdf7;color:var(--ink)}
@media(max-width:520px){.teacher-room-card{align-items:flex-start;flex-direction:column;gap:8px}.teacher-room-actions{width:100%;justify-items:stretch;grid-template-columns:1fr 1fr;align-items:center}.teacher-room-actions .text-button{justify-self:start}}
.teacher-room-actions .room-delete-button{color:var(--coral);font-size:.76rem}
.fish-stock-track{height:20px;background:#ffffff30;border:1px solid #ffffff42;border-radius:99px;overflow:hidden}
.fish-stock-fill{height:100%;width:0;background:linear-gradient(90deg,#d8cf7c,#f2b65f);border-radius:99px;transition:width .55s ease,background .3s ease}
.fish-stock-track[data-level=warning] .fish-stock-fill{background:linear-gradient(90deg,#e7b95f,#e28b51)}
.fish-stock-track[data-level=critical] .fish-stock-fill{background:linear-gradient(90deg,#e78d63,#d95e50)}
.decision-stock{padding:15px 16px;margin:0 0 16px;background:#eef4ed;border:1px solid var(--line);border-left:4px solid var(--sea);border-radius:3px 12px 3px 3px}
.decision-stock[data-level=warning]{border-left-color:#d39344;background:#f7f0df}
.decision-stock[data-level=critical]{border-left-color:var(--coral);background:#f7e9e3}
.decision-stock-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:9px;font-size:.83rem}
.decision-stock-heading span{font:500 .72rem var(--mono);color:var(--muted);text-align:right}
.decision-stock .fish-stock-track{height:17px;background:#193a3e20;border-color:#193a3e20}
.decision-stock .fish-stock-fill{background:linear-gradient(90deg,#428b78,#75b084)}
.decision-stock .fish-stock-track[data-level=warning] .fish-stock-fill{background:linear-gradient(90deg,#d39344,#e8b85f)}
.decision-stock .fish-stock-track[data-level=critical] .fish-stock-fill{background:linear-gradient(90deg,#c46653,#dc8066)}
.decision-stock .hint{margin:8px 0 0}
.market-preview{padding:16px;background:#f1f5ef;border:1px solid var(--line);border-radius:3px 12px 3px 3px}
.market-preview-heading{font:600 1rem var(--serif);margin-bottom:10px}
.market-preview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.market-preview-grid p{margin:0;padding:10px;background:#fffdf7;border:1px solid #e0e7dc}
.market-preview-grid strong,.market-preview-grid small{display:block}
.market-preview-grid strong{font:600 .92rem var(--mono);color:var(--sea-deep)}
.market-preview-grid small{margin-top:5px;color:var(--muted);font-size:.68rem;line-height:1.35}
.market-preview>.hint{margin:10px 0 0}
.quality-cost-preview{margin-top:13px}
.quality-cost-preview>strong{display:block;margin-bottom:8px;font-size:.75rem}
.quality-cost-preview-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.quality-cost-chip{display:grid;gap:4px;padding:7px 8px;background:#fffdf7;border:1px solid #dfe5da;font-size:.64rem}
.quality-cost-chip span{color:var(--muted)}
.quality-cost-chip b{color:var(--sea-deep);font:500 .68rem var(--mono)}
.quality-cost-chip.selected{border-color:var(--sea);background:var(--foam);box-shadow:inset 0 0 0 1px var(--sea)}
.action-details{padding:13px 15px;background:#f6f0df;border-left:3px solid var(--sun);margin-top:10px}
.action-details strong{display:block;color:var(--ink);font-size:.85rem}
.action-details p{margin:6px 0 0;color:var(--muted);font-size:.78rem;line-height:1.5}
.action-rules-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.action-rule{padding:13px 15px;background:#f4f2e9;border:1px solid var(--line)}
.action-rule strong{display:block;font-size:.84rem;color:var(--ink)}
.action-rule p{margin:6px 0 0;color:var(--muted);font-size:.78rem;line-height:1.5}
.quality-cost-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px;list-style:none!important;padding:0!important;margin:0}
.quality-cost-list li{display:flex;justify-content:space-between;gap:8px;padding:7px 9px;background:#f4f2e9;border:1px solid #e0e4d9;font-size:.73rem;color:var(--muted)}
.quality-cost-list b{color:var(--sea-deep);font:500 .7rem var(--mono);white-space:nowrap}
@media(max-width:850px){.market-preview-grid{grid-template-columns:1fr}.action-rules-grid{grid-template-columns:1fr}}
@media(max-width:520px){.quality-cost-preview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.wellbeing-card{margin:0 0 16px;padding:18px 20px;background:#f2f3e8;border:1px solid var(--line);border-left:4px solid #5b9b79;border-radius:3px 16px 3px 3px}
.wellbeing-card[data-level=warning]{border-left-color:#d39344;background:#f7f0df}
.wellbeing-card[data-level=critical]{border-left-color:var(--coral);background:#f7e9e3}
.wellbeing-heading,.group-wellbeing>div:first-child{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:9px;font-size:.83rem}
.wellbeing-heading span,.group-wellbeing>div:first-child span{font-weight:700}
.wellbeing-heading strong,.group-wellbeing>div:first-child strong{font:500 .78rem var(--mono);color:var(--muted)}
.wellbeing-track{height:14px;background:#193a3e20;border:1px solid #193a3e20;border-radius:99px;overflow:hidden}
.wellbeing-fill{height:100%;width:0;background:linear-gradient(90deg,#428b78,#75b084);border-radius:99px;transition:width .55s ease,background .3s ease}
.wellbeing-track[data-level=warning] .wellbeing-fill{background:linear-gradient(90deg,#d39344,#e8b85f)}
.wellbeing-track[data-level=critical] .wellbeing-fill{background:linear-gradient(90deg,#c46653,#dc8066)}
.wellbeing-card p{margin:9px 0 0;color:var(--muted);font-size:.75rem;line-height:1.45}
.group-wellbeing{margin-top:12px}
.group-wellbeing .wellbeing-track{height:11px}
.guest-login-cta{display:grid;gap:10px;margin:14px 0;padding:14px;background:var(--foam);border:1px solid var(--line)}
.guest-login-cta p{margin:0}
.guest-login-cta .btn{justify-self:start}
