:root{--ink: #17201a;--muted: #667064;--panel: rgba(255, 252, 244, .92);--panel-strong: #ffffff;--line: rgba(23, 32, 26, .12);--shadow: 0 14px 34px rgba(31, 48, 35, .12);--leaf: #d9ead0;--leaf-strong: #c5dfb7;--accent: #dfc84f;color:#17201a;background:#f6f2e8;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.4}html,body{height:100%;overflow:hidden}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;min-width:320px;background:radial-gradient(circle at top left,rgba(126,168,109,.22),transparent 32rem),linear-gradient(135deg,#f8f4eb,#eaf0e1)}button{border:0;border-radius:8px;font:inherit;font-weight:750;cursor:pointer;color:var(--ink);background:var(--leaf);transition:transform .12s ease,background .12s ease,opacity .12s ease}button:hover:not(:disabled){transform:translateY(-1px);background:var(--leaf-strong)}button:disabled{cursor:not-allowed;opacity:.62}#app{height:100vh;min-height:0;padding:18px;overflow:hidden}#game-shell{height:100%;min-height:0;display:grid;grid-template-columns:minmax(210px,244px) minmax(0,1fr) minmax(92px,116px);grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"topbar canvas dock" "topbar care dock";gap:14px;overflow:hidden}.topbar{grid-area:topbar;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr);grid-template-areas:"brand" "actions" "stats";align-content:start;align-items:stretch;gap:12px;min-height:0;min-width:0;overflow:hidden;padding:14px;border:1px solid var(--line);border-radius:8px;background:#fffcf4d1;box-shadow:0 10px 30px #1f302314}.brand{grid-area:brand;display:flex;align-items:center;gap:12px;min-width:0}.brand>div{min-width:0}.brand-mark{flex:0 0 auto;width:42px;height:30px;border-radius:48% 52% 45% 55%;background:radial-gradient(circle at 70% 36%,#1f160f 0 2px,transparent 3px),radial-gradient(circle at 22% 28%,#8b6b49 0 8px,transparent 9px),#b98b62;box-shadow:inset -8px -5px #5a371c29}h1,h2,p{margin:0}h1{overflow:hidden;font-size:clamp(1.05rem,2vw,1.45rem);letter-spacing:0;text-overflow:ellipsis;white-space:nowrap}#status-line{display:-webkit-box;min-height:2.52em;max-height:2.52em;overflow:hidden;color:#5b665c;font-size:.9rem;line-height:1.4;-webkit-box-orient:vertical;-webkit-line-clamp:2}.topbar-actions{grid-area:actions;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:8px;min-width:0}.sound-toggle{flex:0 0 auto;min-width:62px;min-height:38px;padding:8px 12px;border:1px solid rgba(23,32,26,.12);background:#fff;box-shadow:0 8px 18px #1f302314;font-size:.78rem;letter-spacing:0}.sound-toggle[aria-pressed=true]{color:#6f4f2f;background:#eee8da}.reset-game-button{flex:0 0 auto;min-height:34px;padding:7px 10px;border:1px solid rgba(130,55,43,.28);color:#74372d;background:#f8e6e0d1;box-shadow:0 8px 18px #4620180f;font-size:.74rem;letter-spacing:0}.reset-game-button:hover:not(:disabled){background:#f0d6ce}.save-status-slot{flex:0 0 78px;min-width:78px;min-height:30px}.save-status{display:block;min-width:78px;padding:6px 9px;border:1px solid rgba(23,32,26,.12);border-radius:999px;color:#4f594f;background:#ffffffc7;font-size:.74rem;font-weight:800;text-align:center;transition:background .14s ease,border-color .14s ease,color .14s ease}.save-status.saving{color:#4d4724;background:#fff5c6;border-color:#a07b2247}.save-status.saved{color:#28542d;background:#edf8e8;border-color:#7ea86d52}.save-status.warning{color:#63301c;background:#fff0df;border-color:#b4512d4d}.save-status[hidden]{display:none}.stats{grid-area:stats;display:grid;grid-template-columns:minmax(0,1fr);align-content:start;gap:8px;min-width:0;min-height:0;overflow-y:auto;padding-right:2px;scrollbar-gutter:stable}.stats div{min-width:0;padding:8px 10px;border-radius:8px;background:#fff;border:1px solid rgba(23,32,26,.1);transition:background .16s ease,border-color .16s ease,box-shadow .16s ease,opacity .16s ease}.stats div.stat-primary{background:linear-gradient(180deg,#fff,#fbfff7);border-color:#7ea86d3d;box-shadow:inset 0 0 0 1px #ffffffad}.stats div.stat-secondary{background:#ffffffc7}.stats div.stat-dormant{opacity:.66}.stats div.stat-unlocked{opacity:1;background:linear-gradient(180deg,#fff,#f7fbf1);border-color:#7ea86d4d}.stats div.stat-danger{background:linear-gradient(180deg,#fff8ed,#ffe7d2);border-color:#b4512d57;box-shadow:inset 0 0 0 1px #ffffffb3}.stats div.stat-active{background:linear-gradient(180deg,#fff9d8,#f8edb7);border-color:#a07b2257}.stats span,.meter-label span{display:block;color:var(--muted);font-size:.75rem;font-weight:700;text-transform:uppercase}.stats strong,.meter-label strong{font-size:1rem}.layout,.play-area{display:contents;min-height:0}#canvas-wrap{grid-area:canvas;position:relative;height:100%;min-height:0;border-radius:8px;overflow:hidden;border:1px solid rgba(96,72,42,.28);background:linear-gradient(180deg,#fff9e229,#573b1e0f),#d8c3a0;box-shadow:inset 0 0 0 1px #fffae661,inset 0 18px 42px #fff9e229,inset 0 -18px 48px #4f371f14,0 18px 40px #1f302324}#canvas-wrap:before{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;border-radius:inherit;background:radial-gradient(circle at 50% 38%,transparent 50%,rgba(60,42,24,.08) 100%),linear-gradient(90deg,rgba(255,251,230,.1),transparent 16%,transparent 84%,rgba(66,44,24,.07));content:"";pointer-events:none}#game-canvas{position:absolute;top:0;right:0;bottom:0;left:0;min-height:0}#game-canvas canvas{display:block;width:100%;height:100%}.tutorial-hint{position:absolute;left:14px;bottom:14px;z-index:24;display:flex;align-items:center;gap:10px;max-width:min(310px,calc(100% - 28px));padding:10px 10px 10px 14px;border:1px solid rgba(96,72,42,.18);border-left:5px solid #d8b94f;border-radius:8px;background:linear-gradient(180deg,#fffcf2f5,#fff6e1f0),#fffaf0;box-shadow:0 12px 28px #1f30232e,inset 0 0 0 1px #ffffff94;pointer-events:none}.tutorial-hint:after{position:absolute;left:28px;bottom:-8px;width:16px;height:16px;border-right:1px solid rgba(96,72,42,.16);border-bottom:1px solid rgba(96,72,42,.16);background:#fff6e1f0;content:"";pointer-events:none;transform:rotate(45deg)}.tutorial-hint[hidden]{display:none}.tutorial-hint span{min-width:0;color:#2e3a2f;font-size:.84rem;font-weight:750;line-height:1.25}.tutorial-hint button{flex:0 0 auto;width:28px;height:28px;padding:0;border:1px solid rgba(23,32,26,.12);background:#fff;font-size:.72rem;line-height:1;pointer-events:auto}.meters,.shop,.pig-roster,.goals,.log{padding:14px;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:0 10px 26px #1f302314}.care-strip{grid-area:care;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:10px;border:1px solid var(--line);border-radius:8px;background:#fffcf4db;box-shadow:var(--shadow)}.quick-meter,.quick-contract{min-width:0;padding:8px 10px;border:1px solid rgba(23,32,26,.08);border-radius:8px;background:#ffffffad}.quick-meter{display:grid;grid-template-columns:minmax(0,1fr) 72px;gap:7px;align-items:center}.quick-meter button{min-height:32px;padding:6px 8px;font-size:.78rem}.quick-meter .meter{grid-column:1 / -1}.quick-contract{display:grid;gap:2px}.quick-contract span{color:var(--muted);font-size:.72rem;font-weight:700;text-transform:uppercase}.quick-contract strong,.quick-contract em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.quick-contract strong{font-size:.86rem}.quick-contract em{color:#5f6a5e;font-size:.78rem;font-style:normal}.section-dock{grid-area:dock;display:grid;grid-template-columns:minmax(0,1fr);grid-auto-rows:minmax(72px,max-content);align-content:start;gap:8px;min-height:0;overflow-y:auto;padding:10px;border:1px solid var(--line);border-radius:8px;background:#fffcf4e6;box-shadow:var(--shadow)}.dock-button{position:relative;display:grid;grid-template-rows:38px auto;place-items:center;gap:4px;min-width:0;min-height:70px;padding:8px 6px;border:1px solid rgba(23,32,26,.1);background:#ffffffb3;outline-offset:3px;transition:background .14s ease,border-color .14s ease,box-shadow .14s ease,transform .12s ease}.dock-button img{width:42px;height:38px;object-fit:contain;filter:drop-shadow(0 4px 5px rgba(31,48,35,.16));transition:transform .14s ease,filter .14s ease}.dock-button>span:not(.dock-badge){max-width:100%;overflow:hidden;color:#2c382d;font-size:.76rem;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.dock-button:hover:not(:disabled) img,.dock-button:focus-visible img{transform:translateY(-3px) scale(1.06);filter:drop-shadow(0 7px 7px rgba(31,48,35,.2))}.dock-button:active:not(:disabled) img{transform:translateY(0) scale(.98)}.dock-button[aria-pressed=true]{border-color:#7ea86d8c;background:#f3f8ef;box-shadow:inset 0 0 0 2px #7ea86d38}.dock-button.dock-available:not([aria-pressed=true]){border-color:#7ea86d47;background:#fafff6db}.dock-button.dock-notice:not([aria-pressed=true]){border-color:#a4872d4d}.dock-button.dock-urgent{border-color:#9f562270;background:#fff4e5;animation:dock-urgent-pulse 1.3s ease-in-out infinite}.dock-button.dock-reveal-pulse:not([aria-pressed=true]){border-color:#7ea86d80;background:#f3f8ef;animation:dock-reveal-pop 1.6s ease-out}.dock-badge{position:absolute;top:6px;right:8px;display:grid;min-width:20px;height:20px;place-items:center;padding:0 5px;border:2px solid #fffaf0;border-radius:999px;color:#17201a;background:#f0d56b;box-shadow:0 4px 10px #1f302329;font-size:.7rem;font-weight:850;line-height:1}.dock-badge[data-badge-kind=available]{color:#17341d;background:#cfe8b7}.dock-badge[data-badge-kind=urgent]{color:#3f1d0f;background:#f2b36f}.dock-badge[data-badge-kind=notice]{color:#2d2611;background:#f0d56b}.dock-badge[hidden]{display:none}button.attention{background:#f0d56b;box-shadow:inset 0 0 0 2px #7b5d1a1f;animation:button-attention-pulse 1.2s ease-in-out infinite}button.attention-now:not(:disabled){background:#f0d56b;box-shadow:inset 0 0 0 2px #7b5d1a1f,0 0 0 3px #f0d56b33}button.completed-now{border-color:#7ea86d3d;background:#f1f8ebdb}button.locked-now:disabled{background:#eee8dae0}button.action-success{animation:action-success-flash .56s ease-out}.stat-pulse{animation:stat-pop .42s ease-out}.contract-pulse{display:inline-block;transform-origin:left center;animation:contract-progress-pop .52s ease-out}.meters{display:grid;gap:14px}.meter-row{display:grid;grid-template-columns:1fr 74px;gap:8px;align-items:center}.meter-row button{min-height:34px}.meter{grid-column:1 / -1;height:12px;overflow:hidden;border-radius:999px;background:#d8dbcf}.meter span{display:block;width:100%;height:100%;border-radius:inherit}#hay-meter,#quick-hay-meter{background:linear-gradient(90deg,#a5bf50,#dfc84f)}#water-meter,#quick-water-meter{background:linear-gradient(90deg,#55a7bd,#80d5e8)}#happiness-meter,#quick-happiness-meter{background:linear-gradient(90deg,#d55c4a,#dfc84f 45%,#7db46a)}.contract-row{display:grid;grid-template-columns:1fr auto;gap:4px 10px;padding:8px 10px;border:1px solid rgba(23,32,26,.08);border-radius:8px;background:#ffffff9e}.contract-row span{color:#667064;font-size:.72rem;font-weight:700;text-transform:uppercase}.contract-row strong{grid-column:1 / -1;font-size:.86rem}.contract-row em{grid-column:1 / -1;color:#5f6a5e;font-size:.78rem;font-style:normal}.event-choice-panel{display:grid;gap:7px;padding:9px 10px;border:1px solid rgba(126,168,109,.32);border-radius:8px;background:#f5fbeed1}.event-choice-panel[hidden]{display:none}.event-choice-panel>span{color:#667064;font-size:.72rem;font-weight:800;text-transform:uppercase}.event-choice-panel>strong{font-size:.9rem}.event-choice-panel>em{color:#5f6a5e;font-size:.78rem;font-style:normal;font-weight:600}.event-choice-list{display:grid;gap:7px}.event-choice-list button{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 10px;min-height:52px;padding:8px 10px;border:1px solid transparent;text-align:left}.event-choice-list button.available-now:not(:disabled){border:1px solid rgba(126,168,109,.42);background:linear-gradient(180deg,#eef8e9,#dbeecf)}.event-choice-list button.attention-now:not(:disabled){border-color:#a4872d80;background:linear-gradient(180deg,#fff6cf,#f2dfa0)}.event-choice-list button.locked-now:disabled{opacity:.68}.event-choice-list button strong{color:#314033;font-size:.8rem;text-align:right}.event-choice-list button em{grid-column:1 / -1;color:#4f594f;font-size:.74rem;font-style:normal;font-weight:600}.exchange-panel{display:grid;gap:8px;padding:9px;border:1px solid rgba(126,168,109,.24);border-radius:8px;background:#f5fbeeb3}.exchange-panel[hidden]{display:none}.exchange-panel h2{margin:0}.pig-request-panel{display:grid;gap:6px;padding:9px 10px;border:1px solid rgba(206,164,74,.34);border-radius:8px;background:#fff7ddd1}.pig-request-panel[hidden]{display:none}.pig-request-panel>span,.pig-request-panel div span{color:#667064;font-size:.72rem;font-weight:800;text-transform:uppercase}.pig-request-panel>strong{font-size:.9rem}.pig-request-panel>em{color:#5f6a5e;font-size:.78rem;font-style:normal;font-weight:600}.pig-request-panel div{display:flex;align-items:center;justify-content:space-between;gap:10px}.pig-request-panel div strong{color:#5c4a1f;font-size:.78rem;text-align:right}.system-summary{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 10px;padding:9px 10px;border:1px solid rgba(126,168,109,.3);border-radius:8px;background:#f5fbeec7}.system-summary>span{color:#263729;font-size:.86rem;font-weight:800}.system-summary>strong{color:#47623e;font-size:.76rem;font-weight:800;text-align:right}.system-summary>em{grid-column:1 / -1;color:#5f6d5c;font-size:.76rem;font-style:normal;font-weight:600;line-height:1.3}.shop{display:grid;gap:10px}.shop h2,.pig-roster h2,.goals h2,.log h2,#section-modal-title{font-size:.95rem}.shop button{display:grid;grid-template-columns:minmax(0,1fr) minmax(8.5rem,max-content);align-items:start;gap:4px 12px;min-height:48px;padding:10px 12px;border:1px solid transparent;text-align:left;transition:background .14s ease,border-color .14s ease,box-shadow .14s ease,transform .12s ease}.shop button span{min-width:0}.shop button.available-now:not(:disabled){border:1px solid rgba(126,168,109,.42);background:linear-gradient(180deg,#eef8e9,#dbeecf);box-shadow:inset 0 0 0 1px #ffffff94,0 6px 14px #1f302314}.shop button.available-now:not(:disabled) strong{color:#355c2c}.shop button.locked-now:disabled{background:#eee8dae0;opacity:.76}.shop button.locked-now:disabled strong{color:#7a4f32}.shop button.completed-now{border-color:#7ea86d47;background:#f1f8ebc7}.shop button.completed-now strong{color:#3f6b38}.shop button.attention-now:not(:disabled){border-color:#a4872d80;background:linear-gradient(180deg,#fff6cf,#f2dfa0)}.shop button.available-now:not(:disabled):active,.event-choice-list button.available-now:not(:disabled):active,.zone-tend-button.available-now:not(:disabled):active{transform:translateY(1px)}.shop button strong{justify-self:end;max-width:15rem;overflow-wrap:normal;color:#314033;font-size:.85rem;line-height:1.15;text-align:right;white-space:normal;word-break:normal}.shop button em{grid-column:1 / -1;color:#4f594f;font-size:.74rem;font-style:normal;font-weight:600;line-height:1.25}.shop-group{display:grid;gap:7px}.shop-group+.shop-group{padding-top:4px;border-top:1px solid rgba(23,32,26,.08)}.shop-group-title{margin:0;color:#5f6a5e;font-size:.76rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.automation-directives{display:grid;gap:7px;padding:9px;border:1px solid rgba(126,168,109,.24);border-radius:8px;background:#f5fbeead}.automation-directives h2,.automation-directives p{margin:0}.automation-directives p{color:#5f6a5e;font-size:.78rem;font-weight:700}.automation-directives p strong{color:#314033}.wisdom-specialization-panel{display:grid;gap:7px}.compact-shop{gap:7px}.compact-shop button{min-height:36px;padding:7px 9px;font-size:.82rem}.ability-shop button{min-height:58px}.tech-section{gap:12px}.tech-tree{position:relative;display:block;min-height:min(68vh,760px);max-height:min(72vh,820px);overflow:auto;padding:12px;border:1px solid rgba(43,49,38,.14);border-radius:8px;background:linear-gradient(rgba(64,75,59,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(64,75,59,.06) 1px,transparent 1px),linear-gradient(180deg,#fffaf0,#f7f0e4 52%,#f2f6ee);background-size:46px 46px,46px 46px,auto;scrollbar-gutter:stable both-edges}.tech-map{position:relative;isolation:isolate;min-width:var(--tech-map-width);min-height:var(--tech-map-height)}.tech-map:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid rgba(49,64,51,.1);border-radius:8px;pointer-events:none;z-index:0}.tech-map-links,.tech-map-nodes{position:absolute;top:0;right:0;bottom:0;left:0}.tech-map-links{pointer-events:none;z-index:1}.tech-link{fill:none;stroke:#4952454d;stroke-linecap:round;stroke-linejoin:round;stroke-width:3}.tech-link.locked{stroke:#5d65584d;stroke-dasharray:8 10}.tech-link.started{stroke:#7f8f48;stroke-width:4;filter:drop-shadow(0 0 3px rgba(127,143,72,.24))}.tech-link.available{stroke:#5f9d41;stroke-width:4}.tech-link.complete{stroke:#d7a62d;stroke-width:4;filter:drop-shadow(0 0 5px rgba(215,166,45,.42))}.tech-link.derived{stroke-dasharray:4 7}.tech-link.derived.complete{stroke:#2f9aa0}.tech-link.cross-branch{stroke-width:4}.tech-link.cross-branch.locked{stroke:#7e537752}.tech-link.cross-branch.started{stroke:#8b6bb7}.tech-link.cross-branch.available{stroke:#bd6c3f}.tech-map-nodes{z-index:2}.tech-node-row{position:absolute;width:var(--tech-node-width, 158px);height:var(--tech-node-height, 112px);min-width:0;transform:translate(-50%,-50%)}.tech-node-row:hover,.tech-node-row:focus-within{z-index:12}.shop .tech-node-button{position:relative;display:grid;grid-template-columns:1fr;grid-template-rows:1fr;place-items:center;gap:0;width:100%;height:var(--tech-node-height, 112px);min-width:var(--tech-node-width, 158px);min-height:var(--tech-node-height, 112px);padding:6px;border:2px solid var(--branch-border);border-radius:50%;background:radial-gradient(circle at 42% 36%,rgba(255,255,255,.95) 0 38%,rgba(255,255,255,.55) 39% 55%,transparent 56%),linear-gradient(180deg,#fffdf6,#f4f0e8);box-shadow:0 6px 12px #1f28201f,inset 0 0 0 1px #ffffffad;transition:border-color .14s ease,box-shadow .14s ease,filter .14s ease,transform .14s ease}.shop .tech-node-button[aria-disabled=true]{cursor:default}.tech-node-row.started .tech-node-button{border-color:var(--branch-color);background:radial-gradient(circle at 42% 36%,rgba(255,255,255,.96) 0 36%,rgba(255,255,255,.55) 37% 54%,transparent 55%),linear-gradient(180deg,#fffdf6,#edf4ea);box-shadow:0 7px 14px #1f302324,0 0 0 3px var(--branch-soft),inset 0 0 0 1px #ffffffad}.tech-node-row.available .tech-node-button[aria-disabled=false]{border-color:var(--branch-color);background:radial-gradient(circle at 42% 36%,rgba(255,255,255,.98) 0 36%,rgba(255,255,255,.58) 37% 54%,transparent 55%),linear-gradient(180deg,#fffefa,#e8f4df);box-shadow:0 8px 16px #1f302329,0 0 0 4px var(--branch-soft),inset 0 0 0 1px #ffffffb8}.tech-node-row.available .tech-node-button[aria-disabled=false]:hover,.tech-node-row.available .tech-node-button[aria-disabled=false]:focus-visible{filter:brightness(1.04);transform:translateY(-1px);box-shadow:0 11px 20px #1f302333,0 0 0 5px var(--branch-soft),inset 0 0 0 1px #ffffffc7}.tech-node-row.complete .tech-node-button{border-color:#d7a62d;background:radial-gradient(circle at 42% 36%,rgba(255,255,255,.95) 0 36%,rgba(255,255,255,.52) 37% 54%,transparent 55%),linear-gradient(180deg,#fff8dd,#efd98c);box-shadow:0 8px 16px #523b122e,0 0 12px #d7a62d57,inset 0 0 0 1px #ffffffad}.tech-node-row.locked .tech-node-button{filter:grayscale(.32) saturate(.75);opacity:.58;box-shadow:none}.tech-node-row.derived.complete .tech-node-button{border-color:#2f9aa0;border-style:dashed;background:linear-gradient(180deg,#f2fbf8,#d5ece8)}.tech-node-row.derived .tech-node-button{border-style:dashed}.tech-node-row.action-node .tech-node-button{border-width:3px}.tech-node-icon-frame{position:relative;display:grid;place-items:center;width:44px;height:44px;overflow:hidden}.tech-node-icon{display:block;max-width:42px;max-height:42px;object-fit:contain;filter:drop-shadow(0 2px 2px rgba(28,32,27,.16))}.tech-node-icon-code{display:none;color:var(--branch-color);font-size:.82rem;font-weight:950;line-height:1}.tech-node-icon-frame.missing-icon .tech-node-icon{display:none}.tech-node-icon-frame.missing-icon .tech-node-icon-code{display:block}.tech-node-state-dot{position:absolute;right:7px;bottom:7px;width:10px;height:10px;border:2px solid rgba(255,252,244,.96);border-radius:50%;background:#5b635694;box-shadow:0 1px 4px #1c201b2e}.tech-node-row.available .tech-node-state-dot{background:#5f9d41}.tech-node-row.started .tech-node-state-dot{background:var(--branch-color)}.tech-node-row.complete .tech-node-state-dot{background:#d7a62d}.tech-node-row.derived.complete .tech-node-state-dot{background:#2f9aa0}.tech-node-tooltip{position:absolute;bottom:calc(100% + 12px);left:50%;display:grid;width:238px;gap:6px;padding:10px;border:1px solid var(--branch-border);border-radius:8px;background:#fffcf4fa;box-shadow:0 14px 34px #232a222e;color:#26352a;opacity:0;pointer-events:none;transform:translate(-50%,4px);transition:opacity .12s ease,transform .12s ease,visibility .12s ease;visibility:hidden;z-index:20}.tech-node-tooltip:after{content:"";position:absolute;top:100%;left:50%;width:10px;height:10px;border-right:1px solid var(--branch-border);border-bottom:1px solid var(--branch-border);background:#fffcf4fa;transform:translate(-50%,-4px) rotate(45deg)}.tech-node-row.tooltip-below .tech-node-tooltip{top:calc(100% + 12px);bottom:auto;transform:translate(-50%,-4px)}.tech-node-row.tooltip-below .tech-node-tooltip:after{top:auto;bottom:100%;border:0;border-top:1px solid var(--branch-border);border-left:1px solid var(--branch-border);transform:translate(-50%,4px) rotate(45deg)}.tech-node-row.tooltip-align-left .tech-node-tooltip{left:-6px;transform:translateY(4px)}.tech-node-row.tooltip-align-right .tech-node-tooltip{right:-6px;left:auto;transform:translateY(4px)}.tech-node-row.tooltip-align-left .tech-node-tooltip:after{left:34px}.tech-node-row.tooltip-align-right .tech-node-tooltip:after{right:34px;left:auto}.tech-node-row:hover .tech-node-tooltip,.tech-node-row:focus-within .tech-node-tooltip{opacity:1;transform:translate(-50%);visibility:visible}.tech-node-row.tooltip-align-left:hover .tech-node-tooltip,.tech-node-row.tooltip-align-left:focus-within .tech-node-tooltip,.tech-node-row.tooltip-align-right:hover .tech-node-tooltip,.tech-node-row.tooltip-align-right:focus-within .tech-node-tooltip{transform:translate(0)}.tech-tooltip-title{color:#213228;font-size:.84rem;font-weight:950;line-height:1.12}.tech-tooltip-status{justify-self:start;max-width:100%;color:#596858;font-size:.72rem;font-weight:900;line-height:1.16;overflow-wrap:anywhere}.tech-node-row.available .tech-tooltip-status{color:#355c2c}.tech-node-row.started .tech-tooltip-status{color:var(--branch-color)}.tech-node-row.complete .tech-tooltip-status{color:#71530f}.tech-tooltip-description{color:#4f594f;font-size:.72rem;font-weight:650;line-height:1.22}.tech-level-pips{display:flex;flex-wrap:wrap;gap:4px;min-height:7px}.tech-level-pip{width:8px;height:6px;border:1px solid rgba(23,32,26,.18);border-radius:99px;background:#ffffffb8}.tech-level-pip.filled{border-color:#3140332e;background:var(--branch-color, #7ea86d)}.compact-shop h2+button{margin-top:2px}.synergy-list,.furniture-care-list{display:grid;gap:7px;margin-top:4px}.ecology-list{display:grid;gap:7px;margin-top:8px}.synergy-list ul,.furniture-care-list ul,.ecology-list ul{display:grid;gap:6px;margin:0;padding:0;list-style:none}.synergy-list li,.furniture-care-list li,.ecology-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 10px;padding:7px 9px;border:1px solid rgba(23,32,26,.08);border-radius:8px;background:#fff9;color:#4f594f;font-size:.78rem}.synergy-list li.complete,.ecology-list li.complete,.furniture-care-list li.complete{border-color:#7ea86d4d;background:#d9ead094}.ecology-list li.attention,.furniture-care-list li.attention{border-color:#a4872d57;background:#fff6cfa3}.ecology-list li.cooldown,.furniture-care-list li.cooldown{border-color:#7ea86d57;background:#eff9e8b8}.synergy-list li span,.furniture-care-list li span,.ecology-list li span{font-weight:800}.synergy-list li strong{max-width:14rem;overflow-wrap:anywhere;color:#314033;font-size:.74rem;text-align:right}.ecology-list li strong,.furniture-care-list li strong{max-width:12rem;overflow-wrap:anywhere;color:#314033;font-size:.74rem;text-align:right}.ecology-list li small,.furniture-care-list li small{grid-column:1 / -1;color:#5f6a5e;font-size:.7rem;font-weight:750}.synergy-list li em,.ecology-list li em,.furniture-care-list li em{grid-column:1 / -1;color:#5f6a5e;font-size:.72rem;font-style:normal;font-weight:600}.ecology-actions,.furniture-care-actions{grid-column:1 / -1;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:7px}.ecology-actions .zone-tend-button,.furniture-care-actions .furniture-care-button{min-height:30px;width:74px;padding:5px 8px;border-radius:7px;font-size:.72rem;transition:background .14s ease,border-color .14s ease,box-shadow .14s ease,transform .12s ease}.ecology-actions .zone-tend-button.available-now:not(:disabled),.furniture-care-actions .furniture-care-button.available-now:not(:disabled){border-color:#7ea86d75;background:linear-gradient(180deg,#edf8e7,#dbeecf);color:#315b2a}.ecology-actions .zone-tend-button.locked-now:disabled,.furniture-care-actions .furniture-care-button.locked-now:disabled{background:#eee8dae6;color:#736a5d}.ecology-actions small,.furniture-care-actions small{grid-column:auto;color:#5f6a5e;font-size:.7rem;font-weight:750;overflow-wrap:anywhere}.pig-roster ul{display:grid;gap:8px;margin:10px 0 0;padding:0;list-style:none;max-height:132px;overflow:auto}.pig-welcome-panel{display:grid;gap:8px;margin:8px 0 12px;padding:10px;border:1px solid rgba(126,168,109,.28);border-radius:8px;background:#f1f8ebb8}.pig-welcome-panel[hidden]{display:none!important}.pig-welcome-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.pig-welcome-heading span{color:#334533;font-size:.82rem;font-weight:800}.pig-welcome-heading strong{color:#5f6a5e;font-size:.72rem}#pig-welcome-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.pig-welcome-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(9rem,max-content);gap:2px 10px;align-items:center;padding:8px;border:1px solid rgba(23,32,26,.08);border-radius:8px;background:#ffffffc2}.pig-welcome-card.ready{border-color:#7ea86d6b;box-shadow:inset 0 0 0 1px #ffffff94}.pig-welcome-card>strong,.pig-welcome-card>span,.pig-welcome-card>em{min-width:0}.pig-welcome-card>em{color:#6b604f;font-size:.74rem;font-style:normal;grid-column:1}.pig-welcome-card button{grid-column:2;grid-row:1 / span 3;min-height:44px}.pig-roster li{display:grid;gap:2px;padding:8px 10px;border-radius:8px;background:#ffffffb8;border:1px solid rgba(23,32,26,.08)}.pig-roster strong{font-size:.9rem}.pig-roster span{color:#5f6a5e;font-size:.78rem}.pig-roster span.pig-relationship{color:#456349;font-weight:750}.pig-roster span.pig-welcome-discovery{color:#5d4f2f;font-weight:720}.pig-roster li.empty-state,.goals li.empty-state,#record-list li.empty-state,#event-log li.empty-state{display:block;color:#687365;background:#ffffff94;border:1px dashed rgba(23,32,26,.14);font-size:.8rem;font-weight:650;line-height:1.35}.goals{display:grid;gap:10px}.goals ul{display:grid;gap:6px;margin:0;padding:0;list-style:none}.goals li{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:30px;padding:6px 8px;border:1px solid rgba(23,32,26,.08);border-radius:8px;background:#ffffffad;color:#4f594f;font-size:.8rem}.goals li.complete{color:#697366;background:#d9ead08f}.goals li strong{flex:0 0 auto;color:#243126;font-size:.76rem}#contract-list{gap:8px}.goals li.contract-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:5px 10px;min-height:0;padding:10px;border-color:#5076522e;background:#fafff6bd}.goals li.contract-card.active-contract{border-color:#7ea86d5c;background:#f3faece6}.goals li.contract-card>span{min-width:0;color:#263729;font-size:.88rem;font-weight:800}.goals li.contract-card>strong{color:#546050;font-size:.72rem;font-weight:800}.goals li.contract-card>em,.goals li.contract-card>small{grid-column:1 / -1;color:#5f6d5c;font-size:.76rem;font-style:normal;line-height:1.3}.goals li.contract-card>small{color:#47623e;font-weight:800}.contract-requirements{display:grid;grid-column:1 / -1;gap:5px;margin:4px 0 0;padding:0;list-style:none}.goals .contract-requirements li{display:grid;grid-template-columns:minmax(0,1fr) auto;min-height:0;padding:5px 7px;border-color:#17201a12;background:#ffffff9e;font-size:.74rem}.goals .contract-requirements li.complete{color:#53694d;background:#d9ead0ad}.goals .contract-requirements span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.goals .contract-requirements strong{color:#364835;font-size:.72rem}.contract-actions{display:flex;grid-column:1 / -1;justify-content:flex-end;margin-top:2px}.contract-select-button{min-height:30px;padding:6px 10px;font-size:.76rem}.goals li.contract-result{display:grid;grid-template-columns:minmax(0,1fr) auto;border-color:#b8934d33;background:#fff7e1bd;font-weight:700}.goals li.contract-result.complete{border-color:#7ea86d3d;background:#f1f8ebd1}.log{display:grid;flex:0 0 auto;gap:10px;min-height:180px;overflow:hidden}#record-list{display:grid;gap:6px;max-height:140px;margin:0;padding:0;overflow:auto;list-style:none}#record-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;min-height:30px;padding:7px 9px;border:1px solid rgba(23,32,26,.08);border-radius:8px;background:#fafff6b8;color:#4f594f;font-size:.8rem}#record-list li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#record-list li strong{color:#47623e;font-size:.72rem}#event-log{max-height:220px;margin:0;padding-left:20px;overflow:auto;color:#485147;font-size:.88rem}#event-log li+li{margin-top:6px}#event-log li.empty-state{margin-left:-20px;padding:8px 10px;border-radius:8px;list-style:none}.danger-action{align-self:start;margin-top:10px;min-height:34px;padding:7px 10px;border:1px solid rgba(130,55,43,.24);color:#74372d;background:#f8e6e0c7;font-size:.78rem}.danger-action:hover:not(:disabled){background:#f0d6ce}#section-modal{width:min(620px,calc(100vw - 28px));max-height:min(760px,calc(100vh - 28px));margin:auto;padding:0;overflow:hidden;border:1px solid rgba(23,32,26,.16);border-radius:8px;color:var(--ink);background:transparent;box-shadow:0 24px 70px #17201a47}#section-modal.modal-wide{width:min(1120px,calc(100vw - 28px))}#section-modal::backdrop{background:#17201a57;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-shell{display:flex;flex-direction:column;max-height:inherit;background:#fffaf0}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line);background:#fffcf4f5}.modal-title-group{display:flex;min-width:0;align-items:center;gap:10px}.modal-section-icon{flex:0 0 auto;width:42px;height:38px;object-fit:contain;filter:drop-shadow(0 5px 6px rgba(31,48,35,.16))}#section-modal-title{margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-close{width:38px;height:34px;padding:0;border:1px solid rgba(23,32,26,.12);background:#fff;font-size:.82rem;line-height:1}.modal-body{min-height:0;overflow:auto;padding:14px}.section-panel[hidden],.automation-directives[hidden],.furniture-care-list[hidden],.ecology-list[hidden],.wisdom-specialization-panel[hidden]{display:none!important}.section-panel.has-available-actions{position:relative}.section-panel.has-available-actions:before{content:"";position:absolute;top:0;right:2px;width:58px;height:3px;border-radius:999px;background:linear-gradient(90deg,#7ea86d00,#7ea86dc7);pointer-events:none}.section-panel>h2:first-child{display:none}.modal-body .meters,.modal-body .shop,.modal-body .pig-roster,.modal-body .goals,.modal-body .log{box-shadow:none}.modal-body .pig-roster ul{max-height:360px}.modal-body #event-log{max-height:420px}#dev-tools{position:fixed;top:18px;left:276px;bottom:auto;z-index:1000;display:grid;gap:8px;width:min(220px,calc(100vw - 36px));pointer-events:none}#dev-tools button,#dev-tools a{pointer-events:auto}.dev-tools-toggle{width:52px;min-height:34px;background:#fff;border:1px solid rgba(23,32,26,.16);box-shadow:0 8px 20px #1f30231f}.dev-tools-panel{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px;border:1px solid rgba(23,32,26,.14);border-radius:8px;background:#fffcf4f5;box-shadow:0 12px 28px #1f302329;pointer-events:auto}.dev-tools-nav{grid-column:1 / -1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding-bottom:8px;border-bottom:1px solid rgba(23,32,26,.12)}.dev-tools-nav a{display:grid;min-height:30px;place-items:center;padding:6px 4px;border:1px solid rgba(23,32,26,.14);border-radius:6px;background:#ffffffc2;color:#2f3c32;font-size:.68rem;font-weight:850;line-height:1.05;overflow-wrap:anywhere;text-align:center;text-decoration:none}.dev-tools-nav a:hover,.dev-tools-nav a:focus-visible{border-color:#276f5b8a;color:#164f41}.dev-tools-nav a[aria-current=page]{border-color:#276f5b9e;background:#e8f3ec;color:#164f41}.dev-tools-panel[hidden]{display:none}.dev-tools-panel button{min-height:34px;padding:7px 8px;font-size:.74rem}@keyframes stat-pop{0%{transform:scale(1)}42%{color:#7a4b10;transform:scale(1.22)}to{transform:scale(1)}}@keyframes contract-progress-pop{0%{color:inherit;text-shadow:0 0 0 rgba(240,213,107,0);transform:scale(1)}40%{color:#7a4b10;text-shadow:0 0 12px rgba(240,213,107,.68);transform:scale(1.08)}to{color:inherit;text-shadow:0 0 0 rgba(240,213,107,0);transform:scale(1)}}@keyframes dock-urgent-pulse{0%,to{box-shadow:inset 0 0 0 2px #ffffff2e,0 0 #f2b36f00}50%{box-shadow:inset 0 0 0 2px #ffffff3d,0 0 0 4px #f2b36f47}}@keyframes dock-reveal-pop{0%{transform:translateY(4px) scale(.96);box-shadow:0 0 #7ea86d00}42%{transform:translateY(-2px) scale(1.04);box-shadow:0 0 0 5px #7ea86d2e}to{transform:translateY(0) scale(1);box-shadow:0 0 #7ea86d00}}@keyframes button-attention-pulse{0%,to{box-shadow:inset 0 0 0 2px #7b5d1a1f,0 0 #f0d56b00}50%{box-shadow:inset 0 0 0 2px #7b5d1a2e,0 0 0 4px #f0d56b3d}}@keyframes action-success-flash{0%{box-shadow:inset 0 0 0 1px #ffffff80,0 0 #f0d56b00}42%{border-color:#7b5d1a7a;background:#fff5c6;box-shadow:inset 0 0 0 2px #ffffffb3,0 0 0 5px #f0d56b57}to{box-shadow:inset 0 0 0 1px #ffffff2e,0 0 #f0d56b00}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:1ms!important}}@media(max-width:1180px){.topbar{padding:12px}.stats{gap:7px;scrollbar-gutter:stable}.stats div{padding:7px 8px}}@media(max-width:900px){#app{padding:10px}#game-shell{height:100%;display:flex;flex-direction:column}.topbar{align-items:center;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;grid-template-areas:"brand actions" "stats stats";min-height:128px;overflow:visible;padding:14px 16px}.topbar-actions{justify-content:flex-end;min-width:248px}.stats{grid-template-columns:repeat(9,minmax(74px,1fr));overflow-x:auto;overflow-y:hidden;padding-right:0;padding-bottom:4px}#canvas-wrap{grid-area:auto;min-height:0}.layout{flex:1;display:grid;grid-template-columns:minmax(0,1fr);min-height:0;overflow:hidden}.play-area{display:grid;grid-template-rows:minmax(0,1fr) auto auto;gap:12px;min-height:0;overflow:hidden}.care-strip{grid-area:auto;grid-template-columns:repeat(2,minmax(0,1fr))}.quick-contract{grid-column:1 / -1}.section-dock{grid-area:auto;display:flex;overflow-x:auto;overflow-y:hidden;padding-bottom:12px;scrollbar-gutter:stable}.dock-button{flex:0 0 76px}.tech-tree{min-height:min(66vh,650px);max-height:min(70vh,720px)}#dev-tools{top:152px;left:10px}}@media(max-width:520px){#app{padding:8px}#game-shell{gap:10px}.topbar{gap:10px;grid-template-columns:minmax(0,1fr);grid-template-areas:"brand" "actions" "stats";min-height:172px;padding:10px}.brand{align-items:flex-start}.brand-mark{margin-top:2px}h1{font-size:1.05rem}#status-line{font-size:.82rem}.topbar-actions{justify-content:flex-start;min-width:0}#section-modal.modal-wide{width:min(620px,calc(100vw - 18px))}.tech-tree{min-height:560px;max-height:62vh;padding:8px}.stats{display:flex;overflow-x:auto;padding-bottom:4px}.stats div{flex:0 0 82px;min-width:82px;padding:7px 8px}.care-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:8px}.quick-meter{grid-template-columns:1fr;gap:6px;padding:7px}.quick-meter button{min-height:28px;padding:5px;font-size:.72rem}.quick-contract{grid-column:1 / -1;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:6px;min-height:34px;padding:7px}.quick-contract span{font-size:.66rem}.section-dock{padding:8px}.dock-button{grid-template-rows:34px auto;flex-basis:68px;min-height:64px;padding:6px 5px}.dock-button img{width:36px;height:32px}.tutorial-hint{left:10px;bottom:10px;max-width:calc(100% - 20px);padding:8px 8px 8px 10px}.pig-welcome-card{grid-template-columns:minmax(0,1fr)}.pig-welcome-card button,.pig-welcome-card>em{grid-column:1;grid-row:auto}.tutorial-hint span{font-size:.78rem}.modal-section-icon{width:34px;height:31px}.modal-body{padding:10px}.modal-body .shop button{grid-template-columns:minmax(0,1fr)}.modal-body .shop button strong{justify-self:start;max-width:100%;text-align:left}#dev-tools{top:152px;left:8px}}
