:root{color:#2b4035;font-synthesis:none;--cream:#fff8e8;--ink:#293e33;--teal:#236b5c;--coral:#f1a396;--gold:#efd078;background:#b7d8d0;font-family:ui-rounded,Avenir Next,Avenir,Trebuchet MS,sans-serif;font-weight:500}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,input,select{font:inherit}button{cursor:pointer;color:inherit;border:0}button:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible{outline-offset:5px;outline:3px solid #da6e53}button:disabled{cursor:wait;opacity:.6}button:hover{filter:brightness(1.05)}button:active{transform:translateY(1px)}[hidden]{display:none!important}canvas{touch-action:none;outline:none;width:100%;height:100%;display:block}#app,.world{position:fixed;inset:0}.ui{pointer-events:none;position:fixed;inset:0}.ui button,.ui input,.ui select,.ui a,.panel{pointer-events:auto}.topbar{justify-content:space-between;align-items:center;gap:16px;display:flex;position:absolute;top:25px;left:32px;right:32px}.brand{color:#fffaf0;text-shadow:0 2px 8px #27423544;letter-spacing:.02em;align-items:center;gap:12px;font-size:16px;font-weight:900;line-height:1.03;display:flex}.snout{color:#9d4e58;letter-spacing:3px;background:#f5b0a3;border:3px solid #fff1df;border-radius:45% 45% 42% 42%;place-items:center;width:45px;height:38px;font-size:23px;display:grid;box-shadow:0 3px #33463620}.top-actions{align-items:center;gap:9px;display:flex}.chip,.icon-button{background:#fff9e9ee;border:1px solid #fff8;box-shadow:0 3px 12px #283d3020}.chip{letter-spacing:.1em;text-transform:uppercase;border-radius:99px;padding:11px 16px;font-size:11px;font-weight:850}.icon-button{border-radius:50%;width:42px;height:42px;font-size:19px}.title-panel{background:linear-gradient(130deg,#fff9eafa,#fff7e6ee);border:1px solid #fff9;border-radius:8px 44px;width:min(430px,40vw);padding:36px 32px 30px;position:absolute;top:50%;left:6%;transform:translateY(-45%);box-shadow:0 18px 60px #2c49232b}.eyebrow{text-transform:uppercase;letter-spacing:.18em;color:#68806a;margin:0 0 16px;font-size:10px;font-weight:900}.title-panel h1{letter-spacing:-.045em;margin:0;font-size:clamp(34px,4.2vw,62px);font-weight:950;line-height:.99}.title-panel h1 em{color:#c97059;font-style:normal;display:block}.title-panel .intro{color:#5e6b59;max-width:32ch;margin:22px 0;font-size:15px;line-height:1.65}.primary{background:var(--teal);color:#fff9e8;border-radius:13px;justify-content:space-between;align-items:center;gap:24px;width:100%;padding:17px 22px;font-size:15px;font-weight:850;display:flex;box-shadow:0 4px #174b42}.primary span:last-child{font-size:20px}.secondary{color:#496151;background:#e8e7d4;border-radius:10px;padding:12px 16px;font-size:13px;font-weight:800}.subtle{color:#6e7763;background:0 0;padding:12px 0;font-size:12px;font-weight:750}.title-links{justify-content:space-between;gap:12px;margin-top:15px;display:flex}.stamp{text-transform:uppercase;letter-spacing:.12em;color:#7e8972;border-top:1px solid #dedec8;align-items:center;gap:10px;margin-top:17px;padding-top:16px;font-size:10px;display:flex}.stamp b{color:#b6a65e;font-size:17px}.chapter-note{text-align:right;color:#ffffed;text-shadow:0 2px 5px #20352288;line-height:1.5;position:absolute;bottom:100px;right:40px}.chapter-note span{letter-spacing:.16em;text-transform:uppercase;font-size:10px;font-weight:850}.chapter-note strong{letter-spacing:-.03em;font-size:29px;display:block}.footer{justify-content:space-between;align-items:center;gap:15px;display:flex;position:absolute;bottom:24px;left:32px;right:32px}.control-strip{color:#50634e;background:#fff9e9ef;border-radius:99px;align-items:center;gap:17px;padding:12px 19px;font-size:11px;display:flex;box-shadow:0 3px 12px #2c492322}.control-strip span{white-space:nowrap}kbd{color:#3c5547;background:#e9e7d4;border:1px solid #d4d8bc;border-bottom:2px solid #c4caa8;border-radius:4px;margin-right:4px;padding:3px 5px;font:800 10px ui-monospace,monospace;display:inline-block}.quiet-note{color:#fff9e8;letter-spacing:.04em;text-shadow:0 1px 3px #19391e88;font-size:10px;font-weight:700}.objective{background:#fff8e8f2;border-radius:16px;max-width:330px;padding:18px 22px;position:absolute;top:100px;left:32px;box-shadow:0 6px 20px #203c2220}.objective .eyebrow{margin-bottom:7px;font-size:9px}.objective strong{font-size:17px;line-height:1.35;display:block}.objective p{color:#66745e;margin:7px 0 0;font-size:12px;line-height:1.5}.ability{background:#fff8e8f2;border-radius:15px;min-width:172px;padding:15px 18px;position:absolute;bottom:91px;right:32px;box-shadow:0 6px 20px #203c2220}.ability-top{justify-content:space-between;align-items:center;gap:14px;font-size:13px;font-weight:850;display:flex}.ability small{color:#6e7a64;margin:7px 0;font-size:10px;display:block}.ability progress{accent-color:#419a80;background:#e5e5cf;border:0;border-radius:5px;width:100%;height:5px;display:block;overflow:hidden}.ability progress::-webkit-progress-bar{background:#e5e5cf}.ability progress::-webkit-progress-value{background:#419a80}.modal-wrap{-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);pointer-events:auto;background:#172f2266;place-items:center;padding:24px;display:grid;position:absolute;inset:0}.modal{background:var(--cream);border-radius:28px;width:min(480px,100%);max-height:88vh;padding:34px;overflow:auto;box-shadow:0 20px 80px #102b3260}.modal h2{letter-spacing:-.04em;margin:7px 0 13px;font-size:35px;line-height:1.1}.modal p{color:#64705a;font-size:14px;line-height:1.65}.menu-stack{gap:12px;margin-top:24px;display:grid}.menu-stack .secondary{text-align:center;padding:15px}.settings-grid{gap:15px;margin:20px 0;display:grid}.setting{grid-template-columns:1fr 140px;align-items:center;gap:15px;font-size:12px;display:grid}.setting input[type=range]{width:140px;accent-color:var(--teal)}.setting select,.mapping input{color:#3b5141;background:#fffdf4;border:1px solid #ced2b6;border-radius:7px;min-width:0;padding:7px}.mapping{grid-template-columns:1fr 130px;align-items:center;gap:14px;margin:10px 0;font-size:12px;display:grid}.mapping input{width:130px;font:11px monospace}.controls-list{grid-template-columns:1fr 1fr;gap:12px;padding:12px 0;font-size:12px;display:grid}.controls-list dt{color:#6a765e}.controls-list dd{margin:0;font-weight:800}.loading{pointer-events:auto;z-index:10;background:#eaf0da;flex-direction:column;justify-content:center;align-items:center;gap:20px;display:flex;position:absolute;inset:0}.loading .snout{width:68px;height:56px;font-size:30px}.loading p{color:#708468;font-size:13px}.loading strong{font-size:22px}.toast{text-align:center;background:#fff7d9;border-radius:99px;max-width:80vw;padding:12px 22px;font-size:13px;font-weight:750;position:absolute;top:25%;left:50%;transform:translate(-50%);box-shadow:0 6px 30px #29402544}.debug-panel{color:#d1edd7;pointer-events:auto;white-space:pre-wrap;background:#17352fed;border-radius:12px;min-width:260px;max-height:65vh;padding:16px;font:11px/1.7 monospace;position:absolute;top:82px;right:22px;overflow:auto}.debug-panel button{color:#fff;background:#427363;border-radius:6px;margin:8px 4px 0 0;padding:7px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}a{color:var(--teal)}@media (max-width:800px){.topbar{top:16px;left:18px;right:18px}.chip{display:none}.title-panel{width:340px;max-width:75vw;padding:27px;left:22px}.title-panel h1{font-size:45px}.title-panel .intro{font-size:13px}.chapter-note{bottom:105px;right:22px}.chapter-note strong{font-size:21px}.footer{bottom:16px;left:18px;right:18px}.control-strip{gap:9px;padding:10px 12px;font-size:10px}.quiet-note{display:none}.objective{max-width:280px;top:80px;left:18px}.ability{bottom:76px;right:18px}.brand{font-size:13px}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto;transition:none}}.journal-button{color:#365e49;background:#edf0dc;border:1px solid #d4ddc3;border-radius:10px;justify-content:space-between;align-items:center;gap:12px;width:100%;margin-top:14px;padding:10px 12px;font-size:11px;font-weight:750;display:flex}.journal-button b{color:#287362;font-variant-numeric:tabular-nums;margin-left:8px}.journal-button kbd{font-size:9px}.journal-modal{width:min(850px,100%)}.journal-heading{justify-content:space-between;align-items:center;gap:20px;display:flex}.journal-heading .eyebrow{margin:0 0 8px}.journal-heading h2{margin-bottom:0}.journal-tally{color:var(--teal);align-items:center;gap:4px;font-size:46px;font-weight:900;line-height:1;display:flex}.journal-tally>span{color:#6d7e65;white-space:nowrap;font-size:11px;font-weight:700;line-height:1.7}.journal-intro{max-width:65ch}.journal-layout{grid-template-columns:1.2fr 1fr;align-items:start;gap:24px;margin-top:22px;display:grid}.valley-map{margin:0}.valley-map svg{width:100%;font-family:inherit;display:block;overflow:visible}.map-ground{fill:#e6ecd2;stroke:#d5dec0;stroke-width:2px}.map-brook{fill:none;stroke:#accfc3;stroke-width:8px;stroke-linecap:round}.map-trails{fill:none;stroke:#c7b779;stroke-width:6px;stroke-linecap:round;stroke-linejoin:round}.map-landmark circle{fill:#fff8e8;stroke:#6a8768;stroke-width:2px}.map-landmark.is-found circle{fill:#397660;stroke:#397660}.map-number{text-anchor:middle;fill:#416148;font-size:12px;font-weight:900}.map-landmark.is-found .map-number{fill:#fff8e8}.map-place{fill:#435e45;text-anchor:middle;paint-order:stroke;stroke:#e6ecd2;stroke-width:5px;stroke-linejoin:round;font-size:11px;font-weight:800}.map-pip circle:first-child{fill:#d9755c;stroke:#fff8e8;stroke-width:3px}.map-pip circle:nth-child(2){fill:none;stroke:#d9755c;stroke-width:1.5px}.map-pip text{text-anchor:middle;fill:#a1463a;paint-order:stroke;stroke:#fff8e8;stroke-width:4px;stroke-linejoin:round;font-size:11px;font-weight:900}.map-north{fill:#63795f;text-anchor:middle;font-size:10px;font-weight:900}.valley-map figcaption{color:#6a7b62;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:10px 4px;font-size:9px;display:flex}.pip-key{background:#d9755c;border-radius:50%;width:8px;height:8px;margin-right:3px;display:inline-block}.journal-places{gap:14px;margin:0;padding:0;list-style:none;display:grid}.journal-places li{align-items:flex-start;gap:10px;display:flex}.place-stamp{color:#6f865f;border:1px dashed #99ac88;border-radius:50%;flex-shrink:0;place-items:center;width:28px;height:28px;font-size:12px;font-weight:800;display:grid}.journal-places .is-found .place-stamp{color:#fff8e8;background:#34705c;border:1px solid #34705c}.journal-places strong{font-size:13px;display:block}.place-status{color:#7a886d;margin-top:3px;font-size:10px;display:block}.journal-places p{margin:5px 0 0;font-size:11px;line-height:1.4}.journal-optional{background:#f2edce;border-radius:13px;align-items:center;gap:12px;margin-top:22px;padding:12px 16px;display:flex}.journal-optional>span{color:#b89848;font-size:24px}.journal-optional p{margin:0;font-size:11px;line-height:1.5}.journal-optional strong{color:#60704e;display:block}@media (max-width:650px){.journal-modal{padding:24px}.journal-layout{grid-template-columns:1fr;gap:16px}.journal-heading h2{font-size:29px}.journal-tally{font-size:34px}.journal-places{grid-template-columns:1fr 1fr}.objective{max-width:250px;padding:14px 16px}.objective strong{font-size:15px}.objective>p:not(.eyebrow){display:none}}.pig-roster{pointer-events:auto;background:#fff8e8f2;border-radius:16px;padding:12px;position:absolute;bottom:91px;left:32px;box-shadow:0 6px 20px #203c2220}.pig-roster p{color:#50634e;margin:0 0 8px;font-size:11px}.roster-buttons{gap:5px;display:flex}.roster-buttons button{color:#344d40;background:#e9ead7;border:2px solid #0000;border-radius:10px;align-items:center;gap:6px;padding:8px 10px;font-size:12px;display:flex}.roster-buttons button[aria-pressed=true]{background:#d8ebd9;border-color:#397866}.roster-buttons button[aria-disabled=true]{opacity:.65}.active-pig-name{text-transform:uppercase;letter-spacing:.1em;color:#55715d;margin-bottom:7px;font-size:11px}.ability-secondary{justify-content:space-between;align-items:center;gap:12px;margin-top:9px;font-size:12px;display:flex}.ability{max-width:310px}.control-strip{flex-wrap:wrap}@media (max-width:800px){.pig-roster{padding:8px;bottom:155px;left:16px}.roster-buttons button{padding:6px}.ability{max-width:245px}.quiet-note{display:none}}
