:root{--bg:#0b0f1e;--panel:#141a30;--border:#2a3354;--text:#eef1fa;--muted:#8f98b8;--accent:#fc4;--button-bg:#222b4d;--paper:#f3eee3;--grid:#dde3e9;--ink:#1d2433;--ink-muted:#5b6475;--ink-accent:#d9480f;--card:#fffaf0;--serif:"Frank Ruhl Libre", "Times New Roman", serif;--hand:"Amatic SC", cursive;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--paper);-webkit-tap-highlight-color:transparent;font-family:Rubik,system-ui,-apple-system,Segoe UI,Arial,sans-serif}html,body{background:var(--paper);min-height:100%;margin:0}.home,.notebook,.lab-static,.topbar,.lab .panel,.lab .sheet{--text:var(--ink);--muted:var(--ink-muted);--accent:var(--ink-accent);--border:var(--ink);--panel:var(--paper);--button-bg:var(--card);color:var(--ink);background-color:var(--paper);background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-size:18px 18px}button{min-height:44px;font:inherit;color:var(--text);background:var(--button-bg);border:1.5px solid var(--border);cursor:pointer;border-radius:12px;padding:0 14px;font-size:15px;font-weight:500}button:active{transform:scale(.97)}input[type=range]{width:100%;height:28px;accent-color:var(--accent);margin:0}.home{box-sizing:border-box;min-height:100dvh;padding:calc(32px + env(safe-area-inset-top)) max(18px, calc((100% - 560px) / 2)) calc(32px + env(safe-area-inset-bottom))}.home h1{font-family:var(--serif);margin:0;font-size:42px;font-weight:900;line-height:1}.home .hand{font-family:var(--hand);color:var(--ink-accent);margin:6px 0 8px;font-size:26px;font-weight:700}.home .intro{color:var(--ink-muted);margin:0 0 6px;font-size:14px;line-height:1.5}.home h1{touch-action:manipulation;-webkit-user-select:none;user-select:none}.easter-egg{z-index:100;direction:ltr;background:#0b0f1ee6;justify-content:center;align-items:center;gap:4vw;display:flex;position:fixed;inset:0}.easter-egg .palm{flex-direction:column;align-items:center;animation:.5s ease-in-out infinite six-seven;display:flex}.easter-egg .palm+.palm{animation-delay:-.25s}.easter-egg .palm+.palm i{transform:scaleX(-1)}.easter-egg b{z-index:1;text-shadow:0 2px 6px #0009;font-family:var(--serif);color:var(--text);margin-bottom:-.85em;font-size:min(16vw,80px);font-weight:900;line-height:1;position:relative}.easter-egg i{font-size:min(34vw,170px);font-style:normal;line-height:1}@keyframes six-seven{0%,to{transform:translateY(-12vh)}50%{transform:translateY(12vh)}}.chapter h2{border-bottom:2px solid var(--ink);font-family:var(--serif);justify-content:space-between;align-items:baseline;margin:22px 0 2px;padding-bottom:4px;font-size:22px;font-weight:900;display:flex}.chapter h2 small{color:var(--ink-muted);font-family:Rubik,system-ui,sans-serif;font-size:12px;font-weight:400}.entry{color:inherit;border-bottom:1px dashed #b9c1cc;grid-template-columns:30px 1fr 54px;align-items:center;gap:10px;padding:11px 0;text-decoration:none;display:grid}.entry:active{background:#e9e2d2}.entry .num{font-family:var(--serif);color:var(--ink-accent);font-size:17px;font-weight:900}.entry strong{font-size:16px;font-weight:600;display:block}.entry:hover strong{text-decoration:underline;-webkit-text-decoration-color:var(--ink-accent);text-decoration-color:var(--ink-accent)}.entry small{color:var(--ink-muted);margin-top:2px;font-size:13px;line-height:1.35;display:block}.entry svg{fill:none;width:54px;height:39px;stroke:var(--ink);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.entry svg .fill{fill:var(--ink)}.lab-static{box-sizing:border-box;min-height:100dvh;padding:calc(24px + env(safe-area-inset-top)) max(18px, calc((100% - 560px) / 2)) 32px;line-height:1.55}.lab-static .back{color:var(--ink);font-size:14px;text-decoration:none}.lab-static .no{font-family:var(--serif);color:var(--ink-accent);margin:18px 0 0;font-weight:900}.lab-static h1{font-family:var(--serif);margin:0;font-size:36px;font-weight:900;line-height:1.1}.lab-static h2{border-bottom:2px solid var(--ink);font-family:var(--serif);margin:20px 0 6px;padding-bottom:4px;font-size:20px}.lab-static .loading{font-family:var(--hand);color:var(--ink-accent);font-size:24px;font-weight:700}.lab{grid-template-rows:auto 1fr auto;height:100dvh;display:grid}.topbar{padding:calc(10px + env(safe-area-inset-top)) 12px 10px;border-bottom:2px solid var(--ink);flex-wrap:wrap;align-items:center;gap:10px;display:flex}.topbar .back{color:var(--text);padding:4px 8px;font-size:24px;text-decoration:none}.topbar h1{font-family:var(--serif);flex:1;margin:0;font-size:22px;font-weight:900;line-height:1.05}.topbar h1:before{content:var(--lab-no,none);color:var(--ink-accent);font-size:13px;display:block}.topbar button{border-radius:999px;min-height:36px;font-size:14px}.topbar .zoom{gap:6px;display:flex}.lab .viewport{background:#02030a;position:relative;overflow:hidden}.lab .scene,.lab .scene canvas,.lab .labels{position:absolute;inset:0}.lab .labels{pointer-events:none}.scene-label{color:#d8def0;text-shadow:0 0 3px #000,0 0 6px #000;white-space:nowrap;font-size:12px;top:0;left:0}.lab .hud{pointer-events:none;color:var(--muted);font-size:13px;position:absolute}.lab .toasts{top:40px;pointer-events:none;flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;inset-inline:12px}.lab .toast{background:var(--accent);color:#1a1400;border-radius:999px;padding:8px 14px;font-weight:600;animation:.25s ease-out toast-in}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}}.lab .panel{padding:12px 16px calc(12px + env(safe-area-inset-bottom));border-top:2px solid var(--ink);gap:10px;display:grid}.lab .control{grid-template-columns:1fr auto;row-gap:2px;font-size:14px;display:grid}.lab .control output{color:var(--accent);font-size:13px}.lab .control input{grid-column:1/-1}.lab .buttons{grid-template-columns:1fr 1fr;gap:10px;display:grid}.lab .sheet{inset-inline:0;max-height:60dvh;padding:18px 20px calc(20px + env(safe-area-inset-bottom));border-top:2px solid var(--ink);border-radius:18px 18px 0 0;animation:.2s ease-out sheet-in;position:fixed;bottom:0;overflow-y:auto;box-shadow:0 -8px 30px #0008}.lab .sheet[hidden]{display:none}@keyframes sheet-in{0%{opacity:0;transform:translateY(40%)}}.lab .sheet h2{font-family:var(--serif);margin:0 0 4px;font-size:24px;font-weight:900}.lab .sheet .year{color:var(--accent);margin:0 0 10px}.lab .sheet .year:empty{display:none}.lab .sheet ul{gap:8px;margin:0;padding-inline-start:20px;line-height:1.5;display:grid}.lab .sheet .close{top:10px;border-radius:50%;width:36px;height:36px;min-height:0;padding:0;position:absolute;inset-inline-end:10px}.sticker{border:2px solid var(--ink);background:var(--card);border-radius:50%;flex:none;place-items:center;width:56px;height:56px;display:grid;box-shadow:2px 3px #1d243326}.sticker svg{fill:none;width:70%;height:70%;stroke:var(--ink);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.sticker .fill{fill:var(--ink)}.sticker .a{stroke:var(--ink-accent)}.sticker .af{fill:var(--ink-accent);stroke:var(--ink-accent)}.sticker.empty{box-shadow:none;background:0 0;border:2px dashed #b9c1cc}.mission-strip{flex-basis:100%;margin:2px -4px -8px}.topbar .mission-strip>*{width:100%;min-height:44px;font-family:var(--hand);color:var(--ink-accent);text-align:start;background:0 0;border:0;align-items:center;gap:10px;padding:0 4px;font-size:26px;font-weight:700;line-height:1;text-decoration:none;display:flex}.topbar .mission-strip small{font-family:var(--serif);white-space:nowrap;color:var(--ink-muted);margin-inline-start:auto;font-size:14px}.lab .sheet .mission-list{gap:12px;padding:0;list-style:none}.mission-list li{align-items:center;gap:12px;display:flex}.mission-list strong,.mission-list small{display:block}.mission-list small{color:var(--muted)}.sticker-pop{top:28%;z-index:20;pointer-events:none;justify-items:center;gap:6px;width:max-content;margin-inline:auto;animation:2.6s ease-in-out forwards sticker-pop;display:grid;position:fixed;inset-inline:0}.sticker-pop .sticker{border-width:3px;width:120px;height:120px}.sticker-pop b,.sticker-pop small{background:var(--card);color:var(--ink);font-family:var(--hand);border-radius:999px;padding:2px 14px;font-size:30px;box-shadow:2px 3px #1d243326}.sticker-pop small{color:var(--ink-accent);font-size:24px}@keyframes sticker-pop{0%{opacity:0;transform:scale(.3)rotate(-25deg)}12%{opacity:1;transform:scale(1.12)rotate(6deg)}20%{transform:scale(1)rotate(-4deg)}80%{opacity:1;transform:scale(1)rotate(-4deg)}to{opacity:0;transform:translateY(-30vh)scale(.25)rotate(0)}}.home .rank{text-align:start;gap:4px;width:100%;margin:14px 0 4px;padding:10px 14px;display:grid}.home .rank span{font-family:var(--hand);color:var(--ink-accent);font-size:26px;font-weight:700}.home .rank small{color:var(--ink-muted);font-size:13px;font-weight:400}.home .rank i{background:linear-gradient(to left, var(--ink-accent) calc(var(--done) * 100%), #e4ddcc 0);border-radius:999px;height:8px}.entry .slots{gap:4px;margin-top:6px;display:flex}.entry .slots i{border:1.5px solid var(--ink-muted);border-radius:50%;width:8px;height:8px}.entry .slots i.got{border-color:var(--ink-accent);background:var(--ink-accent)}.notebook{z-index:10;padding:calc(18px + env(safe-area-inset-top)) max(18px, calc((100% - 560px) / 2)) calc(28px + env(safe-area-inset-bottom));animation:.2s ease-out sheet-in;position:fixed;inset:0;overflow-y:auto}.notebook[hidden]{display:none}.notebook header{justify-content:space-between;align-items:center;display:flex}.notebook h2{font-family:var(--serif);margin:0;font-size:30px;font-weight:900}.notebook .close{border-radius:50%;width:44px;padding:0}.notebook .count{font-family:var(--hand);color:var(--ink-accent);margin:4px 0 0;font-size:24px;font-weight:700}.notebook h3{border-bottom:2px solid var(--ink);font-family:var(--serif);margin:22px 0 12px;padding-bottom:4px;font-size:20px;font-weight:900}.sticker-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:16px 10px;display:grid}.sticker-card{color:inherit;text-align:center;align-content:start;justify-items:center;gap:6px;text-decoration:none;display:grid}.sticker-card .sticker{width:72px;height:72px}.sticker-card:nth-child(odd) .sticker:not(.empty){rotate:-5deg}.sticker-card:nth-child(2n) .sticker:not(.empty){rotate:4deg}.sticker-card strong{font-family:var(--hand);font-size:22px;line-height:1}.sticker-card small{color:var(--ink-muted);font-size:12px;line-height:1.3}.notebook .ranks{gap:6px;margin:0;padding:0;list-style:none;display:grid}.notebook .ranks li{color:var(--ink-muted);border-radius:10px;justify-content:space-between;padding:6px 10px;display:flex}.notebook .ranks li.got{color:var(--ink)}.notebook .ranks li.now{background:var(--card);border:1.5px solid var(--ink);color:var(--ink-accent);font-weight:700}.notebook .ranks li.now span:before{content:"★ "}
