:root{color-scheme:dark;--bg: #070b14;--panel: #101829;--panel-2: #182339;--panel-deep: #0b1120;--line: rgba(120, 152, 208, .22);--line-control: rgba(120, 152, 208, .65);--line-strong: rgba(232, 182, 76, .5);--ink: #e7edf8;--dim: #8fa0bd;--gold: #e8b64c;--gold-strong: #f6cd6b;--gold-deep: rgba(232, 182, 76, .14);--blue: #5b9cf0;--blue-deep: rgba(91, 156, 240, .14);--good: #3ecf8e;--good-deep: rgba(62, 207, 142, .13);--bad: #ff6d7a;--bad-deep: rgba(255, 109, 122, .13);--serif: "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif;--font-body: "Zen Maru Gothic", "Hiragino Sans", "Noto Sans JP", system-ui, sans-serif;--font-pop: "Mochiy Pop One", "Zen Maru Gothic", sans-serif;--hl: rgba(232, 182, 76, .28);--pop-shadow: rgba(0, 0, 0, .5);--track: .1em;--bw: 1.5px;--ease-pop: cubic-bezier(.16, 1, .3, 1);--elev: 0 3px 0 rgba(2, 5, 12, .6);--elev-press: 0 1px 0 rgba(2, 5, 12, .6);--ring-gold: 0 0 0 3px var(--gold-deep)}*{box-sizing:border-box;margin:0;padding:0}:focus:not(:focus-visible){outline:none}:focus-visible{outline:3px solid var(--gold);outline-offset:2px}html,body{background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;overflow-x:hidden}body{background-image:repeating-linear-gradient(180deg,transparent 0 31px,rgba(120,152,208,.05) 31px 32px);min-height:100vh}#app{max-width:560px;margin:0 auto;min-height:100vh;padding:12px 16px calc(36px + env(safe-area-inset-bottom));padding-top:calc(12px + env(safe-area-inset-top))}@keyframes screen-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}#app>*{animation:screen-in .35s var(--ease-pop) both}@keyframes rise-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.topbar{display:flex;justify-content:space-between;align-items:baseline;padding:8px 2px 16px;gap:10px}.topbar .brand{font-family:var(--font-pop);font-size:15px;font-weight:400;letter-spacing:.08em;color:#101828;background:var(--gold);display:inline-block;padding:5px 13px 4px;border-radius:10px;transform:rotate(-1.5deg);box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--gold),4px 5px 0 var(--pop-shadow);white-space:nowrap}.topbar .sub{color:var(--dim);font-size:13px;font-weight:400;letter-spacing:.04em;text-align:right}.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:17px 16px;margin-bottom:14px;box-shadow:var(--elev);animation:rise-in .4s var(--ease-pop) both}.card.hero{position:relative;border-color:#e8b64c47;background:linear-gradient(var(--gold),var(--gold)) left top / 16px 2px no-repeat,linear-gradient(var(--gold),var(--gold)) left top / 2px 16px no-repeat,linear-gradient(var(--gold),var(--gold)) right top / 16px 2px no-repeat,linear-gradient(var(--gold),var(--gold)) right top / 2px 16px no-repeat,linear-gradient(var(--gold),var(--gold)) left bottom / 16px 2px no-repeat,linear-gradient(var(--gold),var(--gold)) left bottom / 2px 16px no-repeat,linear-gradient(var(--gold),var(--gold)) right bottom / 16px 2px no-repeat,linear-gradient(var(--gold),var(--gold)) right bottom / 2px 16px no-repeat,var(--panel)}.card h2{font-family:var(--font-pop);font-size:15px;font-weight:400;letter-spacing:.06em;margin-bottom:10px;color:var(--ink);display:inline-block;padding:0 5px;background:linear-gradient(transparent 60%,var(--hl) 60%,var(--hl) 94%,transparent 94%)}.card .note{color:var(--dim);font-size:13px}.card h2,h1,h2,h3{text-wrap:balance}.card p,.note,.list-item .d,.kpi .k,.lead{text-wrap:pretty}.kpi-row{display:flex;gap:10px}.kpi{flex:1;text-align:center;background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:11px 4px 9px}.kpi .v{font-family:var(--font-pop);font-size:21px;font-weight:400;color:var(--gold-strong);font-variant-numeric:tabular-nums;line-height:1.3}.kpi .k{font-size:11px;color:var(--dim);letter-spacing:.08em}.bar{height:10px;background:var(--panel-deep);border:1px solid var(--line);border-radius:6px;overflow:hidden;margin:7px 0}.bar>span{display:block;height:100%;border-radius:6px;background:var(--gold)}.bar.good>span{background:var(--good)}button{font:inherit;cursor:pointer;border:none;border-radius:13px;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.btn{display:block;width:100%;padding:15px;font-size:16px;font-weight:800;letter-spacing:.06em;background:var(--gold);color:#241a06;margin-bottom:10px;box-shadow:0 3px #8a6a1f}.btn:active{transform:translateY(2px);box-shadow:0 1px #8a6a1f}a.btn{text-align:center;text-decoration:none;border-radius:13px;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.btn.secondary{background:var(--panel-2);color:var(--blue);border:var(--bw) solid rgba(91,156,240,.55);box-shadow:var(--elev)}.btn.secondary:active{transform:translateY(2px);box-shadow:var(--elev-press)}.btn.ghost{background:var(--panel);color:var(--dim);border:1px solid var(--line-control);font-weight:600;box-shadow:none}.btn.danger{background:transparent;color:var(--bad);border:1px solid rgba(255,109,122,.5);box-shadow:none}.btn:disabled{opacity:.35;cursor:default}@keyframes cta-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}.btn.pulse{animation:cta-pulse 2.2s var(--ease-pop) 4}.btn-row{display:flex;gap:10px}.btn-row .btn{flex:1}.btn-row .btn.ghost{font-size:14px;padding:13px 4px;white-space:nowrap}.list-item{display:block;width:100%;text-align:left;background:var(--panel-2);border:1px solid var(--line-control);border-radius:13px;padding:13px 14px;margin-bottom:10px;font-size:15px;color:var(--ink)}.list-item:active{border-color:var(--gold)}.list-item .t{font-weight:700}.list-item .d{color:var(--dim);font-size:13px}.list-item.locked{opacity:.45}.list-item.done{border-color:#3ecf8e8c}.list-item[data-boss]:not(.locked):not(.done){border-color:var(--line-strong);background:var(--panel-2);box-shadow:inset 4px 0 0 var(--gold)}.tag{display:inline-block;font-size:11px;font-weight:700;padding:1px 9px;border-radius:999px;background:var(--blue-deep);color:var(--blue);border:1px solid rgba(91,156,240,.35);margin-left:6px;vertical-align:middle;letter-spacing:.04em}.tag.good{background:var(--good-deep);color:var(--good);border-color:#3ecf8e66}.tag.warn{background:var(--bad-deep);color:var(--bad);border-color:#ff6d7a66}.tag.gold{background:var(--gold-deep);color:var(--gold-strong);border-color:#e8b64c73}.session-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;font-size:13px;color:var(--dim);gap:8px}.session-head .mode-name{font-family:var(--serif);letter-spacing:.08em;color:var(--ink)}.session-progress{height:5px;margin:0 0 12px;border-radius:3px}.prompt{font-size:16px;font-weight:600;margin-bottom:14px;white-space:pre-wrap;line-height:1.75}.choice-btn{display:block;width:100%;text-align:left;padding:13px 14px;margin-bottom:9px;background:var(--panel-2);border:var(--bw) solid var(--line-control);border-radius:12px;font-size:15px;color:var(--ink);transition:border-color .15s ease}.choice-btn:active{border-color:var(--gold)}.choice-btn.correct{border-color:var(--good);background:var(--good-deep)}.choice-btn.wrong{border-color:var(--bad);background:var(--bad-deep)}.choice-mark{display:block;font-size:12px;font-weight:700;margin-top:2px}.choice-btn.correct .choice-mark{color:var(--good)}.choice-btn.wrong .choice-mark{color:var(--bad)}.numeric-input{width:100%;font-size:18px;padding:13px;border:var(--bw) solid var(--line-control);border-radius:12px;margin-bottom:4px;background:var(--panel-deep);color:var(--ink);font-variant-numeric:tabular-nums}.numeric-input:focus{border-color:var(--gold);box-shadow:var(--ring-gold)}.unit-label{color:var(--dim);font-size:13px;margin-bottom:10px}.journal-side{margin-bottom:10px}.journal-side .side-label{font-family:var(--serif);font-size:13px;font-weight:800;letter-spacing:.14em;color:var(--gold-strong);margin-bottom:5px}.slot{display:flex;justify-content:space-between;gap:8px;width:100%;padding:12px;margin-bottom:7px;background:var(--panel-deep);border:1.5px dashed var(--line-control);border-radius:11px;font-size:15px;text-align:left;color:var(--ink)}.slot.active{border-style:solid;border-color:var(--blue);background:var(--blue-deep)}.slot.filled{border-style:solid;background:var(--panel-2)}.slot .acc{font-weight:700}.slot .amt{font-variant-numeric:tabular-nums;color:var(--gold-strong);font-weight:700}.slot .ph{color:var(--dim)}.chip-group{margin:12px 0}.chip-group .group-label{font-size:12px;color:var(--dim);letter-spacing:.06em;margin-bottom:5px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:10px 14px;background:var(--panel-2);border:var(--bw) solid var(--line-control);border-radius:999px;font-size:14px;font-weight:600;color:var(--ink);min-height:42px}.chip:active{border-color:var(--blue);background:var(--blue-deep)}@keyframes feedback-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.feedback{border-radius:14px;padding:15px;margin-top:12px;animation:feedback-in .3s var(--ease-pop) both}.feedback.good{background:var(--good-deep);border:1px solid rgba(62,207,142,.55)}.feedback.bad{background:var(--bad-deep);border:1px solid rgba(255,109,122,.55)}@keyframes stamp-in{0%{opacity:0;transform:scale(1.7) rotate(-14deg)}60%{opacity:1;transform:scale(.94) rotate(-4deg)}to{opacity:1;transform:scale(1) rotate(-6deg)}}.stamp{display:inline-block;font-family:var(--serif);font-size:19px;font-weight:800;letter-spacing:.18em;padding:4px 12px 3px;border:3px double currentColor;border-radius:8px;transform:rotate(-6deg);animation:stamp-in .3s var(--ease-pop) both;margin-bottom:8px}.stamp.good{color:var(--good)}.stamp.approve{color:var(--gold-strong)}.stamp.bad{color:var(--bad)}.stamp.title{font-family:var(--font-pop);font-weight:400;letter-spacing:.08em;font-size:21px;color:#241a06;background:var(--gold);border:none;box-shadow:0 0 0 2px var(--panel),0 0 0 4px var(--gold),3px 4px 0 var(--pop-shadow);padding:6px 14px 5px;margin:6px 0 10px}@keyframes xp-pop{0%{opacity:0;transform:translateY(6px) scale(.9)}40%{opacity:1;transform:translateY(0) scale(1.08)}to{opacity:1;transform:translateY(0) scale(1)}}.feedback .xp{display:block;font-size:14px;font-weight:800;color:var(--gold-strong);animation:xp-pop .5s var(--ease-pop) both;margin-bottom:4px}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-5px)}80%{transform:translate(5px)}}.shake{animation:shake .4s ease-in-out}.journal-answer{width:100%;border-collapse:collapse;margin:8px 0;font-size:14px;background:var(--panel-deep)}.journal-answer td{border:1px solid var(--line);padding:6px 9px}.journal-answer .num{text-align:right;font-variant-numeric:tabular-nums;color:var(--gold-strong)}.explain{font-size:14px;margin-top:6px}.progress-dots{font-variant-numeric:tabular-nums}.timer{font-weight:800;color:var(--gold-strong);font-variant-numeric:tabular-nums}@keyframes timer-blink{0%,to{opacity:1}50%{opacity:.35}}.timer.low{color:var(--bad);animation:timer-blink .8s ease-in-out infinite}@keyframes cutin-flash{0%{opacity:0}12%{opacity:1}82%{opacity:1}to{opacity:0}}@keyframes cutin-word{0%{transform:scale(2.6) rotate(-8deg);opacity:0}28%{transform:scale(1) rotate(-4deg);opacity:1}72%{transform:scale(1) rotate(-4deg);opacity:1}to{transform:scale(1.3) rotate(-4deg);opacity:0}}@keyframes cutin-streak{0%{transform:translate(-130%) skew(-20deg)}to{transform:translate(130%) skew(-20deg)}}@keyframes cutin-sub{0%{transform:translateY(18px);opacity:0}35%{transform:translateY(0);opacity:1}82%{opacity:1}to{opacity:0}}.cutin{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;pointer-events:none;overflow:hidden}.cutin .cutin-bg{position:absolute;top:0;right:0;bottom:0;left:0;background:#03050a99;animation:cutin-flash 1.5s ease-out forwards}.cutin .cutin-streak{position:absolute;top:50%;left:0;width:160%;height:130px;margin-top:-65px;background:#e8b64c2e;animation:cutin-streak 1.1s var(--ease-pop) forwards}.cutin .cutin-word{position:relative;font-family:var(--serif);font-size:44px;font-weight:900;letter-spacing:.12em;color:var(--gold-strong);text-shadow:0 0 34px rgba(232,182,76,.65),0 2px 8px rgba(0,0,0,.6);animation:cutin-word 1.5s cubic-bezier(.2,.9,.3,1) forwards;text-align:center;line-height:1.25}.cutin.good .cutin-word{color:var(--good);text-shadow:0 0 34px rgba(62,207,142,.6),0 2px 8px rgba(0,0,0,.6)}.cutin.good .cutin-streak{background:#3ecf8e29}.cutin .cutin-sub{position:relative;font-size:15px;font-weight:700;letter-spacing:.1em;color:var(--ink);text-shadow:0 1px 6px rgba(0,0,0,.7);animation:cutin-sub 1.5s ease-out forwards}.mastery-row{margin-bottom:10px}.mastery-row .name{display:flex;justify-content:space-between;font-size:14px;gap:8px}.mastery-row .pct{color:var(--dim);font-variant-numeric:tabular-nums;white-space:nowrap}.summary-big{text-align:center;font-family:var(--font-pop);font-size:46px;font-weight:400;letter-spacing:.04em;margin:10px 0 6px;color:var(--gold-strong);font-variant-numeric:tabular-nums;line-height:1.2}.summary-big .small{font-size:16px;color:var(--dim);font-weight:600;font-family:Hiragino Sans,Noto Sans JP,sans-serif;letter-spacing:0}.center{text-align:center}.spacer{height:8px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.linklike{display:inline-flex;align-items:center;min-height:44px;background:none;border:none;color:var(--blue);text-decoration:underline;font-size:14px;padding:4px 8px}input[type=date]{font-size:16px;padding:12px;border:var(--bw) solid var(--line-control);border-radius:11px;background:var(--panel-deep);color:var(--ink);width:100%;margin-bottom:10px;color-scheme:dark}@media (max-width: 380px){#app{padding-left:12px;padding-right:12px}.chip{padding:9px 12px;font-size:13px}.cutin .cutin-word{font-size:34px}}.hero-quota{text-align:center;padding-bottom:4px}.hero-quota .hero-label{font-size:12px;color:var(--dim);letter-spacing:.14em}.hero-quota .hero-num{font-family:var(--font-pop);font-size:44px;font-weight:400;color:var(--gold-strong);font-variant-numeric:tabular-nums;line-height:1.25}.hero-quota .hero-num .unit{font-size:16px;color:var(--dim);font-family:var(--font-body);font-weight:700}.hero-quota .hero-done{font-size:13px;color:var(--good);font-weight:700;margin-bottom:2px}.att-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.att-head{text-align:center;font-size:11px;color:var(--dim);letter-spacing:.06em;padding:2px 0}.att-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:8px;background:var(--panel-deep);border:1px solid var(--line);font-size:13px;color:var(--dim);font-variant-numeric:tabular-nums}.att-cell.lv1{background:var(--gold-deep);border-color:#e8b64c66;color:var(--gold-strong);font-weight:700}.att-cell.lv2{background:var(--gold);border-color:var(--gold);color:#241a06;font-weight:700}.att-cell.today{outline:2px solid var(--gold);outline-offset:1px}.att-cell.future{opacity:.35;border-style:dashed}@keyframes milestone-plate-in{0%{opacity:0;transform:scale(1.8) rotate(-8deg)}60%{opacity:1;transform:scale(.96) rotate(-2deg)}to{opacity:1;transform:scale(1) rotate(-3deg)}}@keyframes confetti-fall{0%{opacity:1;transform:translateY(-6vh) rotate(0)}to{opacity:.7;transform:translateY(108vh) rotate(540deg)}}.milestone{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#03050ac7;border:none;padding:20px;overflow:hidden;overscroll-behavior:contain;cursor:pointer}.milestone .confetti-layer{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.milestone .milestone-close{width:auto;min-width:148px;min-height:44px;font-size:13px;letter-spacing:.08em;margin-bottom:0}.milestone .milestone-plate{font-family:var(--font-pop);font-size:34px;font-weight:400;letter-spacing:.06em;color:#241a06;background:var(--gold);padding:12px 26px 10px;border-radius:14px;transform:rotate(-3deg);box-shadow:0 0 0 3px var(--bg),0 0 0 6px var(--gold),6px 7px 0 var(--pop-shadow);animation:milestone-plate-in .45s var(--ease-pop) both;text-align:center;line-height:1.3}.milestone .milestone-sub{font-size:14px;font-weight:700;color:var(--ink);letter-spacing:.08em}.milestone .confetti{position:absolute;top:-20px;width:8px;height:14px;border-radius:2px;animation:confetti-fall 2.6s linear both}.cloud-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:20px;background:#03050ac7;overscroll-behavior:contain}.cloud-modal .cloud-modal-card{width:100%;max-width:360px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:22px 20px;box-shadow:var(--elev);animation:rise-in .3s var(--ease-pop) both}.cloud-modal h2{font-family:var(--font-pop);font-size:16px;font-weight:400;margin-bottom:10px;text-align:center}.cloud-modal .cloud-modal-body{font-size:14px;line-height:1.7;margin-bottom:16px;text-align:center}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.legalfoot{padding:8px 2px 0;font-size:12px;color:#c8d0e28c}.legalfoot a{color:inherit;margin-right:14px}.app-about{max-width:560px;margin:0 auto;padding:4px 16px 28px;font-size:13px;color:#c8d0e299}.app-about h2{font-size:14px;color:#c8d0e2cc}.app-about a{color:inherit}
