:root{color-scheme:dark;--bg: #070b14;--panel: rgba(16, 24, 41, .82);--panel-2: rgba(24, 34, 56, .72);--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}*{box-sizing:border-box;margin:0;padding:0}:focus:not(:focus-visible){outline:none}:focus-visible{outline:2px 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:radial-gradient(circle at 50% -12%,rgba(232,182,76,.11),transparent 55%),radial-gradient(circle at 88% 18%,rgba(91,156,240,.07),transparent 45%),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 ease-out 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:0 10px 30px #02050c73;animation:rise-in .4s ease-out 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}.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);text-shadow:0 0 16px rgba(232,182,76,.35);font-variant-numeric:tabular-nums;line-height:1.3}.kpi .k{font-size:11px;color:var(--dim);letter-spacing:.08em}.bar{height:10px;background:#080c16cc;border:1px solid rgba(120,152,208,.15);border-radius:6px;overflow:hidden;margin:7px 0}.bar>span{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#b98a2e,var(--gold) 60%,var(--gold-strong));box-shadow:0 0 12px #e8b64c73;transition:width .5s cubic-bezier(.22,.9,.3,1)}.bar.good>span{background:linear-gradient(90deg,#1f9e68,var(--good) 70%,#6fe7b2);box-shadow:0 0 12px #3ecf8e66}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:linear-gradient(180deg,var(--gold-strong),#d9a63c);color:#241a06;margin-bottom:10px;box-shadow:0 4px 18px #e8b64c47,inset 0 1px #ffffff59}.btn:active{transform:translateY(1px);box-shadow:0 2px 8px #e8b64c33}.btn.secondary{background:var(--panel);color:var(--gold-strong);border:1.5px solid rgba(232,182,76,.55);box-shadow:0 4px 14px #02050c66}.btn.ghost{background:#10182980;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 pulse-glow{0%,to{box-shadow:0 4px 18px #e8b64c47,0 0 #e8b64c59}50%{box-shadow:0 4px 18px #e8b64c47,0 0 0 9px #e8b64c00}}.btn.pulse{animation:pulse-glow 2.2s ease-in-out 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:radial-gradient(circle at 8% 0%,rgba(232,182,76,.12),transparent 55%),var(--panel-2)}.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:1.5px 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);box-shadow:0 0 16px #3ecf8e40}.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:1.5px solid var(--line-control);border-radius:12px;margin-bottom:4px;background:#080c16bf;color:var(--ink);font-variant-numeric:tabular-nums}.numeric-input:focus{border-color:var(--gold);box-shadow:0 0 0 3px #e8b64c2e}.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:#080c1699;border:1.5px dashed var(--line-control);border-radius:11px;font-size:15px;text-align:left;color:var(--ink);transition:border-color .15s ease,background .15s ease}.slot.active{border-style:solid;border-color:var(--gold);background:var(--gold-deep);box-shadow:0 0 12px #e8b64c33}.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:1.5px solid var(--line-control);border-radius:999px;font-size:14px;font-weight:600;color:var(--ink);min-height:42px}.chip:active{border-color:var(--gold);background:var(--gold-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 ease-out both}.feedback.good{background:var(--good-deep);border:1px solid rgba(62,207,142,.55);box-shadow:0 0 24px #3ecf8e1f}.feedback.bad{background:var(--bad-deep);border:1px solid rgba(255,109,122,.55)}.feedback .headline{font-family:var(--serif);font-size:19px;font-weight:800;letter-spacing:.14em;margin-bottom:6px}.feedback.good .headline{color:var(--good);text-shadow:0 0 14px rgba(62,207,142,.45)}.feedback.bad .headline{color:var(--bad)}@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:inline-block;font-size:14px;font-weight:800;color:var(--gold-strong);text-shadow:0 0 12px rgba(232,182,76,.5);animation:xp-pop .5s ease-out 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:#080c168c}.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;filter:blur(8px)}28%{transform:scale(1) rotate(-4deg);opacity:1;filter:blur(0)}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:linear-gradient(90deg,transparent,rgba(232,182,76,.28),transparent);animation:cutin-streak 1.1s ease-out 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:linear-gradient(90deg,transparent,rgba(62,207,142,.25),transparent)}.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(--serif);font-size:46px;font-weight:900;letter-spacing:.04em;margin:10px 0 6px;color:var(--gold-strong);text-shadow:0 0 30px rgba(232,182,76,.4);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}.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:1.5px solid var(--line-control);border-radius:11px;background:#080c16bf;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}}@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}
