:root{font-family:ui-rounded,SF Pro Rounded,PingFang SC,Noto Sans SC,system-ui,sans-serif;color:#312d2a;background:#f4eee5;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #312d2a;--muted: #877a70;--paper: #fffdf9;--cream: #f4eee5;--peach: #f5c7a8;--peach-deep: #b96e4a;--sage: #a9c8aa;--sage-deep: #4f805e;--yellow: #f4d383;--line: #eadfd2;--shadow: 0 18px 45px rgba(89, 66, 47, .08)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 6% 4%,#fff9ef 0,transparent 30%),var(--cream)}body.menu-open{overflow:hidden}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}.app-shell{max-width:1440px;margin:0 auto;padding:32px 42px 24px}.app-header,.brand-lockup,.header-stats,.section-heading,.board-controls,.building-title,.app-footer{display:flex;align-items:center}.app-header{justify-content:space-between;gap:24px;margin-bottom:30px}.brand-lockup{gap:14px}.brand-mark{width:52px;height:52px;display:grid;place-items:center;border-radius:18px;background:var(--peach);font-size:28px;box-shadow:0 7px #e7ac8e}.eyebrow{margin:0 0 5px;color:var(--peach-deep);font-size:10px;font-weight:800;letter-spacing:.15em;text-transform:uppercase}h1,h2,p{margin-top:0}h1{margin-bottom:0;font-size:clamp(22px,3vw,32px);letter-spacing:-.05em}h2{margin-bottom:0;font-size:20px;letter-spacing:-.035em}.header-stats{gap:10px;flex-wrap:wrap;justify-content:flex-end}.menu-button,.menu-close{display:none;border:0;color:var(--ink);background:#fffaf2}.menu-button{width:38px;height:38px;place-items:center;border:1px solid var(--line);border-radius:12px;font-size:20px}.day-chip,.space-chip{padding:9px 13px;border:1px solid var(--line);border-radius:999px;background:#ffffffb3;color:var(--muted);font-size:12px;font-weight:700}.day-chip{color:#8b6a39;background:#fff6d9;border-color:#f0dfae}.game-layout{display:grid;grid-template-columns:minmax(540px,1.08fr) minmax(350px,.92fr);gap:24px;align-items:start}.game-column,.side-column{display:grid;gap:18px;min-width:0}.panel,.welcome-banner{border:1px solid rgba(215,198,181,.65);border-radius:26px;background:#fffdf9e6;box-shadow:var(--shadow)}.panel{padding:24px}.welcome-banner{min-height:154px;padding:25px 28px;display:flex;justify-content:space-between;overflow:hidden;background:linear-gradient(135deg,#fffaf1,#fffdf9 52%,#eaf2e1)}.welcome-banner h2{max-width:480px;font-size:clamp(22px,3vw,30px)}.welcome-banner p:last-child{margin:10px 0 0;color:var(--muted);font-size:14px}.banner-art{align-self:center;padding-right:22px;font-size:64px;transform:rotate(-6deg)}.banner-art span{display:inline-block;margin-left:-14px;font-size:72px;transform:translateY(16px)}.section-heading{justify-content:space-between;gap:12px;margin-bottom:19px}.section-heading.compact{margin-bottom:16px}.board-hint{color:var(--muted);font-size:11px;text-align:right}.board-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:repeat(9,minmax(0,1fr));aspect-ratio:7 / 9;gap:7px;padding:11px;border-radius:18px;background:#ede4d7;box-shadow:inset 0 1px #fffc}.board-cell{position:relative;aspect-ratio:1;min-width:0;border:1px solid #e1d5c7;border-radius:11px;padding:3px;overflow:hidden;color:var(--ink);background:#fffaf3cc;touch-action:none;user-select:none;-webkit-user-select:none;transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.board-cell:hover{transform:translateY(-2px);box-shadow:0 5px 9px #6c4e2e1f}.board-cell.selected{border:2px solid var(--peach-deep);box-shadow:0 0 0 3px #f5c7a880;background:#fff5ec}.board-cell.generator{background:#e2f0dd;border-color:#c1d9bc}.board-cell.building{background:#e6f1e2;border-color:#c4d8bc}.board-cell.building-storage{background:#fff1d8;border-color:#ead2a7}.board-cell.building-landmark{background:#e8e5f4;border-color:#cdc7e4}.board-cell.feedback-generated,.board-cell.feedback-bonus{animation:board-pop .7s ease-out}.board-cell.feedback-blocked{animation:board-shake .65s ease-in-out;border-color:#d97a61;box-shadow:0 0 0 4px #d97a6133}.board-cell.drag-target{transform:scale(1.04);z-index:1}.board-cell.drag-merge,.board-cell.drag-store{border-color:var(--sage-deep);background:#dff1d8;box-shadow:0 0 0 4px #4f805e40}.board-cell.drag-move{border-color:#b0753e;background:#fff0d6;box-shadow:0 0 0 4px #b0753e33}.board-cell.drag-invalid{border-color:#d97a61;background:#fbe8e2;box-shadow:0 0 0 4px #d97a6133}.board-cell.dragging-source{opacity:.28;transform:scale(.94)}.drag-ghost{position:fixed;z-index:20;left:0;top:0;display:grid;width:56px;height:56px;place-items:center;border:2px solid var(--peach-deep);border-radius:16px;background:#fffdf9f0;box-shadow:0 12px 25px #6c4e2e33;font-size:32px;pointer-events:none;transform:translate(-50%,-50%) scale(1.08);will-change:left,top,transform}.drag-ghost-building{border-color:#c1d9bc;background:#e6f1e2f2}.board-cell.empty{color:#d8cabc}.entity-emoji{display:block;margin-top:4px;font-size:clamp(17px,3vw,30px);line-height:1}.empty-mark{font-size:22px;opacity:.6}.board-controls{min-height:35px;justify-content:space-between;gap:8px;flex-wrap:wrap;padding:12px 4px 0}.selected-copy{flex:1;color:var(--muted);font-size:12px}.storage-shelf{margin-top:14px;padding:12px;border:1px solid #ead8ba;border-radius:16px;background:#fff8e9}.storage-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px;color:#8e6f43;font-size:11px;font-weight:800}.storage-heading strong{color:#b0753e}.storage-slots{display:flex;gap:7px;flex-wrap:wrap}.storage-slot{width:42px;height:42px;display:grid;place-items:center;border:1px dashed #dfc99f;border-radius:11px;color:#d4b982;background:#ffffff8c;font-size:21px}.storage-slot.filled{border-style:solid;color:var(--ink);background:#fffdf8;box-shadow:0 3px #ecd8b6}.storage-slot:disabled{opacity:1;cursor:default}.button{border:0;border-radius:11px;padding:10px 14px;font-size:12px;font-weight:800;transition:transform .15s ease,opacity .15s ease,background .15s ease}.button:hover:not(:disabled){transform:translateY(-1px)}.button:disabled{opacity:.42}.button-primary{color:#fff;background:var(--peach-deep);box-shadow:0 3px #99583c}.button-quiet{color:#496d52;background:#e1efdc}.button-ghost{color:var(--muted);background:#f3eee7}.button-danger{color:#a65d56;background:#f9e5e1}.status-line{min-height:30px;display:flex;align-items:center;gap:8px;padding:0 7px;color:#6e6258;font-size:13px}.menu-overlay,.orientation-lock{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:20px;background:#312d2a61}.menu-overlay{display:none}.menu-panel,.orientation-card{width:min(100%,560px);max-height:100%;padding:22px;overflow-y:auto;overscroll-behavior:contain;border:1px solid rgba(215,198,181,.8);border-radius:24px;background:var(--paper);box-shadow:0 24px 70px #36271d38}.menu-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.menu-close{display:grid;width:36px;height:36px;place-items:center;border-radius:11px;font-size:24px}.menu-panel>.panel{margin-top:14px;padding:18px;box-shadow:none}.orientation-card{text-align:center}.orientation-icon{display:block;margin-bottom:10px;font-size:48px}.orientation-card p:not(.eyebrow){margin:10px auto 18px;max-width:280px;color:var(--muted);font-size:13px;line-height:1.7}.status-dot{width:8px;height:8px;flex:0 0 auto;border-radius:50%;background:var(--sage-deep);box-shadow:0 0 0 4px #dcebd8}.progress-number{color:var(--peach-deep);font-size:14px;font-weight:800}.task-panel{background:linear-gradient(145deg,#fffdf9,#fff7ec)}.active-task{display:grid;grid-template-columns:48px 1fr auto;gap:12px;align-items:center;padding:14px;border:1px solid #f0dfcf;border-radius:18px;background:#fffaf4}.task-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:15px;background:#f9e1c9;font-size:27px}.task-content{min-width:0}.task-content strong{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:13px}.task-content p{margin:5px 0 9px;color:var(--muted);font-size:11px}.task-content small{color:#9b8267;font-size:10px}.task-progress,.level-bar{height:5px;overflow:hidden;border-radius:999px;background:#f0e6dc}.task-progress{margin-bottom:8px}.task-progress span,.level-bar span{display:block;height:100%;border-radius:inherit;background:var(--peach-deep);transition:width .25s ease}.task-submit{padding:9px 11px}.chapter-complete{display:flex;gap:12px;align-items:center;padding:17px;border:1px solid #cbe2c6;border-radius:17px;background:#eff8ec}.complete-mark{color:#5d9869;font-size:28px}.chapter-complete strong{font-size:13px}.chapter-complete p{margin:5px 0 0;color:var(--muted);font-size:11px;line-height:1.6}.task-timeline{display:flex;align-items:center;gap:11px;margin-top:17px}.timeline-label{color:var(--muted);font-size:10px;font-weight:800;white-space:nowrap}.timeline-dots{display:flex;flex:1;gap:4px}.timeline-dots span{height:6px;flex:1;border-radius:999px;background:#eadfd4}.timeline-dots span.done{background:var(--sage-deep)}.town-panel{background:#f8fbf5}.town-spark,.settings-mark{color:#6b9a70;font-size:22px}.resources{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:17px}.resource-pill{display:grid;grid-template-columns:auto 1fr;gap:2px 6px;align-items:center;padding:9px 10px;border-radius:13px;background:#fff}.resource-pill>span:first-child{grid-row:span 2;font-size:19px}.resource-pill>span:nth-child(2){font-weight:800}.resource-pill small{color:var(--muted);font-size:9px}.resource-wood{border:1px solid #eed9be}.resource-stone{border:1px solid #d9e0e5}.resource-garden{border:1px solid #d3e6cc}.building-list{display:grid;gap:9px}.building-card{display:grid;grid-template-columns:38px 1fr auto;gap:10px;align-items:center;padding:11px;border:1px solid #dfeada;border-radius:15px;background:#ffffffbf}.building-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:#e5f0df;font-size:22px}.building-info{min-width:0}.building-title{justify-content:space-between;gap:4px}.building-title strong{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:12px}.building-title span{color:var(--sage-deep);font-size:10px;font-weight:800;white-space:nowrap}.building-info p{margin:4px 0 7px;overflow:hidden;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:10px}.level-bar span{background:var(--sage-deep)}.building-action{padding:8px 9px;white-space:nowrap}.settings-panel{background:#fffaf7}.settings-copy{margin:0 0 15px;color:var(--muted);font-size:12px;line-height:1.7}.settings-actions{display:flex;gap:7px;flex-wrap:wrap}.settings-feedback{margin:12px 0 0;color:var(--sage-deep);font-size:11px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.app-footer{justify-content:space-between;gap:12px;margin-top:21px;padding:0 6px;color:#a29183;font-size:10px}@keyframes board-pop{0%{transform:scale(.82);box-shadow:0 0 #b96e4a80}60%{transform:scale(1.1);box-shadow:0 0 0 7px #f5c7a833}to{transform:scale(1)}}@keyframes board-shake{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}@media(max-width:980px){.app-shell{padding:24px 20px}.game-layout{grid-template-columns:1fr}.side-column{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.settings-panel{grid-column:1 / -1}}@media(max-width:620px){html,body,#root{height:100%;overflow:hidden}.app-shell{height:100dvh;min-height:100dvh;display:grid;grid-template-rows:auto minmax(0,1fr);padding:calc(env(safe-area-inset-top) + 10px) 10px calc(env(safe-area-inset-bottom) + 8px)}.app-header{align-items:center;gap:8px;margin-bottom:8px}.brand-lockup{min-width:0;gap:9px}.brand-lockup .eyebrow,.day-chip{display:none}.brand-lockup h1{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:18px}.header-stats{flex:0 0 auto;justify-content:flex-end;gap:6px}.space-chip{padding:8px 9px;font-size:11px}.menu-button{display:grid}.brand-mark{width:44px;height:44px;border-radius:15px;font-size:23px}h1{font-size:22px}.game-layout{display:block;min-height:0;overflow:hidden}.game-column{height:100%;min-height:0;display:block}.welcome-banner,.side-column,.app-footer{display:none}.board-card{height:100%;min-height:0;display:flex;flex-direction:column;padding:10px;border-radius:18px}.board-card .section-heading{flex:0 0 auto;margin-bottom:8px}.board-card .section-heading h2{font-size:17px}.board-hint{max-width:180px;font-size:9px;line-height:1.4}.welcome-banner{min-height:135px;padding:20px}.welcome-banner h2{font-size:21px}.welcome-banner p:last-child{font-size:12px}.banner-art{padding-right:0;font-size:40px}.banner-art span{font-size:48px}.panel{padding:17px;border-radius:20px}.board-grid{width:min(100%,calc(100dvh - 148px));max-height:calc(100dvh - 148px);flex:0 1 auto;gap:4px;padding:7px;margin:0 auto}.board-cell{border-radius:7px}.entity-emoji{margin-top:0;font-size:clamp(16px,7vw,27px)}.board-controls{flex:0 0 auto;min-height:46px;padding:7px 0 0;gap:5px}.selected-copy{min-width:100%;font-size:10px}.board-controls .button{min-height:34px;padding:8px 10px}.storage-shelf{flex:0 0 auto;margin-top:5px;padding:7px;border-radius:12px}.storage-heading{margin-bottom:5px;font-size:10px}.storage-slots{gap:4px}.storage-slot{width:34px;height:34px;border-radius:8px;font-size:18px}.status-line{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 7px);z-index:10;width:max-content;max-width:calc(100% - 24px);min-height:25px;padding:5px 10px;border:1px solid var(--line);border-radius:999px;color:var(--ink);background:#fffdf9f0;box-shadow:0 5px 18px #59422f1f;font-size:10px;transform:translate(-50%)}.status-dot{width:6px;height:6px;box-shadow:none}.menu-overlay{display:block;padding:calc(env(safe-area-inset-top) + 10px) 10px calc(env(safe-area-inset-bottom) + 10px);overflow:hidden}.menu-panel{width:100%;height:100%;padding:14px;border-radius:20px}.menu-panel>.panel{padding:14px}.active-task{grid-template-columns:42px 1fr}.task-icon{width:42px;height:42px;font-size:23px}.task-submit{grid-column:1 / -1;width:100%}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
