:root{--bark: #4a3728;--bark-soft: #7a6553;--paper: #f6f1e4;--paper-raised: #fffdf7;--moss: #2f5d3f;--moss-light: #4e8a62;--moss-tint: #e3efe6;--clay: #c2663a;--clay-tint: #f7e6dc;--sky: #3d6d8f;--sky-tint: #e2edf4;--sand: #e8dcc0;--gold: #d9a441;--ink: #241c14;--radius: 16px;--radius-lg: 24px;--tap: 44px;--shadow: 0 2px 0 rgba(74, 55, 40, .18);--font: "Trebuchet MS", "Segoe UI", system-ui, -apple-system, sans-serif;--font-letter: "Comic Sans MS", "Trebuchet MS", sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{font-family:var(--font);background:var(--paper);color:var(--ink);font-size:18px;line-height:1.5;overscroll-behavior:none}.no-scroll{overflow:hidden;touch-action:manipulation}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none;color:inherit}.app{height:100%;display:flex;flex-direction:column}.btn{min-height:var(--tap);min-width:var(--tap);padding:14px 24px;border-radius:var(--radius);background:var(--paper-raised);border:2px solid var(--bark-soft);box-shadow:var(--shadow);font-weight:600;transition:transform .08s ease}.btn:active{transform:translateY(2px);box-shadow:none}.btn-primary{background:var(--moss);border-color:var(--moss);color:#fff}.btn-big{font-size:24px;padding:20px 40px;border-radius:var(--radius-lg)}.btn-quiet{background:transparent;border-color:transparent;box-shadow:none;color:var(--bark-soft);text-decoration:underline}.btn:disabled{opacity:.45;cursor:default}.screen{flex:1;display:flex;flex-direction:column;padding:20px 24px;gap:16px;min-height:0}.topbar{display:flex;align-items:center;gap:16px;min-height:56px}.topbar h1{font-size:22px;margin:0;flex:1}.goal{background:var(--sand);border-radius:var(--radius);padding:8px 16px;font-size:15px;font-weight:600;color:var(--bark)}.stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;text-align:center;min-height:0}.card{background:var(--paper-raised);border:2px solid var(--sand);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow)}.row{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;align-items:center}.col{display:flex;flex-direction:column;gap:12px}.spacer{flex:1}.word-big{font-size:72px;font-weight:700;letter-spacing:2px;font-family:var(--font-letter)}.grapheme{display:inline-block;padding:2px 6px;border-radius:8px}.grapheme-irregular{background:var(--clay-tint);outline:3px dashed var(--clay);outline-offset:2px;text-decoration:underline wavy var(--clay) 3px;text-underline-offset:8px}.grapheme-known{background:var(--moss-tint)}.tiles{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.tile{min-width:68px;min-height:80px;font-size:40px;font-family:var(--font-letter);font-weight:700;background:var(--paper-raised);border:3px solid var(--bark-soft);border-radius:14px;box-shadow:var(--shadow);display:flex;align-items:center;justify-content:center}.tile:active{transform:translateY(2px)}.tile-placed{background:var(--moss-tint);border-color:var(--moss)}.slots{display:flex;gap:10px;justify-content:center;min-height:92px;align-items:center}.slot{min-width:68px;min-height:80px;border:3px dashed var(--bark-soft);border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:40px;font-family:var(--font-letter);font-weight:700;background:#ffffff80}.feedback{font-size:22px;font-weight:600;padding:12px 20px;border-radius:var(--radius);min-height:56px;display:flex;align-items:center;gap:10px}.feedback-good{background:var(--moss-tint);color:var(--moss)}.feedback-again{background:var(--sky-tint);color:var(--sky)}.helper{color:var(--bark-soft);font-size:16px}.pips{display:flex;gap:8px}.pip{width:14px;height:14px;border-radius:50%;background:var(--sand)}.pip-done{background:var(--moss)}.pip-now{background:var(--gold);transform:scale(1.3)}.wallet{display:flex;gap:16px;align-items:center;font-weight:700;color:var(--bark)}.wallet span{background:var(--sand);border-radius:999px;padding:6px 14px;display:inline-flex;align-items:center;gap:6px}.island-wrap{position:relative;width:fit-content;max-width:100%;border-radius:var(--radius-lg);border:2px solid var(--sand);box-shadow:var(--shadow);padding:10px}.island-wrap .island-grid{position:relative}.island-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:6px;max-width:640px;width:100%}.island-cell{aspect-ratio:1;border-radius:10px;background:#ffffff47;border:2px solid rgba(74,55,40,.14);display:flex;align-items:center;justify-content:center}.zone-residents{position:absolute;right:12px;bottom:6px;display:flex;gap:2px;align-items:flex-end}.zone-residents,.zone-residents *{pointer-events:none;line-height:0}.island-cell-filled{background:#fffdf7b3;border-color:var(--bark-soft)}.dash{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:40px}.tabs{display:flex;gap:8px;flex-wrap:wrap}.tab{padding:10px 18px;border-radius:999px;border:2px solid var(--sand);background:var(--paper-raised);font-weight:600;min-height:var(--tap)}.tab-active{background:var(--moss);border-color:var(--moss);color:#fff}table.data{width:100%;border-collapse:collapse;font-size:15px}table.data th,table.data td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--sand);vertical-align:top}table.data th{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--bark-soft)}.chip{display:inline-block;padding:2px 10px;border-radius:999px;font-size:13px;font-weight:600;border:1px solid transparent}.chip-secure{background:var(--moss-tint);color:var(--moss)}.chip-retained{background:var(--sky-tint);color:var(--sky)}.chip-independent{background:var(--sand);color:var(--bark)}.chip-supported,.chip-introduced{background:#f0ece2;color:var(--bark-soft)}.chip-applied{background:var(--moss-tint);color:var(--moss-light)}.chip-none{background:transparent;color:var(--bark-soft);border-color:var(--sand);font-style:italic}.chip-warn{background:var(--clay-tint);color:var(--clay)}.note{background:var(--sky-tint);border-left:4px solid var(--sky);padding:12px 16px;border-radius:8px;font-size:15px}.warn{background:var(--clay-tint);border-left:4px solid var(--clay);padding:12px 16px;border-radius:8px;font-size:15px}.trace-wrap{position:relative;width:min(420px,80vw);aspect-ratio:1}.trace-wrap svg,.trace-wrap canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;touch-action:none}.companion{position:absolute;left:18px;bottom:14px;display:flex;align-items:flex-end;gap:10px;pointer-events:none;z-index:5;max-width:44%}.companion-art{flex:none;filter:drop-shadow(0 3px 0 rgba(74,55,40,.14))}.bubble{position:relative;background:var(--paper-raised);border:2px solid var(--sand);border-radius:18px;padding:10px 16px;font-size:17px;font-weight:600;color:var(--bark);box-shadow:var(--shadow);margin-bottom:18px}.bubble:after{content:"";position:absolute;left:-9px;bottom:14px;width:14px;height:14px;background:var(--paper-raised);border-left:2px solid var(--sand);border-bottom:2px solid var(--sand);transform:rotate(45deg)}.bubble-in{animation:bubble-pop .45s cubic-bezier(.34,1.56,.64,1)}@keyframes bubble-pop{0%{transform:scale(.6) translateY(8px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}.bob{animation:bob 1.6s ease-in-out infinite}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.screen{position:relative}.screen-foot{display:flex;flex-direction:column;align-items:center;gap:6px;padding-left:230px;min-height:20px}.pop-in{animation:pop-in .34s cubic-bezier(.34,1.56,.64,1)}@keyframes pop-in{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}.tile-drop{animation:tile-drop .22s ease-out}@keyframes tile-drop{0%{transform:translateY(-14px) scale(1.08)}70%{transform:translateY(2px) scale(.98)}to{transform:translateY(0) scale(1)}}.shake{animation:shake .4s ease-in-out}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.cheer{animation:cheer .5s cubic-bezier(.34,1.56,.64,1)}@keyframes cheer{0%{transform:scale(1)}45%{transform:scale(1.14) rotate(-2deg)}to{transform:scale(1) rotate(0)}}.glow{animation:glow 1.2s ease-in-out infinite}@keyframes glow{0%,to{filter:drop-shadow(0 0 0 rgba(217,164,65,0))}50%{filter:drop-shadow(0 0 10px rgba(217,164,65,.8))}}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:40}.confetti i{position:absolute;top:-20px;width:11px;height:14px;border-radius:2px;animation:fall linear forwards}@keyframes fall{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(105vh) rotate(540deg);opacity:.1}}.arrival{position:fixed;top:0;right:0;bottom:0;left:0;background:#241c148c;display:flex;align-items:center;justify-content:center;z-index:50;padding:24px}.arrival-card{background:var(--paper-raised);border:3px solid var(--gold);border-radius:var(--radius-lg);padding:28px 36px;max-width:480px;text-align:center;box-shadow:0 10px #4a372833;animation:arrive .5s cubic-bezier(.34,1.56,.64,1)}@keyframes arrive{0%{transform:scale(.5) translateY(30px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}.album-scroll{flex:1;width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;justify-content:center;padding-bottom:12px;min-height:0}.album-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:14px;width:100%;max-width:920px}.album-slot svg,.album-slot>div{flex:none}.album-slot{background:var(--paper-raised);border:2px solid var(--sand);border-radius:var(--radius);padding:12px 10px;text-align:center;min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.album-slot-empty{background:repeating-linear-gradient(45deg,rgba(232,220,192,.3),rgba(232,220,192,.3) 8px,transparent 8px,transparent 16px);border-style:dashed;color:var(--bark-soft)}.album-name{font-weight:700;font-size:17px}.album-note{font-size:13px;color:var(--bark-soft);line-height:1.3}.album-word{font-family:var(--font-letter);font-weight:700;color:var(--moss);font-size:15px}.themed{background:var(--zone-wash, transparent)}.themed .goal{background:var(--zone-accent, var(--sand));color:#fff}.themed .btn-primary,.themed .tab-active{background:var(--zone-accent, var(--moss));border-color:var(--zone-accent, var(--moss))}.activity-card{width:220px;min-height:190px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border-width:3px;transition:transform .12s ease,box-shadow .12s ease}.activity-card:active{transform:translateY(3px) scale(.98);box-shadow:none}.activity-card:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.streak{display:inline-flex;align-items:center;gap:6px;background:var(--gold);color:var(--ink);font-weight:700;border-radius:999px;padding:6px 14px;font-size:15px}.reduced-motion *{transition:none!important;animation:none!important}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}.award{position:fixed;top:0;right:0;bottom:0;left:0;background:#241c1499;display:flex;align-items:center;justify-content:center;z-index:60;padding:18px;overflow:auto}.award-body{display:flex;flex-direction:column;align-items:center}.certificate{width:min(860px,88vw);aspect-ratio:297 / 210;background:var(--paper-raised);border:10px double var(--gold);border-radius:6px;padding:10px;box-shadow:0 12px #4a372838;animation:arrive .5s cubic-bezier(.34,1.56,.64,1)}.certificate-inner{height:100%;border:2px solid var(--sand);border-radius:3px;padding:2.2% 4%;display:flex;flex-direction:column;align-items:center;justify-content:space-between;text-align:center}.cert-middle{margin:auto 0;display:flex;flex-direction:column;align-items:center;width:100%}.cert-eyebrow{margin:0;letter-spacing:.32em;text-transform:uppercase;font-size:clamp(10px,1.3vw,14px);color:var(--bark-soft)}.cert-stage{margin:.2em 0 0;font-size:clamp(22px,3.6vw,40px);color:var(--moss)}.cert-stage-name{margin:0;font-size:clamp(12px,1.7vw,19px);color:var(--bark-soft);font-style:italic}.cert-awarded{margin:.6em 0 0;font-size:clamp(11px,1.4vw,15px);color:var(--bark-soft)}.cert-name{margin:0;font-family:var(--font-letter);font-size:clamp(30px,5.2vw,58px);font-weight:700;color:var(--clay);line-height:1.1}.cert-for{margin:.5em 0 0;font-size:clamp(11px,1.5vw,16px);max-width:80%;color:var(--bark)}.cert-words{margin:.35em 0 0;font-family:var(--font-letter);font-weight:700;font-size:clamp(14px,2.1vw,24px);color:var(--moss);line-height:1.5;max-width:92%}.cert-words-many{font-size:clamp(11px,1.5vw,17px);line-height:1.45}.cert-foot{margin-top:auto;display:flex;align-items:flex-end;justify-content:center;gap:clamp(10px,2.4vw,30px);width:100%;padding-top:.6em}.cert-sig{display:flex;flex-direction:column;align-items:center;font-size:clamp(9px,1.1vw,12px);color:var(--bark-soft)}.cert-sig svg{flex:none}.cert-date{display:flex;flex-direction:column;align-items:center;font-size:clamp(10px,1.2vw,13px);color:var(--bark-soft);border-top:2px solid var(--sand);padding-top:4px;min-width:26%}.cert-creatures{display:flex;gap:6px;margin-top:.5em;justify-content:center;opacity:.9}.cert-creatures svg{flex:none}@media print{@page{size:A4 landscape;margin:10mm}body{background:#fff}.app>.screen,.companion,.confetti,.no-print,.arrival{display:none!important}.award{position:static;background:none;padding:0;display:block}.certificate{width:277mm;height:190mm;aspect-ratio:auto;margin:0 auto;box-shadow:none;animation:none;page-break-inside:avoid}.cert-stage{font-size:34pt}.cert-stage-name{font-size:13pt}.cert-name{font-size:46pt}.cert-awarded{font-size:11pt}.cert-for{font-size:12pt}.cert-words{font-size:20pt}.cert-words-many{font-size:14pt}.cert-eyebrow{font-size:11pt}.cert-sig{font-size:9pt}.cert-date{font-size:10pt}.print-only-sheet~*,.dash,.topbar{display:none!important}}.cert-list{display:flex;flex-direction:column;gap:10px}.cert-row{display:flex;align-items:center;gap:14px;background:var(--paper-raised);border:2px solid var(--sand);border-left:6px solid var(--gold);border-radius:var(--radius);padding:12px 16px}.cert-row-main{flex:1;min-width:0}.finding{background:var(--paper-raised);border:2px solid var(--sand);border-left:6px solid var(--clay);border-radius:var(--radius);padding:14px 18px;display:flex;flex-direction:column;gap:6px}.finding h3{margin:0;font-size:19px}.finding-area{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--bark-soft);font-weight:700}.finding-count{background:var(--clay-tint);color:var(--clay);border-radius:999px;padding:2px 10px;font-size:13px;font-weight:700;white-space:nowrap}.finding-do{background:var(--moss-tint);border-radius:8px;padding:8px 12px;font-size:15px}.finding-evidence{font-size:13px;color:var(--bark-soft)}input[type=range]{accent-color:var(--moss);height:var(--tap)}input[type=checkbox]{accent-color:var(--moss);width:22px;height:22px}.home{flex:1;display:flex;flex-direction:column;align-items:center;gap:12px;min-height:0;width:100%}.home-island{display:flex;flex-direction:column;align-items:center;gap:6px}.home-island-land{position:relative;width:fit-content;border-radius:var(--radius-lg);border:3px solid var(--sand);box-shadow:var(--shadow);padding:8px;overflow:hidden}.home-grid{display:grid;gap:4px}.home-cell{aspect-ratio:1;border-radius:7px;background:#fff3;display:flex;align-items:center;justify-content:center}.island-overlay,.home-weather-wash,.home-me,.home-residents{position:absolute;pointer-events:none}.island-overlay,.home-weather-wash{top:0;right:0;bottom:0;left:0;width:100%;height:100%}.home-me{right:10px;bottom:2px;filter:drop-shadow(0 3px 0 rgba(74,55,40,.18))}.home-residents{left:10px;bottom:4px;display:flex;gap:2px;align-items:flex-end}.home-day{margin:0;font-size:15px;color:var(--bark-soft);text-align:center;max-width:620px}.home-places{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;max-width:940px}.place{width:108px;min-height:102px;padding:8px 6px;border-radius:var(--radius);background:var(--paper-raised);border:3px solid var(--sand);box-shadow:var(--shadow);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;transition:transform .1s ease}.place:active{transform:translateY(3px);box-shadow:none}.place:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.place-label{font-weight:700;font-size:15px;line-height:1.15;text-align:center}.place-blurb{font-size:11px;color:var(--bark-soft);text-align:center;line-height:1.2}.wardrobe{display:flex;gap:20px;align-items:flex-start;width:100%;max-width:900px;justify-content:center}.wardrobe-me{flex:none;width:220px;display:flex;flex-direction:column;align-items:center;gap:6px;background:var(--paper-raised);border:2px solid var(--sand);border-radius:var(--radius-lg);padding:12px;text-align:center}.wardrobe-me svg{flex:none}.wardrobe-rack{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}.rack{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:10px}.rack-item{background:var(--paper-raised);border:2px solid var(--sand);border-radius:var(--radius);padding:8px 4px;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:136px;box-shadow:var(--shadow)}.rack-item svg{flex:none}.rack-item-on{border-color:var(--moss);background:var(--moss-tint)}.rack-item-locked{background:#faf6ec}.rack-name{font-size:13px;font-weight:600;text-align:center;line-height:1.15}.rack-price{font-size:12px;color:var(--bark-soft);display:inline-flex;align-items:center;gap:3px;font-weight:700}.tree-svg{width:min(780px,96%);max-height:480px}.leaf{cursor:pointer}.leaf:focus-visible{outline:3px solid var(--gold)}.leaf:active ellipse{transform-box:fill-box;transform-origin:center;transform:scale(1.12)}.today-card{background:var(--paper-raised);border:2px solid var(--sand);border-left:6px solid var(--gold);border-radius:var(--radius-lg);padding:14px 22px;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:640px}.today-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:center}.today-figure{display:inline-flex;align-items:center;gap:6px;font-size:24px;font-weight:700;color:var(--bark)}.meet{display:flex;align-items:center;gap:14px;background:var(--paper-raised);border:2px solid var(--sand);border-radius:var(--radius-lg);padding:10px 16px;max-width:660px;box-shadow:var(--shadow)}.meet-art{flex:none}.meet-art svg{flex:none}.meet-words{flex:1;min-width:0}.meet-eyebrow{margin:0;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--bark-soft);font-weight:700}.meet-name{margin:0;font-size:23px;font-weight:700;font-family:var(--font-letter);color:var(--bark);line-height:1.1}.meet-note{margin:2px 0 0;font-size:13px;color:var(--bark-soft);line-height:1.3}.meet-buttons{display:flex;flex-direction:column;gap:6px;flex:none}.meet-buttons .btn{padding:8px 14px;min-height:40px;font-size:15px;white-space:nowrap}.album-slot-met{background:var(--paper-raised);border-style:solid;border-color:var(--sand)}.album-waiting{font-size:12px;color:var(--bark-soft);font-style:italic}
