:root{--primary: #0E7490;--primary-dark: #0B4F63;--primary-light: #CFFAFE;--accent: #F59E0B;--ink: #0A1A24;--body-bg: #EEF4F7;--paper: #FFFFFF;--text: #0F1E28;--text-2: #5B6B76;--muted: #94A3B8;--line: #DCE6EC;--shadow: 0 1px 2px rgba(10,26,36,.06), 0 10px 28px rgba(14,116,144,.10);--ok: #0F9D58;--ng: #DC2626;--warn: #F59E0B}*{box-sizing:border-box}html,body{margin:0;padding:0}body.app-layout{font-family:"Noto Sans JP",-apple-system,BlinkMacSystemFont,"Hiragino Sans","Hiragino Kaku Gothic ProN",sans-serif;color:var(--text);background:var(--body-bg);line-height:1.65;display:flex;flex-direction:column;min-height:100vh;-webkit-font-smoothing:antialiased}h1,h2,h3{letter-spacing:-0.01em;text-wrap:balance}a{color:var(--primary);text-decoration:none}.wrap{max-width:980px;margin:0 auto;padding:0 16px;width:100%}.wrap.narrow{max-width:760px}.num{font-variant-numeric:tabular-nums}.muted{color:var(--text-2)}.eyebrow{font-size:.8rem;letter-spacing:.08em;color:var(--primary-light);margin:0 0 4px}.hd{background:linear-gradient(90deg, #0A1A24, #0E2A36);color:#fff;position:sticky;top:0;z-index:10;box-shadow:0 1px 0 rgba(255,255,255,.06),0 4px 16px rgba(0,0,0,.18)}.hd .wrap{display:flex;align-items:center;gap:16px;height:56px}.hd .brand{display:flex;align-items:center;gap:8px;color:#fff;font-weight:700;white-space:nowrap}.hd .brand .logo{display:block}.hd .exam-switch{margin:0}.hd .exam-select{appearance:none;background:var(--primary);color:#fff;border:0;border-radius:999px;padding:6px 32px 6px 14px;font-weight:700;font-size:.95rem;cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='white' stroke-width='2'/></svg>");background-repeat:no-repeat;background-position:right 12px center}.hd .nav{display:flex;gap:2px;margin-left:auto}.hd .nav a{color:#b7c6cf;padding:6px 12px;border-radius:8px;font-size:.95rem;font-weight:500;position:relative}.hd .nav a:hover{color:#fff}.hd .nav a.on{color:#fff}.hd .nav a.on::after{content:"";position:absolute;left:12px;right:12px;bottom:-2px;height:2px;background:#5ec2da;border-radius:2px}.hd .hd-r{display:flex;align-items:center;gap:8px}.hd .hd-r .user{font-size:.85rem;color:#cbd5e1;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hd .hd-r form{margin:0}@media(max-width: 720px){.hd .wrap{flex-wrap:wrap;height:auto;padding:8px 12px;gap:8px}.hd .brand .name{display:none}.hd .nav{order:3;width:100%;justify-content:space-around;margin:0}.hd .hd-r .user{display:none}}.btn{display:inline-flex;align-items:center;justify-content:center;border-radius:10px;padding:10px 18px;font-weight:700;border:1px solid rgba(0,0,0,0);cursor:pointer;font-size:1rem;background:var(--paper);color:var(--text);white-space:nowrap;transition:transform .08s ease,box-shadow .15s ease,background .15s ease}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn.btn-p{background:linear-gradient(180deg, #1593B3, #0E7490);color:#fff;box-shadow:0 2px 6px rgba(14,116,144,.35)}.btn.btn-p:hover{box-shadow:0 6px 14px rgba(14,116,144,.35)}.btn.btn-g{background:#fff;color:var(--primary-dark);border-color:var(--line)}.btn.btn-g:hover{border-color:var(--primary)}.btn.btn-s{padding:6px 12px;font-size:.9rem;border-radius:8px}.chip{display:inline-block;border-radius:999px;padding:2px 10px;font-size:.85rem;background:var(--line);color:var(--text-2)}.chip.chip-o{background:#fef3c7;color:#92400e}.chip.chip-ok{background:#dcfce7;color:#166534}.chip.chip-ng{background:#fee2e2;color:#991b1b}.chip-btn{border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.12);color:#fff;cursor:pointer;margin:2px}.page-hero{position:relative;overflow:hidden;color:#fff;padding:32px 0 36px;background:linear-gradient(120deg, #0B4F63 0%, #0E7490 60%, #16A3C4 100%)}.page-hero::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 85% 40%, rgba(255, 255, 255, 0.18) 0, rgba(255, 255, 255, 0) 28%),radial-gradient(circle at 85% 40%, rgba(255, 255, 255, 0.1) 0, rgba(255, 255, 255, 0) 44%),radial-gradient(circle at 85% 40%, rgba(255, 255, 255, 0.06) 0, rgba(255, 255, 255, 0) 60%);pointer-events:none}.page-hero::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:22px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 24' preserveAspectRatio='none'><path d='M0 14 Q 150 0 300 14 T 600 14 T 900 14 T 1200 14 V 24 H 0 Z' fill='%23EEF4F7'/></svg>") bottom/100% 100% no-repeat}.page-hero .wrap{position:relative;z-index:1}.page-hero .wrap{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}.page-hero h1{margin:0;font-size:1.75rem;font-weight:900}.page-hero .sub{margin:6px 0 0;color:#ddf4fa;max-width:640px}.sec{font-size:1.15rem;font-weight:900;margin:28px 0 12px;display:flex;align-items:center;gap:8px}.sec::before{content:"";width:4px;height:18px;border-radius:2px;background:var(--primary)}.grid-2{display:grid;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));gap:16px}.card{background:var(--paper);border:1px solid rgba(220,230,236,.8);border-radius:16px;padding:18px;box-shadow:var(--shadow)}.sc .h{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:10px}.sc .h b{font-size:1.15rem;font-weight:900}.sc .h span{font-size:.85rem}.sc .kv{display:grid;grid-template-columns:repeat(3, 1fr);gap:8px}.sc .kpi{display:flex;flex-direction:column}.sc .kpi .v{font-size:1.6rem;font-weight:900;color:var(--primary-dark)}.sc .kpi .v small{font-size:.8rem;color:var(--text-2);font-weight:400;margin-left:2px}.sc .kpi .l{font-size:.75rem;color:var(--text-2)}.sc .bar{height:8px;background:#e6eef2;border-radius:4px;margin:14px 0;overflow:hidden}.sc .bar i{display:block;height:100%;background:linear-gradient(90deg, #16A3C4, #0E7490);border-radius:4px}.sc .f{display:flex;gap:8px;flex-wrap:wrap}.crumbs{margin:18px 0 12px;color:var(--text-2);font-size:.9rem}.crumbs a{font-weight:600}.problem .src{font-size:.8rem;margin:0 0 10px;display:inline-block;background:var(--primary-light);color:var(--primary-dark);padding:2px 10px;border-radius:999px}.problem .src a{color:inherit;text-decoration:underline}.problem .body{font-size:1.1rem;line-height:1.8}.problem .body p{margin:0 0 .6em}.problem .fig{font-size:.9rem}.choices{display:flex;flex-direction:column;gap:8px;margin:12px 0 24px}.choice{display:flex;gap:12px;align-items:flex-start;width:100%;text-align:left;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:14px 16px;font:inherit;font-size:1.02rem;cursor:pointer;color:var(--text);box-shadow:0 1px 2px rgba(10,26,36,.04);transition:border-color .12s,box-shadow .12s,transform .08s}.choice .n{flex:0 0 28px;height:28px;border-radius:50%;background:var(--primary-light);color:var(--primary-dark);font-weight:700;display:inline-flex;align-items:center;justify-content:center}.choice .t{flex:1}.choice .t .exp{display:block;margin-top:6px;color:var(--text-2);font-size:.9rem}.choice:hover{border-color:var(--primary);box-shadow:0 4px 12px rgba(14,116,144,.15);transform:translateY(-1px)}.choice.is-correct{border-color:var(--ok);background:#f0fdf4}.choice.is-correct .n{background:var(--ok);color:#fff}.choice.is-selected:not(.is-correct){border-color:var(--ng);background:#fef2f2}.choice.is-selected:not(.is-correct) .n{background:var(--ng);color:#fff}.review .choice{cursor:default}.verdict{display:flex;align-items:baseline;gap:12px;padding:12px 16px;border-radius:12px;margin:16px 0}.verdict b{font-size:1.2rem}.verdict.ok{background:#dcfce7;color:#166534}.verdict.ng{background:#fee2e2;color:#991b1b}.actions{display:flex;gap:8px;margin:16px 0 32px}.tbl{width:100%;border-collapse:collapse;background:var(--paper);border:1px solid var(--line);border-radius:12px;overflow:hidden}.tbl th,.tbl td{padding:8px 12px;border-bottom:1px solid var(--line);text-align:left;font-size:.95rem}.tbl th{background:#f8fafc;color:var(--text-2);font-weight:600}.flash{padding:8px 0;font-size:.95rem}.flash.flash-notice{background:#dcfce7;color:#166534}.flash.flash-alert{background:#fee2e2;color:#991b1b}.ft{margin-top:auto;padding:24px 0;color:var(--text-2);font-size:.8rem}.ft .wrap{display:flex;flex-direction:column;gap:4px}.app-main{padding-bottom:32px}.auth{max-width:440px;margin:32px auto;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:28px 24px}.auth h1{margin:0 0 4px;font-size:1.4rem;text-align:center}.auth>.muted{text-align:center;margin:0 0 18px;font-size:.95rem}.auth .field{margin-bottom:14px}.auth .field label{display:block;font-size:.85rem;color:var(--text-2);margin-bottom:4px}.auth .field input[type=email],.auth .field input[type=password]{width:100%;padding:11px;border:1px solid var(--line);border-radius:8px;font:inherit}.auth .field small{display:block;margin-top:2px;font-size:.8rem}.auth .field.check{display:flex;align-items:center;gap:6px}.auth .field.check label{margin:0}.auth .wide{width:100%}.auth form{margin:0}.auth .auth-links{display:flex;justify-content:center;gap:16px;margin-top:16px;font-size:.9rem}.oauth form{margin:0 0 8px}.oauth .btn{width:100%}.oauth .oauth-google{background:#fff;color:var(--text);border-color:var(--line)}.oauth .oauth-apple{background:#000;color:#fff}.oauth .or{display:flex;align-items:center;gap:10px;color:var(--text-2);font-size:.8rem;margin:12px 0 16px}.oauth .or::before,.oauth .or::after{content:"";flex:1;height:1px;background:var(--line)}#error_explanation{color:var(--ng);font-size:.9rem}.chip-acc{background:var(--primary-light);color:var(--primary-dark)}.grid-3{display:grid;grid-template-columns:repeat(3, 1fr);gap:12px;margin-top:16px}.kpi-card{display:flex;flex-direction:column;align-items:center}.kpi-card .v{font-size:2rem;font-weight:900;color:var(--primary-dark)}.kpi-card .l{font-size:.8rem;color:var(--text-2)}.srs{margin:16px 0 32px}.srs .srs-q{margin:0 0 10px;font-weight:600}.srs-grades{display:grid;grid-template-columns:repeat(3, 1fr);gap:8px}.srs-grades form{margin:0}.srs-grades .grade{width:100%;display:flex;flex-direction:column;gap:2px;padding:10px 6px}.srs-grades .grade b{font-size:1rem}.srs-grades .grade small{font-size:.75rem;color:var(--text-2);font-weight:400}.srs-grades .grade.g1{border-color:#fcd34d}.srs-grades .grade.g2{border-color:var(--primary)}.srs-grades .grade.g3{border-color:var(--ok)}.due-card{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:-10px;border-left:4px solid var(--primary)}ul.plain{list-style:none;padding:0;margin:0 0 10px}ul.plain li{padding:4px 0;border-bottom:1px dashed var(--line);font-size:.95rem}ul.plain li small{margin-left:6px}.daily-bars{display:flex;gap:6px;align-items:flex-end;height:120px;margin-bottom:12px}.daily-bars .db{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}.daily-bars .db i{display:block;width:100%;max-width:28px;background:var(--primary);border-radius:4px 4px 0 0;min-height:2px}.daily-bars .db small{font-size:.7rem;color:var(--text-2);margin-top:4px}.tbl.compact td,.tbl.compact th{padding:6px 10px}.inline-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.inline-form input[type=date],.inline-form input[type=number]{padding:8px;border:1px solid var(--line);border-radius:8px;font:inherit}.inline-form input[type=number]{width:90px}.figimg{margin:8px 0 4px;text-align:center}.figimg img{max-width:100%;max-height:360px;border:1px solid var(--line);border-radius:8px;background:#fff}.mock-grid{grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));margin-top:0}.mock-cell .h{display:flex;justify-content:space-between;margin-bottom:8px}.mock-cell .h b{font-size:1.05rem}.mock-cell .score{display:flex;flex-direction:column;margin-bottom:10px}.mock-cell .score .v{font-size:1.6rem;font-weight:700}.mock-cell .score .v small{font-size:.8rem;font-weight:400;color:var(--text-2);margin-left:2px}.mock-cell .score .l{font-size:.78rem;color:var(--text-2)}.mock-cell .score.ok .v{color:var(--ok)}.mock-cell .score.ng .v{color:var(--ng)}.mock-cell form{margin:0}.mock-bar{height:6px;background:var(--line);border-radius:3px;margin:0 0 12px;overflow:hidden}.mock-bar i{display:block;height:100%;background:var(--primary)}details.rv{margin-bottom:8px;padding:0}details.rv summary{padding:12px 16px;cursor:pointer;list-style:none;display:flex;gap:8px;align-items:center}details.rv summary .muted{font-weight:400}details.rv .rv-body{padding:0 16px 12px}details.rv .rv-body .problem{border:0;padding:0 0 8px}details.rv.ng{border-color:#fecaca}.countdown,.goal{display:flex;align-items:baseline;gap:6px}.countdown .v,.goal .v{font-size:1.5rem;font-weight:700}.countdown .v small,.goal .v small{font-size:.8rem;font-weight:400;margin-left:2px}.countdown .l,.goal .l{font-size:.85rem;color:#e0f2fe}.countdown .chip,.goal .chip{margin-left:6px}.hero-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.hero-side .hero-link{color:#e0f2fe;font-size:.85rem;text-decoration:underline}.mock-card{margin-top:12px;border-left-color:var(--accent)}.form-v .field{margin-bottom:14px}.form-v .field label{display:block;font-size:.85rem;color:var(--text-2);margin-bottom:4px}.form-v .field input[type=date],.form-v .field input[type=number]{padding:10px;border:1px solid var(--line);border-radius:8px;font:inherit}.form-v .field small{display:block;margin-top:2px;font-size:.8rem}.form-v .actions{margin:8px 0 0}.setup h1{margin:0 0 4px;font-size:1.3rem}.setup fieldset{border:0;padding:0;margin:14px 0 0}.setup fieldset legend{font-size:.85rem;color:var(--text-2);margin-bottom:6px}.setup fieldset{display:flex;flex-wrap:wrap;gap:8px}.setup .seg input{position:absolute;opacity:0}.setup .seg span{display:inline-flex;flex-direction:column;align-items:center;padding:8px 14px;border:1px solid var(--line);border-radius:10px;cursor:pointer;font-weight:600}.setup .seg span small{font-weight:400;font-size:.75rem;color:var(--text-2)}.setup .seg input:checked+span{background:var(--primary);color:#fff;border-color:var(--primary)}.setup .seg input:checked+span small{color:#e0f2fe}.setup .seg input:focus-visible+span{outline:2px solid var(--primary-dark)}.hd .menu{position:relative}.hd .menu .avatar{width:34px;height:34px;border-radius:50%;background:var(--primary);color:#fff;border:0;font-weight:700;cursor:pointer}.hd .menu .menu-sheet{position:absolute;right:0;top:42px;background:var(--paper);color:var(--text);border:1px solid var(--line);border-radius:12px;min-width:220px;box-shadow:0 8px 24px rgba(0,0,0,.12);padding:6px;z-index:20}.hd .menu .menu-sheet .menu-head{padding:8px 10px;border-bottom:1px solid var(--line);margin-bottom:4px;display:flex;flex-direction:column}.hd .menu .menu-sheet .menu-head .muted{font-size:.8rem}.hd .menu .menu-sheet .menu-item{display:block;width:100%;text-align:left;padding:8px 10px;border-radius:8px;color:var(--text);background:none;border:0;font:inherit;cursor:pointer}.hd .menu .menu-sheet .menu-item:hover{background:var(--body-bg)}.hd .menu .menu-sheet .menu-item.out{color:var(--ng)}.hd .menu .menu-sheet form{margin:0}.tabbar{display:none}@media(max-width: 720px){.hd .nav{display:none}.hd .wrap{flex-wrap:nowrap;height:52px}.tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;background:var(--paper);border-top:1px solid var(--line);z-index:15;padding-bottom:env(safe-area-inset-bottom, 0px)}.tabbar a{flex:1;text-align:center;padding:10px 0 8px;font-size:.8rem;color:var(--text-2);font-weight:600}.tabbar a.on{color:var(--primary);border-top:2px solid var(--primary);margin-top:-1px}.app-main{padding-bottom:72px}.ft{padding-bottom:72px}}.ft-links{margin-left:10px}.ft-links a{color:var(--text-2);text-decoration:underline}.lg-head{padding:36px 0 18px;display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}.lg-head h1{font-size:26px;margin:0}.lg-head .upd{font-size:13px;color:var(--text-2);margin-top:6px}.lg-tabs{display:flex;gap:6px}.lg-tabs a{padding:6px 12px;border:1px solid var(--line);border-radius:999px;font-size:.9rem;color:var(--text-2);background:var(--paper)}.lg-tabs a.on{background:var(--primary);color:#fff;border-color:var(--primary)}.lg-grid{display:grid;grid-template-columns:220px minmax(0, 680px);gap:48px;justify-content:center;align-items:start;margin-top:8px}.lg-toc{position:sticky;top:76px}.lg-toc h3{font-size:12px;color:var(--text-2);margin:0 0 8px;font-weight:600}.lg-toc ol{list-style:none;margin:0;padding:0;font-size:13px}.lg-toc li a{display:block;padding:5px 10px;color:var(--text);line-height:1.5;border-radius:6px}.lg-toc li a:hover{background:var(--primary-light)}.lg-body{font-size:15px;line-height:1.9;color:var(--text);background:var(--paper);border-radius:16px;padding:24px 28px;box-shadow:var(--shadow)}.lg-body h2{font-size:17px;margin:34px 0 10px;padding-top:12px;border-top:1px solid var(--line)}.lg-body h2:first-child{margin-top:0;border-top:0;padding-top:0}.lg-body h3{font-size:15px;margin:20px 0 8px}.lg-body ol{padding-left:1.6em;margin:0 0 12px}.lg-body li{margin-bottom:6px}.lg-body ul{padding-left:1.4em;margin:6px 0 10px}.lg-body p{margin:0 0 12px}.lg-body a{color:var(--primary);font-weight:600}.lg-body table{width:100%;border-collapse:collapse;font-size:14px;margin:8px 0 14px}.lg-body table th,.lg-body table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}.lg-body table th{background:var(--body-bg);font-weight:600}@media(max-width: 900px){.lg-grid{grid-template-columns:minmax(0, 1fr)}.lg-toc{position:static}.lg-toc ol{display:flex;flex-wrap:wrap;gap:4px}.lg-toc li a{border:1px solid var(--line);border-radius:6px;background:var(--paper);padding:4px 9px}}@media(max-width: 760px){.lg-head{padding-top:22px}.lg-head h1{font-size:22px}.lg-body{font-size:14px;padding:18px 16px}}
