:root{--fs-xs:12px;--fs-sm:13px;--fs-md:14px;--fs-base:15px;--fs-lg:17px;--fs-xl:22px;--fs-2xl:24px;--blue:#4152eb;--ink:#242424;--mute:#6d6d6d;--mute2:#929292;--line:#e4e7eb;--line2:#d0d5dc;--bg:#f5f8fb;--panel:#fff;--tint:#f0f4fa;--track:#e6ecf5;--accent:#5578ee;--navy:#3138ac;--sky:#cde7f9;--sky-line:#a4d5f7;--pad-bg:rgba(233,227,192,.35);--pad-line:#f6e27c;--bar-shadow:0 2px 8px rgba(0,0,0,.08);--on-accent:#fff;--danger:#e8523f;--red-ink:#E03146;--amber-ink:#b0741c;--ok:#1FA83F;--ok-ink:#12833a;--ok-bg:#e3f6e8;--ok-toast-bg:#12833a;--ok-toast-fg:#fff;color-scheme:light}:root[data-theme=dark]{--blue:#7f8dff;--ink:#e9ecf6;--mute:#98a1bd;--mute2:#727b99;--line:#252b3a;--line2:#3b4358;--bg:#0f1218;--panel:#171b25;--tint:#212836;--track:#252b3a;--accent:#8ea2ff;--navy:#8f9bff;--sky:#1b2940;--sky-line:#2c4466;--pad-bg:rgba(246,226,124,.07);--pad-line:#6f6224;--bar-shadow:0 2px 8px rgba(0,0,0,.4);--danger:#f2604d;--red-ink:#ff7a7a;--amber-ink:#e0a33c;--ok:#3ecf62;--ok-ink:#5fe07f;--ok-bg:#163a22;--ok-toast-bg:#3ecf62;--ok-toast-fg:#0f1218;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:Inter,system-ui,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-size:var(--fs-base)}button,input,select,textarea{font:inherit;color:inherit}input,select,textarea{font-size:16px}a{color:var(--blue)}.boot{padding:60px 16px;text-align:center;color:var(--mute)}.mark{font-weight:800;letter-spacing:.14em;font-size:13px;color:var(--blue)}.muted{color:var(--mute)}.small{font-size:var(--fs-sm)}.center{text-align:center}.grow{flex:1;min-width:0}.err{color:var(--red-ink);font-size:var(--fs-sm);line-height:1.45;margin:6px 0 0;font-style:normal;display:block}.okmark{color:var(--ok-ink);font-weight:600;font-size:var(--fs-sm)}.signin{min-height:100vh;display:grid;place-items:center;padding:24px 16px}.signcard{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:30px 24px;width:100%;max-width:400px;text-align:center}.signcard h1{font-weight:800;font-size:48px;line-height:.9;letter-spacing:-.025em;text-transform:uppercase;margin:14px 0 10px}.signcard h2{margin:12px 0 8px}.signcard h1.signtitle{font-size:40px}.signtitle span{display:block;font-size:17px;letter-spacing:.08em;color:var(--accent);margin-bottom:8px}.signform{display:flex;flex-direction:column;gap:9px;margin-top:16px;text-align:left}.signform input{border:1px solid var(--line);border-radius:9px;padding:11px 12px;background:var(--bg);width:100%}.btn{border:1px solid var(--line);background:var(--panel);border-radius:9px;padding:10px 14px;min-height:42px;font-size:var(--fs-md);font-weight:600;cursor:pointer;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:6px;text-decoration:none}.btn:hover{border-color:var(--line2)}.btn.primary{background:var(--blue);border-color:var(--blue);color:var(--on-accent)}.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn.big{padding:13px 22px;font-size:var(--fs-base);min-height:50px}.btn.wide{width:100%}.btn.xs{padding:6px 11px;min-height:34px;font-size:var(--fs-xs);border-radius:7px}.btn:disabled,button:disabled{opacity:.42;cursor:not-allowed}.btn.primary:disabled{background:var(--mute2);border-color:var(--mute2)}.btn.file{position:relative;overflow:hidden}.btn.file input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.btnrow{display:flex;gap:8px;margin:12px 0 0;align-items:center}.btnrow.end{justify-content:flex-end}.btnrow.wrap{flex-wrap:wrap}.btnrow.tight{margin-top:8px}.btnrow .btn.wide{flex:1}.linkbtn{background:none;border:0;padding:8px 4px;font-size:var(--fs-sm);font-weight:600;color:var(--blue);cursor:pointer;text-decoration:underline;display:block;margin:8px auto 0}.linkbtn.inline{display:inline;margin:0;padding:0}.linkbtn.strong{font-size:var(--fs-base);text-decoration:none;color:var(--ink);font-weight:700}.back{width:42px;height:42px;flex:0 0 42px;border:1px solid var(--line);background:var(--panel);border-radius:10px;font-size:26px;line-height:1;cursor:pointer;color:var(--ink);padding:0 0 3px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--line2);background:var(--panel);border-radius:999px;padding:8px 14px;min-height:40px;font-size:var(--fs-md);font-weight:500;cursor:pointer;color:var(--ink)}.chip.on{background:var(--sky);border-color:var(--navy);color:var(--navy);font-weight:600}.chip.big{border-radius:12px;padding:10px 14px;display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:110px;text-align:left}.chip.big b{font-size:var(--fs-base)}.chip.big span{font-size:var(--fs-xs);color:var(--mute)}.chip.big.on span{color:var(--navy)}.chip.add{align-items:center;justify-content:center;color:var(--blue);border-style:dashed}.tick{display:flex;align-items:center;gap:10px;cursor:pointer;padding:6px 0;min-height:42px;font-size:var(--fs-md);line-height:1.35}.tick input{position:absolute;opacity:0;pointer-events:none}.tick .box{width:26px;height:26px;flex:0 0 26px;border-radius:7px;border:1.5px solid var(--line2);display:grid;place-items:center;font-size:15px;font-weight:700;color:#fff;background:var(--panel)}.tick.on .box{background:var(--ok);border-color:var(--ok)}.tick input:focus-visible+.box{outline:2px solid var(--blue);outline-offset:2px}.pill{font-size:11px;font-weight:700;letter-spacing:.04em;padding:4px 8px;border-radius:6px;white-space:nowrap;text-transform:uppercase;background:var(--tint);color:var(--mute)}.pill.ok{background:var(--ok-bg);color:var(--ok-ink)}.pill.soft{text-transform:none;letter-spacing:0;font-size:var(--fs-xs);font-weight:600;color:var(--ink)}.note{background:var(--pad-bg);border:2px solid var(--pad-line);border-radius:10px;padding:10px 12px;font-size:var(--fs-md);line-height:1.45;margin:10px 0}.empty{text-align:center;padding:28px 16px;color:var(--mute);font-size:var(--fs-md);line-height:1.6}.app{min-height:100vh}.mockbar{background:var(--pad-line);color:#3a3000;font-size:var(--fs-sm);font-weight:600;text-align:center;padding:6px 12px}.mockbar .linkbtn{color:#3a3000;margin-left:6px}.topbar{position:sticky;top:0;z-index:30;background:var(--panel);box-shadow:var(--bar-shadow);display:flex;align-items:center;gap:16px;padding:0 20px;height:64px}.tb-brand{display:flex;align-items:baseline;gap:10px;flex:none}.tb-title{font-weight:700;font-size:var(--fs-base)}.tb-tabs{display:flex;gap:2px;height:100%;margin-left:auto;overflow-x:auto;scrollbar-width:none}.tb-tabs::-webkit-scrollbar{display:none}.tb-tabs button{height:100%;border:0;border-bottom:3px solid transparent;background:none;padding:3px 12px 0;font-weight:500;font-size:var(--fs-base);color:var(--mute);cursor:pointer;white-space:nowrap}.tb-tabs button:hover{color:var(--ink)}.tb-tabs button.on{color:var(--blue);border-bottom-color:var(--blue)}.main{max-width:860px;margin:0 auto;padding:14px 20px 80px}.campline{display:flex;align-items:center;gap:8px 10px;flex-wrap:wrap;margin:2px 0 12px}.cname{font-weight:700;font-size:var(--fs-md)}.pmenu{position:relative;flex:none}.avatar{width:38px;height:38px;border-radius:50%;border:0;background:var(--sky);color:var(--navy);font-weight:700;font-size:var(--fs-sm);cursor:pointer}.pmenu-pop{position:absolute;right:0;top:calc(100% + 10px);width:250px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 30px #00000024;padding:10px;z-index:60;display:flex;flex-direction:column;gap:4px}.pmenu-who{padding:4px 6px 8px}.pmenu-who b{display:block}.pmenu-who span{font-size:var(--fs-sm);color:var(--mute)}.pmenu-item{border:0;background:none;text-align:left;padding:10px 6px;border-radius:8px;font-weight:500;font-size:var(--fs-md);color:var(--ink);cursor:pointer;text-decoration:none}.pmenu-item:hover{background:var(--tint)}.pmenu-build{font-size:var(--fs-xs);color:var(--mute2);border-top:1px solid var(--line);padding:8px 6px 2px;font-variant-numeric:tabular-nums}.h1{font-weight:700;font-size:var(--fs-2xl);margin:4px 0 12px;letter-spacing:-.01em;line-height:1.15;overflow-wrap:anywhere}.h2{font-weight:700;font-size:var(--fs-lg);margin:26px 0 10px}.titlerow{display:flex;align-items:center;justify-content:space-between;gap:10px}.titlerow .h1,.titlerow .h2{margin-bottom:12px}.eyebrow{font-size:var(--fs-xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}.flowhead{display:flex;align-items:flex-start;gap:12px;margin-bottom:6px}.flowhead .h1{margin:2px 0 4px}.flowhead p{margin:0}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px}.list{display:flex;flex-direction:column;gap:8px;margin:10px 0}.famrow{display:flex;align-items:center;gap:10px;text-align:left;cursor:pointer;width:100%;min-height:58px;padding:11px 14px;color:var(--ink)}.famrow:hover{border-color:var(--line2)}.famrow.sel{border-color:var(--navy);box-shadow:0 0 0 1px var(--navy)}.famtext{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.famtext b{font-size:var(--fs-base);overflow-wrap:anywhere}.famtext .sub{font-size:var(--fs-sm);color:var(--mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.famright{display:flex;align-items:center;gap:6px;flex:none}.count{font-size:var(--fs-sm);font-weight:600;color:var(--navy);white-space:nowrap}.search{width:100%;border:1px solid var(--line2);border-radius:10px;padding:12px 14px;background:var(--panel);margin:4px 0 10px;min-height:48px}.search:focus{outline:2px solid var(--blue);outline-offset:-1px;border-color:var(--blue)}.form{display:flex;flex-direction:column;gap:12px;margin:10px 0}.form h3{margin:0}.field{display:flex;flex-direction:column;gap:6px}.field>span,.lbl{font-size:var(--fs-sm);font-weight:600;color:var(--mute)}.field input,.field select,.kidedit input{border:1px solid var(--line2);border-radius:9px;padding:10px 12px;background:var(--panel);width:100%;min-height:44px}.field input:focus,.kidedit input:focus{outline:2px solid var(--blue);outline-offset:-1px;border-color:var(--blue)}.field em{font-style:normal}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.kidsedit{display:flex;flex-direction:column;gap:8px}.kidedit{display:flex;flex-direction:column;gap:6px;padding:10px;border:1px dashed var(--line2);border-radius:10px}.kidsedit .linkbtn{margin:0;align-self:flex-start;padding:6px 0}.methods{display:grid;grid-template-columns:1fr 1fr;gap:12px}.method{border:1px solid var(--line);background:var(--panel);border-radius:16px;min-height:150px;padding:16px 14px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:4px;cursor:pointer;text-align:left;color:var(--ink);box-shadow:var(--bar-shadow)}.method:active{transform:scale(.98)}.micon{font-size:34px;line-height:1;margin-bottom:auto}.mlabel{font-size:var(--fs-xl);font-weight:800;letter-spacing:-.01em}.mrule{font-size:var(--fs-xs);color:var(--mute);line-height:1.35}.method.m-video{border-top:5px solid var(--blue)}.method.m-hang{border-top:5px solid var(--navy)}.method.m-buddy{border-top:5px solid var(--accent)}.method.m-free{border-top:5px solid var(--pad-line)}.famsum{margin:0 0 4px}.kidpick{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.sw{display:flex;flex-direction:column;gap:12px;margin-top:4px}.swhead{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.swhead>div{display:flex;flex-direction:column;gap:2px}.swkid{font-size:var(--fs-lg)}.swbtn{width:100%;min-height:260px;border-radius:20px;border:0;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:var(--navy);color:#fff;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}:root[data-theme=dark] .swbtn{background:#3138ac}.swbtn.running{background:var(--danger)}.swbtn.pending,.swbtn.saving{background:var(--ok-toast-bg);color:#fff}.swtime{font-size:88px;font-weight:800;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}.swtime small{font-size:32px;font-weight:700}.swcue{font-size:var(--fs-lg);font-weight:600;opacity:.92}.grace{display:flex;flex-direction:column;gap:8px}.gracebar{height:6px;border-radius:3px;background:var(--track);overflow:hidden}.gracebar i{display:block;height:100%;width:100%;background:var(--ok);transform-origin:left;animation:grace linear forwards}@keyframes grace{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.outcome{border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:3px;background:var(--tint)}.outcome b{font-size:var(--fs-lg)}.outcome span{font-size:var(--fs-md);color:var(--mute);line-height:1.4}.outcome.award{background:var(--ok-bg)}.outcome.award b{color:var(--ok-ink)}.outcome.baseline{background:var(--sky)}.hist summary{cursor:pointer;font-size:var(--fs-sm);font-weight:600;color:var(--blue);padding:6px 0}.hanglist{list-style:none;margin:6px 0 10px;padding:0;display:flex;flex-direction:column}.hanglist li{display:grid;grid-template-columns:minmax(0,1fr) 56px minmax(0,1.6fr);gap:8px;padding:8px 0;border-top:1px solid var(--line);font-size:var(--fs-sm);align-items:baseline}.hanglist .hs{font-weight:700;font-variant-numeric:tabular-nums;text-align:right}.hanglist .ho{color:var(--mute)}.hanglist li.award .ho{color:var(--ok-ink);font-weight:600}.hanglist li.void{text-decoration:line-through;color:var(--mute2)}.bigtotal{display:flex;flex-direction:column;align-items:center;background:var(--sky);color:var(--navy);border-radius:12px;padding:8px 12px;min-width:76px;flex:none}.bigtotal b{font-size:32px;line-height:1;font-weight:800}.bigtotal span{font-size:var(--fs-xs);font-weight:600}.entries{list-style:none;margin:8px 0;padding:0;display:flex;flex-direction:column;gap:8px}.entry{display:flex;flex-direction:column;gap:4px;padding:12px 14px}.erow{display:flex;justify-content:space-between;align-items:center;gap:10px}.emethod{font-weight:700;font-size:var(--fs-md)}.eplus{font-weight:800;color:var(--ok-ink);font-size:var(--fs-base);font-variant-numeric:tabular-nums}.eplus.zero{color:var(--mute2)}.edetail{font-size:var(--fs-md);line-height:1.4;overflow-wrap:anywhere}.emeta{display:flex;justify-content:space-between;gap:10px;font-size:var(--fs-xs);color:var(--mute);flex-wrap:wrap}.erun{font-weight:600;color:var(--ink);white-space:nowrap}.entry.void .edetail,.entry.void .emethod{text-decoration:line-through;color:var(--mute2)}.evoid{font-size:var(--fs-xs);color:var(--red-ink)}.kidcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.kidcard{display:flex;flex-direction:column;gap:6px}.kidcard .btn{align-self:flex-start}.pb{font-size:var(--fs-sm);color:var(--mute)}.pb b{color:var(--ink)}.seed{font-family:ui-monospace,Menlo,monospace;font-size:var(--fs-xs);color:var(--mute);overflow-wrap:anywhere}.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.kpi{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:4px;min-width:0}.drawsum .kpi{background:var(--bg)}.klbl{font-weight:600;font-size:var(--fs-xs);color:var(--mute2);text-transform:uppercase;letter-spacing:.04em}.kval{font-weight:700;font-size:var(--fs-xl);letter-spacing:-.01em}.kval.sm{font-size:var(--fs-base)}.kval small{font-size:var(--fs-md);color:var(--mute2)}.ksub{font-size:var(--fs-xs);color:var(--mute)}.tablecard{padding:4px 14px}.trow{display:grid;grid-template-columns:minmax(0,1fr) 70px 70px;gap:8px;padding:11px 0;border-top:1px solid var(--line);font-size:var(--fs-md);align-items:center}.trow span:not(:first-child){text-align:right;font-variant-numeric:tabular-nums}.trow.thead{border-top:0;font-size:var(--fs-xs);font-weight:600;color:var(--mute2);text-transform:uppercase;letter-spacing:.04em}.trow.tfoot{font-weight:700}.preview{margin:4px 0;padding-left:18px;font-size:var(--fs-sm);line-height:1.6}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0c1b73;z-index:80;display:flex;align-items:flex-end;justify-content:center;padding:16px}.sheetbox{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:4px 16px 16px;width:100%;max-width:440px;max-height:calc(100dvh - 32px);overflow:auto}.sheethead{display:flex;align-items:center;justify-content:space-between;gap:10px;position:sticky;top:0;background:var(--panel);padding:10px 0 6px}.sheethead h2{margin:0;font-size:var(--fs-lg)}.x{width:40px;height:40px;border:0;background:var(--tint);border-radius:10px;font-size:22px;cursor:pointer;color:var(--ink)}@media (min-width:640px){.sheet{align-items:center}}.toast{position:fixed;bottom:calc(18px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);background:var(--ink);color:var(--panel);font-size:var(--fs-sm);font-weight:600;padding:10px 18px;border-radius:99px;box-shadow:0 6px 18px #0a0c1b40;z-index:90;max-width:calc(100vw - 32px);text-align:center}.toast.ok{background:var(--ok-toast-bg);color:var(--ok-toast-fg)}.toast.bad{background:var(--danger);color:#fff}.stage{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:radial-gradient(120% 90% at 50% 20%,#4152eb,#3138ac 45%,#14164a);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:calc(20px + env(safe-area-inset-top)) 20px calc(20px + env(safe-area-inset-bottom));text-align:center;overflow:hidden}.stagetop{display:flex;justify-content:space-between;width:100%;align-items:center;gap:10px;position:relative;z-index:2}.mark.light{color:#cde7f9}.rehearse{font-size:var(--fs-xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase;background:#f6e27ce6;color:#3a3000;padding:4px 8px;border-radius:6px}.stagemid{display:flex;flex-direction:column;align-items:center;gap:14px;max-width:1100px;position:relative;z-index:2}.stagecamp{font-size:clamp(16px,3vw,26px);font-weight:600;color:#cde7f9}.stageno{font-size:clamp(22px,5vw,44px);font-weight:800;letter-spacing:.08em;text-transform:uppercase}.stageprize{font-size:clamp(17px,3.2vw,30px);font-weight:600;color:#f6e27c;max-width:900px}.stagex{width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:#ffffff1a;color:#fff;font-size:24px;cursor:pointer;margin-left:auto}.stagex:disabled{opacity:0}.reel{position:relative;width:min(92vw,980px);overflow:hidden;-webkit-mask-image:linear-gradient(transparent,#000 22%,#000 78%,transparent);mask-image:linear-gradient(transparent,#000 22%,#000 78%,transparent)}.reelline{position:absolute;left:0;right:0;border-top:3px solid #f6e27c;border-bottom:3px solid #f6e27c;background:#ffffff1a;border-radius:14px}.reelstrip{position:relative;will-change:transform}.reelrow{display:flex;align-items:center;justify-content:center;padding:0 18px;font-weight:800;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#ffffffeb}.stage.spinning .reelrow{filter:blur(.4px)}.reelrow.win{color:#f6e27c;animation:pop .7s cubic-bezier(.2,1.4,.4,1) both}.stagewon{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.stagewon span{background:#ffffff24;border-radius:999px;padding:6px 12px;font-weight:600;font-size:var(--fs-md)}.stagectl .stagespinbtn{background:#f6e27c;color:#14164a;border:0;border-radius:999px;padding:16px 34px;min-height:56px;font-size:clamp(18px,3vw,24px);font-weight:800;box-shadow:0 8px 24px #00000040}.stageerr{background:#e8523fe6;padding:10px 14px;border-radius:10px;font-weight:600;max-width:600px}.stagectl{display:flex;gap:10px;position:relative;z-index:2;min-height:56px;align-items:center}.stagectl button{background:#ffffff24;border:1px solid rgba(255,255,255,.3);color:#fff;border-radius:10px;padding:10px 16px;min-height:44px;font-weight:600;cursor:pointer;font-size:var(--fs-md)}.confetti{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}@keyframes pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}@media (max-width:640px){.topbar{height:auto;flex-wrap:wrap;padding:8px 12px 0;gap:4px 10px}.tb-brand{order:1;padding:4px 0;flex:1;min-width:0}.tb-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.pmenu{order:2;margin-left:auto}.tb-tabs{order:3;width:100%;margin:0 -12px;padding:0 6px;height:46px;flex:1 0 calc(100% + 24px)}.tb-tabs button{padding:3px 10px 0;font-size:var(--fs-md);flex:1 0 auto}.main{padding:12px 16px 80px}.kpis{grid-template-columns:1fr 1fr}.grid2{grid-template-columns:1fr}.method{min-height:132px}.mlabel{font-size:20px}.swbtn{min-height:240px}.swtime{font-size:76px}.h1{font-size:var(--fs-xl)}}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
