/* Portrait game layout · vivid pixel palette · original artwork, no copied assets */
:root{--paper:#fff3d2;--paper-deep:#f5d89c;--cream:#fffbeb;--ink:#46321e;--muted:#695231;--line:#bd9556;--edge:#79512d;--green:#327642;--green-light:#b6db85;--green-mid:#65ac50;--orange:#ffbd3d;--orange-dark:#9d521a;--pink:#f8a38b;--blue:#92d8ef;--shadow:#c1914f;--focus:#1768aa;--hud:#275f9b;--hud-dark:#163d70;--hud-light:#4c8cc1;--gold:#ffe391;--grass:#9dcd73}
html{height:100%;background:#294d49}body{height:100%;background:#294d49;background-image:linear-gradient(45deg,#315953 25%,transparent 25%),linear-gradient(-45deg,#315953 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#315953 75%),linear-gradient(-45deg,transparent 75%,#315953 75%);background-size:32px 32px;background-position:0 0,0 16px,16px -16px,-16px 0;overflow-y:hidden}
.shell{width:min(100%,480px);height:100dvh;max-height:1040px;padding:0;margin:0 auto;display:grid;grid-template-rows:48px 64px minmax(0,1fr) 62px;background:var(--cream);border-inline:2px solid var(--hud-dark);box-shadow:0 0 0 3px var(--hud-light);overflow:clip}
.masthead{padding:4px 8px;margin:0;background:var(--hud);border-bottom:3px solid var(--hud-dark);box-shadow:inset 0 2px 0 var(--hud-light);gap:8px}.brand{gap:6px;min-width:0}.brand>canvas{width:32px;height:32px}.brand-kicker{display:none}h1{font-size:17px;letter-spacing:-.5px;line-height:1.4;color:var(--gold);text-shadow:1px 2px var(--hud-dark);white-space:nowrap}h1 span{color:var(--cream)}.header-right{gap:5px}.prototype{display:none}.icon-button{width:30px;height:30px;min-height:30px;font-size:17px;border:2px solid var(--hud-dark);background:var(--gold);box-shadow:inset 0 2px 0 var(--cream),0 2px 0 var(--hud-dark);color:var(--ink)}
.resource-bar{margin:0;padding:6px 3px;display:grid;grid-template-columns:1.4fr repeat(4,minmax(0,1fr));gap:0;border:0;border-bottom:3px solid var(--hud-dark);background:var(--cream);box-shadow:inset 0 -3px 0 var(--paper-deep)}.resource{padding:0 4px;gap:3px;min-width:0;border-right:1px dotted var(--line);display:grid;grid-template-columns:14px minmax(0,1fr)}.resource:nth-child(3){border-right:1px dotted var(--line)}.resource:last-child{border:0}.resource-icon{width:14px;height:18px;font-size:17px;align-self:center}.coin{font-size:9px;width:16px;height:19px;border-width:2px;background:var(--orange);box-shadow:none}.students{font-size:20px}.smile{font-size:21px}.star{font-size:19px}.research{font-size:20px}.resource small{font-size:8px;line-height:1.3;margin-bottom:3px;white-space:nowrap}.resource strong{font-size:14px;letter-spacing:-1px;line-height:1.2}.resource strong span{display:none}
.game-layout{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) 27px auto;gap:0;min-height:0;overflow:clip}.pixel-panel{box-shadow:none}.scene-panel{grid-row:1;border:0;background:var(--grass);min-height:0}.scene-toolbar{height:33px;flex-shrink:0;padding:4px 8px;background:var(--paper);border-bottom:2px solid var(--edge);gap:4px}.day-label{gap:6px}.day-label strong{font-size:11px}.day-flag{font-size:9px;background:var(--hud);padding:1px 5px}.time-tools{gap:4px}.weather{display:flex;margin:0 5px 0 0;font-size:15px}.weather span{font-size:8px}.speed-button{height:24px;min-width:28px;padding:0 3px;border:1px solid var(--edge);font-size:10px;background:var(--cream);box-shadow:inset 0 1px var(--white)}
.scene-area{flex:1;height:auto;min-height:0;max-height:none;aspect-ratio:auto;background:var(--grass);overflow:clip}.scene-area #world{position:absolute;inset:0;display:block;width:100%;height:100%;aspect-ratio:auto;object-fit:contain;max-width:none}.scene-caption{top:7px;left:8px;padding:2px 6px;font-size:9px;background:var(--hud);color:var(--cream);border:1px solid var(--hud-dark);box-shadow:1px 1px 0 var(--hud-light)}.status-dot{background:var(--gold);width:5px;height:5px}.floating-label{font-size:8px;padding:1px 5px;box-shadow:0 1px var(--edge);transform:none;background:var(--cream)}.kitchen-label{left:26%;top:30%}.dining-label{right:9%;bottom:22%}.scene-tip{bottom:7px;font-size:9px;color:var(--ink);background:var(--paper);border:1px solid var(--edge);padding:2px 6px;left:50%;right:auto;transform:translateX(-50%);white-space:nowrap;max-width:95%;overflow:clip;text-overflow:ellipsis}
.service-bar{padding:5px 8px 4px;flex-shrink:0;border-top:2px solid var(--edge);background:var(--cream)}.service-copy{margin-bottom:4px;gap:6px;font-size:9px}.service-copy>span{font-size:12px}.service-copy strong{font-size:9px;overflow:clip;white-space:nowrap;text-overflow:ellipsis}.service-copy .text-button{font-size:9px;padding:0 2px}.progress-track{height:8px;padding:1px;background:var(--paper-deep)}.progress-track>div{background:var(--green-mid)}.room-stats{font-size:8px;line-height:1.5;gap:4px;margin-top:4px}.room-stats b{font-weight:700}
.news-ticker{grid-row:2;display:flex;gap:6px;align-items:center;width:100%;border:0;border-top:1px solid var(--line);border-bottom:2px solid var(--edge);padding:2px 8px;background:var(--gold);font-size:9px;text-align:left;overflow:clip;min-width:0}.news-ticker .ticker-label{background:var(--hud);color:var(--cream);padding:0 4px;font-size:8px;flex-shrink:0}.news-ticker .ticker-copy{white-space:nowrap;overflow:clip;text-overflow:ellipsis;flex:1;min-width:0}.news-ticker .ticker-arrow{font-size:14px;line-height:1}.news-ticker.invitation{background:var(--orange)}
.menu-panel{grid-row:3;display:grid;grid-template-columns:80px minmax(0,1fr);grid-template-rows:auto auto 26px 44px;padding:6px 8px 8px;column-gap:8px;row-gap:3px;border:0;border-bottom:2px solid var(--edge);background:var(--paper);min-height:0}.menu-panel .panel-title{display:none}.tray-frame{grid-column:1;grid-row:1/3;align-self:center;width:80px;height:65px;border:0;background:none;margin:0}.tray-frame #tray{width:80px;height:63px;margin:0}.tray-note{display:none}.menu-panel h3{grid-column:2;grid-row:1;margin:0;font-size:13px;line-height:1.5;align-self:end;color:var(--ink)}.menu-panel .muted{display:none}.dish-list{grid-column:2;grid-row:2;display:flex;flex-wrap:wrap;align-content:start;gap:1px 8px;padding:0;margin:0;min-height:30px;align-self:start}.dish-list li{font-size:9px;line-height:1.6;gap:3px;white-space:nowrap}.dish-list li:before{width:3px;height:3px;background:var(--edge)}.dish-list li:nth-child(3){color:var(--green)}.menu-panel #change-menu{grid-column:1;grid-row:3;min-height:25px;height:25px;padding:1px 4px;gap:3px;font-size:9px;background:var(--cream);box-shadow:0 1px var(--edge)}.meal-cost{grid-column:2;grid-row:3;margin:0;font-size:9px;align-self:center}.meal-cost strong{font-size:11px}.menu-panel .start-button{grid-column:1/-1;grid-row:4;position:static;width:100%;height:44px;min-height:44px;padding:5px 8px;margin:0;font-size:15px;background:var(--orange);border:2px solid var(--orange-dark);box-shadow:inset 0 2px var(--cream),0 2px var(--orange-dark);gap:10px}.autosave{display:none}.right-sidebar{display:none}
.bottom-nav{position:static;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;margin:0;padding:4px 5px max(4px,env(safe-area-inset-bottom));min-height:0;max-height:none;border:0;background:var(--hud);box-shadow:inset 0 2px var(--hud-light);z-index:3}.nav-button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;min-width:0;min-height:0;padding:2px 3px;background:var(--paper);border:2px solid var(--hud-dark);box-shadow:inset 0 2px var(--cream),0 1px var(--hud-dark);text-align:center}.nav-button.active{background:var(--orange);border-color:var(--orange-dark)}.nav-button canvas{width:28px;height:24px}.nav-button>span:not(.nav-badge){font-size:10px;line-height:1.4}.nav-button small{display:none}.nav-badge{right:2px;top:1px;font-size:8px;line-height:1.4;background:var(--hud);color:var(--cream);padding:0 3px}.teacher-tip,footer{display:none}
dialog{width:min(456px,calc(100% - 20px));padding:14px;max-height:calc(100dvh - 28px);border:3px solid var(--hud-dark);background:var(--cream);box-shadow:3px 3px var(--hud-light);scrollbar-width:thin}.modal-header{padding:0 0 10px;margin-bottom:12px;border-bottom:2px solid var(--line)}.modal-header span{font-size:9px}.modal-header h2{font-size:17px;line-height:1.7}.modal-header .icon-button{flex-shrink:0}.modal-intro{font-size:11px;margin-bottom:12px}.recipe-grid{grid-template-columns:minmax(0,1fr);gap:8px}.recipe-card{padding:9px;grid-template-columns:64px minmax(0,1fr);gap:8px;background:var(--paper)}.recipe-card canvas{width:64px;height:55px}.recipe-card h3{font-size:12px}.recipe-card p{font-size:9px}.recipe-card.locked{background:var(--paper-deep)}.recipe-actions .outline-button{min-height:36px;font-size:10px}.build-card{gap:10px;padding:10px 0;flex-wrap:wrap}.build-card canvas{width:48px;height:40px}.build-card h3{font-size:12px}.build-card p{font-size:10px}.build-card button{margin-left:auto;font-size:10px}.student-row{gap:8px;padding:10px 0}.student-row h3{font-size:12px}.student-row p{font-size:10px}.student-row strong{font-size:11px}.student-summary span{font-size:11px;padding:6px 8px}.result-top{gap:12px;margin-bottom:12px}.result-top canvas{width:100px;height:80px}.result-score{font-size:34px}.result-title{font-size:12px}.result-grid{gap:6px;margin:12px 0}.result-stat{font-size:10px;padding:8px}.result-note{font-size:10px;padding:10px;margin-bottom:12px}.result-action{flex-wrap:wrap;gap:8px}.result-action .start-button{width:100%;margin:0;min-height:44px;padding:8px;font-size:13px}.help-copy{font-size:11px}.inline-notice{font-size:10px;padding:10px}.full-source{font-size:9px}.news-dialog-feed{max-height:50dvh;overflow:auto}.news-dialog-feed .news-item h3{font-size:12px}.news-dialog-feed .news-item p{font-size:11px}.news-dialog-feed .news-item small{font-size:9px}.news-fame{display:flex;align-items:center;justify-content:space-between;background:var(--paper);padding:8px;margin-bottom:12px;font-size:11px}#toast{bottom:76px;font-size:11px;max-width:440px}
@media(max-width:360px){.shell{grid-template-rows:44px 58px minmax(0,1fr) 58px}.masthead{padding:3px 6px;gap:3px}.brand>canvas{width:27px;height:27px}.brand{gap:4px}h1{font-size:14px}.header-right{gap:3px}.icon-button{width:27px;height:28px;min-height:28px}.resource{grid-template-columns:10px minmax(0,1fr);padding:0 3px;gap:3px}.resource-icon{width:10px;font-size:15px}.coin{width:13px;font-size:8px}.resource small{font-size:7px}.resource strong{font-size:12px}.resource-bar{padding:6px 2px}.menu-panel{grid-template-columns:66px minmax(0,1fr);column-gap:6px}.tray-frame{width:66px}.tray-frame #tray{width:66px;height:56px}.menu-panel h3{font-size:11px}.dish-list{gap:0 5px}.dish-list li{font-size:8px}.menu-panel #change-menu{font-size:8px}.meal-cost{font-size:8px}.meal-cost strong{font-size:10px}.scene-toolbar{padding-inline:6px}.day-label strong{font-size:10px}.weather{display:none}.room-stats{font-size:7px}.service-copy strong{font-size:8px}.news-ticker{font-size:8px}}
@media(max-height:720px){.shell{grid-template-rows:42px 52px minmax(0,1fr) 55px}.masthead{padding-block:2px}.resource-bar{padding-block:4px}.scene-toolbar{height:29px}.service-bar{padding-block:3px}.room-stats{margin-top:2px}.scene-tip{display:none}.menu-panel{grid-template-rows:auto auto 24px 39px;padding-block:4px;row-gap:2px}.menu-panel .start-button{height:39px;min-height:39px;font-size:14px}.tray-frame{height:55px}.tray-frame #tray{height:55px}.nav-button canvas{height:21px;width:25px}.nav-button>span:not(.nav-badge){font-size:9px}}
@media(hover:hover){.nav-button:hover:not(:disabled){background:var(--gold)}.news-ticker:hover{background:var(--paper-deep)}.start-button:hover:not(:disabled){background:var(--orange);filter:brightness(1.05)}}
/* Pixel bevels and information panels: bright tops, dark foundations. */
.masthead{box-shadow:inset 0 2px var(--hud-light),inset 0 -2px var(--hud-dark)}.resource-bar{background:var(--cream);box-shadow:inset 0 2px var(--white),inset 0 -3px var(--paper-deep)}.resource strong{color:var(--hud-dark);text-shadow:1px 1px var(--white)}.resource:first-child strong{color:var(--ink)}.coin{background:var(--orange);box-shadow:inset 1px 1px var(--cream),inset -1px -1px var(--orange-dark)}
.scene-toolbar{box-shadow:inset 0 1px var(--white),inset 0 -1px var(--paper-deep)}.scene-area{background:#8eb94d}.scene-area #world{object-fit:contain}.floating-label{display:none}.scene-caption{box-shadow:1px 1px var(--hud-dark),inset 0 1px var(--hud-light);border-color:var(--hud-dark)}.scene-tip{background:var(--cream);border-color:var(--green);box-shadow:1px 1px var(--green);font-size:8px}
.service-bar{box-shadow:inset 0 1px var(--white)}.progress-track{height:9px;border-color:var(--hud-dark);box-shadow:inset 0 1px var(--shadow)}.progress-track>div{background-color:var(--green-mid);background-image:repeating-linear-gradient(90deg,transparent 0 7px,rgba(255,255,230,.4) 7px 8px)}
.news-ticker{box-shadow:inset 0 1px var(--white)}.ticker-label{border:1px solid var(--hud-dark);box-shadow:inset 0 1px var(--hud-light)}.menu-panel{box-shadow:inset 0 2px var(--cream);background:var(--paper)}.tray-frame{background:var(--cream);border:1px solid var(--line);box-shadow:inset 1px 1px var(--white),1px 1px var(--shadow);display:flex;align-items:center;justify-content:center}.menu-panel h3{color:var(--hud-dark)}.menu-panel .start-button{background:linear-gradient(to bottom,#ffd96c 0 3px,#ffbf3c 3px 82%,#f0a124 82% 100%);text-shadow:1px 1px #ffedb4;border-color:var(--orange-dark);box-shadow:inset 2px 0 #ffe18d,inset -2px 0 #dc8a1e,0 2px var(--orange-dark)}
.nav-button{background:linear-gradient(to bottom,#fffdf1 0 3px,#fff2cb 3px 87%,#e5c37b 87% 100%);box-shadow:inset 1px 0 var(--white),inset -1px 0 var(--line),0 1px var(--hud-dark)}.nav-button.active{background:linear-gradient(to bottom,#ffeaa6 0 3px,#ffc34e 3px 86%,#e6a02e 86% 100%)}.nav-button canvas{filter:drop-shadow(1px 1px 0 #e9cc8c)}
.modal-header{background:var(--hud);color:var(--cream);margin:-14px -14px 12px;padding:10px 12px;border-bottom:3px solid var(--hud-dark);box-shadow:inset 0 2px var(--hud-light)}.modal-header span{color:var(--cream)}.modal-header h2{color:var(--gold);text-shadow:1px 1px var(--hud-dark)}.recipe-card{border:2px solid var(--line);box-shadow:inset 0 1px var(--white);background:var(--paper)}.recipe-card.selected{border-color:var(--green);background:var(--cream)}.recipe-card canvas{background:var(--cream);border-bottom:1px solid var(--line)}.recipe-card.locked{background:var(--paper-deep)}.outline-button{box-shadow:inset 0 1px var(--white),0 2px var(--shadow)}.small-tag{background:var(--hud);color:var(--cream)}.level-stars{color:var(--orange-dark)}
/* Cozy title-screen palette carried into the playable world. */
:root{--hud:#416f4e;--hud-dark:#294d38;--hud-light:#739b63;--gold:#ffe3a0;--grass:#a4bf60;--paper:#fff1cf;--paper-deep:#efd59d;--line:#c49b61;--edge:#79532f}
.scene-area{background:var(--grass)}.masthead h1{color:var(--gold)}.scene-caption{background:var(--hud)}.progress-track>div{background-color:var(--green-mid)}
