:root{--navy:#211D18;--blue:#E07211;--lt:#F1ECE3;--bd:#E5DDCF;--ok:#16a34a;--ng:#dc2626;--warn:#E07211;--cream:#FBF8F2;--lav:#FDEFD9;}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;background:#eeecf6;color:#242038;font-size:15px;}
/* button は色を継がない。既定は buttontext で、iOS の WebView では
   それがシステムの青になる。指定を忘れたボタンだけが青くなり、
   Web(黒)と見た目が食い違う。ここで一度だけ継がせる。
   自分で色を決めているきまりは、これより後に来るので影響しない */
button{font-family:inherit;cursor:pointer;color:inherit;}
.hidden{display:none!important;}
/* header */
#hdr{background:var(--cream);color:var(--navy);padding:calc(12px + env(safe-area-inset-top,0px)) 20px 12px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:50;border-bottom:1px solid var(--bd);}
#hdr h1{font-size:16px;font-weight:700;letter-spacing:.02em;}
#timer{font-size:21px;font-weight:700;font-variant-numeric:tabular-nums;background:var(--navy);color:#fff;padding:4px 18px;border-radius:999px;}
#timer.warn{background:var(--ng);animation:blink 1s infinite;}
@keyframes blink{50%{opacity:.6}}
#hdr .hbtn{background:var(--navy);color:#fff;border:none;border-radius:999px;padding:8px 20px;font-weight:600;}
#hdr .hbtn.danger{background:#b91c1c;color:#fff;}
.hchip2{display:inline-flex;align-items:center;gap:3px;border-radius:8px;padding:2px 7px;font-size:11.5px;}
/* home */
.wrap{max-width:1000px;margin:0 auto;padding:20px 16px 60px;}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;margin-top:16px;}
.card{background:#fff;border:1px solid transparent;border-radius:22px;padding:22px;cursor:pointer;transition:.18s;box-shadow:0 2px 12px rgba(28,23,51,.05);}
.card:hover{border-color:var(--blue);box-shadow:0 6px 18px rgba(37,99,235,.18);transform:translateY(-2px);}
.card.hi{border-color:var(--lav);background:linear-gradient(180deg,#f5f3fc,#fff);}
#nav{display:flex;gap:6px;background:var(--cream);border-bottom:1px solid var(--bd);padding:8px 16px;position:sticky;top:calc(56px + env(safe-area-inset-top,0px));z-index:45;overflow-x:auto;}
#nav button{border:none;background:none;padding:8px 20px;border-radius:999px;font-size:14px;font-weight:700;color:#6b6685;cursor:pointer;white-space:nowrap;}
#nav button:hover{background:var(--lt);}
#nav button.act{background:var(--navy);color:#fff;}
.hero{background:linear-gradient(150deg,#dcd6f5,#c3bbec 55%,#a89ee0);color:var(--navy);border-radius:26px;padding:28px 32px;display:flex;flex-wrap:wrap;gap:18px;align-items:center;justify-content:space-between;box-shadow:0 14px 34px rgba(124,111,208,.28);margin-top:12px;}
.hero .big{font-size:36px;font-weight:800;line-height:1.2;margin-top:4px;letter-spacing:.01em;}
.hbar{background:rgba(28,23,51,.15);height:8px;border-radius:4px;margin-top:12px;min-width:240px;}
.hfill{background:var(--navy);height:100%;border-radius:4px;}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin-top:14px;}
.stile{background:#fff;border:1px solid transparent;border-radius:18px;padding:14px 8px;text-align:center;box-shadow:0 2px 10px rgba(28,23,51,.05);}
.stile:nth-child(3){background:var(--navy);}
.stile:nth-child(3) .v,.stile:nth-child(3) .l{color:#fff;}
.stile:nth-child(3) .l{opacity:.7;}
.stile .v{font-size:20px;font-weight:800;color:var(--navy);}
.stile .l{font-size:11.5px;color:#64748b;margin-top:3px;}
h2.sect{margin:24px 0 10px;font-size:17px;color:var(--navy);}
.rstep{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:1px solid var(--bd);border-left:5px solid #cbd5e1;background:#fff;border-radius:0 10px 10px 0;margin-bottom:6px;}
.rstep.now{border-left-color:var(--blue);background:#eff6ff;box-shadow:0 3px 12px rgba(37,99,235,.12);}
.rstep.done{border-left-color:var(--ok);}
.rstep.past{border-left-color:var(--warn);}
.rchip{font-size:11px;font-weight:700;padding:3px 10px;border-radius:10px;background:#e2e8f0;color:#475569;white-space:nowrap;margin-top:2px;}
.rstep.now .rchip{background:var(--blue);color:#fff;}
.rstep.done .rchip{background:#bbf7d0;color:#14532d;}
.rgoal{font-size:12.5px;color:#475569;margin-top:3px;}
.qzc{display:block;width:100%;text-align:left;background:#fff;border:1.5px solid var(--bd);border-radius:14px;padding:14px 18px;font-size:14.5px;margin:8px 0;cursor:pointer;font-family:inherit;transition:.12s;}
.qzc:hover{border-color:var(--blue);}
.qzc.ok{background:#dcfce7;border-color:var(--ok);font-weight:700;}
.qzc.ng{background:#fee2e2;border-color:var(--ng);}
.qzc:disabled{cursor:default;}
/* 祝福・ガチャ・庭 */
#cele-ovl{position:fixed;inset:0;background:rgba(28,23,51,.72);z-index:120;display:flex;align-items:center;justify-content:center;padding:20px;}
#cele-box{background:#fff;border-radius:26px;padding:34px 30px;text-align:center;max-width:480px;width:100%;}
.confetti{position:fixed;top:-16px;width:10px;height:14px;z-index:121;pointer-events:none;border-radius:2px;animation:confFall linear forwards;}
@keyframes confFall{to{transform:translateY(112vh) rotate(720deg);}}
@keyframes gshake{0%,100%{transform:rotate(0)}25%{transform:rotate(-14deg)}75%{transform:rotate(14deg)}}
#garden{position:relative;height:440px;border-radius:26px;overflow:hidden;background:linear-gradient(#bfe3f7 0%,#e2f3fc 42%,#a6d88b 42%,#8cc973 100%);box-shadow:0 2px 14px rgba(28,23,51,.08);}
#garden .sun{position:absolute;top:24px;right:36px;width:56px;height:56px;border-radius:50%;background:#ffd66b;box-shadow:0 0 30px #ffd66b;}
#garden .cloud{position:absolute;background:#fff;border-radius:20px;opacity:.9;}
.pixdog{image-rendering:pixelated;}  /* 常時の上下ゆれは廃止(2026-08-20 本人の指示) */
@keyframes pixBob{0%,49%{transform:translateY(0)}50%,100%{transform:translateY(-4px)}}
.pixdog.paw{animation:pawTilt .5s;}
@keyframes pawTilt{30%{transform:rotate(-10deg) translateY(-6px)}60%{transform:rotate(6deg)}}
.pheart{position:absolute;width:12px;height:12px;background:#e05656;clip-path:polygon(50% 100%,0 38%,25% 0,50% 26%,75% 0,100% 38%);animation:heartUp 1s ease-out forwards;pointer-events:none;z-index:5;}
@keyframes heartUp{to{transform:translateY(-52px);opacity:0;}}
.dogico{width:54px;height:54px;background:#fff;border:2px solid var(--bd);border-radius:12px;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;}
.dogico.sel{border-color:var(--blue);background:#f5f3fc;}
.dogico .pixdog{animation:none;}
.rrow{display:flex;align-items:center;gap:12px;background:#fff;border-radius:14px;padding:10px 16px;margin-bottom:6px;cursor:pointer;box-shadow:0 1px 6px rgba(28,23,51,.05);}
.rrow.me{outline:2px solid var(--blue);}
.rrow .ricon{width:36px;height:36px;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.rrow .ricon .pixdog{animation:none;}
.rnum2{font-weight:800;color:#8a84a3;min-width:36px;font-size:15px;}
.rrow .rv{margin-left:auto;font-weight:800;color:var(--navy);white-space:nowrap;}
.rtab{border:none;background:#fff;border-radius:999px;padding:8px 18px;font-weight:700;color:#6b6488;cursor:pointer;}
.rtab.act{background:var(--navy);color:#fff;}
.cgrid{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,13px);gap:3px;overflow-x:auto;padding-bottom:4px;}
.cgrid div{width:13px;height:13px;border-radius:3px;}
.card h3{font-size:16px;color:var(--navy);margin-bottom:6px;}
.card p{font-size:13px;color:#64748b;line-height:1.6;}
.card .meta{margin-top:8px;font-size:12px;color:var(--blue);font-weight:600;}
/* tabs */
#tabs{display:flex;gap:6px;background:#e2ddf3;padding:8px 12px;position:sticky;top:56px;z-index:40;overflow-x:auto;}
.tab{border:1px solid transparent;background:#fff;border-radius:999px;padding:8px 20px;font-size:14px;font-weight:600;color:var(--navy);white-space:nowrap;}
.tab.act{background:var(--navy);color:#fff;border-color:var(--navy);}
.tab .st{display:inline-block;margin-left:6px;font-size:11px;padding:1px 6px;border-radius:8px;background:#e2e8f0;color:#475569;}
.tab .st.done{background:#bbf7d0;color:#14532d;}
/* question area */
.qpane{background:#fff;border:1px solid transparent;border-radius:20px;padding:24px;margin-top:14px;line-height:1.8;box-shadow:0 2px 12px rgba(28,23,51,.05);}
.qpane h2{font-size:17px;color:var(--navy);border-left:5px solid var(--navy);padding-left:10px;margin-bottom:12px;}
.qtext{white-space:pre-line;margin-bottom:14px;}
.qtext table,.qpane table.tb{border-collapse:collapse;margin:10px 0;background:#fff;}
.qpane table.tb th,.qpane table.tb td{border:1px solid var(--bd);padding:5px 12px;font-size:13.5px;text-align:right;}
.qpane table.tb th{background:var(--lt);text-align:center;font-weight:600;}
.qpane table.tb td.l{text-align:left;}
.jitem{border:1px solid var(--bd);border-radius:8px;padding:14px;margin-bottom:16px;}
.jitem .no{font-weight:700;color:var(--navy);margin-bottom:6px;}
.jgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px;}
.jside .cap{font-size:12px;font-weight:700;color:#64748b;text-align:center;background:var(--lt);border:1px solid var(--bd);border-bottom:none;padding:4px;border-radius:6px 6px 0 0;}
.jrow{display:flex;border:1px solid var(--bd);border-top:none;}
.jrow select{flex:1.4;border:none;padding:8px 6px;font-size:13.5px;background:#fff;min-width:0;}
.jrow input{flex:1;border:none;border-left:1px solid var(--bd);padding:8px;font-size:14px;text-align:right;min-width:0;font-variant-numeric:tabular-nums;}
.jrow select:focus,.jrow input:focus{outline:2px solid var(--blue);outline-offset:-2px;}
.boxrow{display:flex;align-items:center;gap:10px;padding:8px 4px;border-bottom:1px dashed var(--bd);flex-wrap:wrap;}
.boxrow .lbl{flex:1;min-width:220px;}
.boxrow input{width:160px;border:1px solid var(--bd);border-radius:6px;padding:8px;text-align:right;font-size:15px;font-variant-numeric:tabular-nums;}
.boxrow select.fav{border:1px solid var(--bd);border-radius:6px;padding:8px;}
.boxrow input:focus{outline:2px solid var(--blue);}
/* 表の中の入力欄(勘定記入・製造原価報告書・配賦表)。横に長いときは表だけ横スクロール */
.gwrap{overflow-x:auto;margin:10px 0 14px;-webkit-overflow-scrolling:touch;}
table.gt{border-collapse:collapse;background:#fff;min-width:100%;font-size:13.5px;}
table.gt caption{caption-side:top;text-align:left;font-weight:700;color:var(--navy);padding:0 0 4px;}
table.gt th,table.gt td{border:1px solid var(--bd);padding:5px 8px;white-space:nowrap;}
table.gt th{background:var(--lt);text-align:center;font-weight:600;}
table.gt td.l{text-align:left;}
table.gt td.c{text-align:center;}
table.gt td.n{text-align:right;font-variant-numeric:tabular-nums;}
table.gt td.gc{text-align:right;padding:3px 4px;}
table.gt td.gc input{width:112px;border:1px solid var(--bd);border-radius:6px;padding:6px;text-align:right;font-size:14px;font-variant-numeric:tabular-nums;}
table.gt td.gc select.fav{border:1px solid var(--bd);border-radius:6px;padding:6px;margin-left:4px;max-width:min(260px,70vw);}
table.gt td.gc input:focus{outline:2px solid var(--blue);}
table.gt td.gc .correct,table.gt td.gc .wrong,table.gt td.gc .prog{display:block;font-size:11px;white-space:normal;max-width:190px;text-align:right;margin:2px 0 0 auto;}
/* 問題集の一覧 */
.bk{display:flex;flex-direction:column;gap:10px;margin-top:12px;}
.bk-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:#fff;border:1px solid var(--bd);border-radius:12px;padding:14px;font-family:inherit;cursor:pointer;}
.bk-lv{font-size:11px;font-weight:800;color:var(--navy);background:var(--lt);border-radius:999px;padding:3px 9px;white-space:nowrap;}
.bk-t{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0;}
.bk-t b{font-size:15px;}
.bk-t i{font-style:normal;font-size:12px;color:#64748b;}
.bk-row u{text-decoration:none;font-size:12px;color:#64748b;white-space:nowrap;}
.bk-k{text-decoration:none;font-size:10.5px;color:#64748b;white-space:nowrap;margin-left:6px;}
.note{font-size:13px;color:#64748b;background:var(--lt);border-radius:6px;padding:8px 12px;margin:8px 0;}
/* result */
.res-big{font-size:40px;font-weight:800;text-align:center;margin:10px 0;}
.pass{color:var(--ok);}.fail{color:var(--ng);}
.rtable{width:100%;border-collapse:collapse;margin:14px 0;}
.rtable th,.rtable td{border:1px solid var(--bd);padding:8px 12px;text-align:center;}
.rtable th{background:var(--lt);}
.correct{color:var(--ok);font-weight:700;}
.wrong{color:var(--ng);font-weight:700;}
.exp{background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:12px;margin-top:8px;font-size:13.5px;line-height:1.8;white-space:pre-line;}
.ans-cmp{font-size:13.5px;margin-top:6px;}
.ans-cmp .u{color:var(--ng);}.ans-cmp .a{color:var(--ok);font-weight:600;}
/* 正解のときは自分の解答＝正解なので、赤の比較を出さず1行だけ緑で見せる */
.ans-cmp.ok .u{color:var(--ok);}
/* drill */
.drill-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px;}
.chip{border:1px solid var(--bd);background:#fff;border-radius:20px;padding:6px 14px;font-size:13px;}
.chip.act{background:var(--navy);color:#fff;border-color:var(--navy);}
.btn{background:var(--blue);color:#fff;border:none;border-radius:12px;padding:11px 28px;font-size:15px;font-weight:700;}
/* 次に押してほしい所=金。それ以外は白か枠線だけ、というルールにする */
:root{--gold:#f5a524;--goldd:#c77f10;--golds:#fff6e3;}
.btn.go{background:var(--gold);color:#3d2708;box-shadow:0 4px 0 var(--goldd);}
.btn.go:active{transform:translateY(3px);box-shadow:0 1px 0 var(--goldd);}
.btn.ghost{background:#fff;color:var(--navy);border:2px solid var(--bd);box-shadow:0 3px 0 var(--bd);}
.btn.gray{background:#94a3b8;}
.btn.green{background:var(--ok);}
.btn:disabled{opacity:.5;cursor:default;}
.prog{font-size:13px;color:#64748b;}
/* dashboard */
.dgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;margin-top:14px;}
.dcard{background:#fff;border:1px solid var(--bd);border-radius:10px;padding:16px;}
.dcard h3{font-size:14px;color:var(--navy);margin-bottom:10px;}
.bar{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:13px;}
.bar .bl{width:130px;flex-shrink:0;}
.bar .bt{flex:1;background:#e2e8f0;border-radius:4px;height:16px;overflow:hidden;}
.bar .bf{height:100%;border-radius:4px;background:var(--blue);}
.bar .bf.low{background:var(--ng);}.bar .bf.mid{background:var(--warn);}.bar .bf.high{background:var(--ok);}
.bar .bv{width:70px;text-align:right;font-variant-numeric:tabular-nums;}
.prow{display:flex;align-items:center;gap:10px;padding:9px 6px;border-bottom:1px dashed var(--bd);cursor:pointer;font-size:14px;}
.prow:hover{background:var(--lt);}
.pst{width:36px;text-align:center;font-weight:800;border-radius:6px;padding:3px 0;font-size:13px;flex-shrink:0;background:#e2e8f0;color:#64748b;}
.pst.ok{background:#bbf7d0;color:#14532d;}
.pst.mid{background:#fde68a;color:#78350f;}
.pst.gd{background:#dbeafe;color:#1e40af;}
/* ===== HUD (ごはん券 / Lv EXPバー / チケット) ===== */
#hud{display:flex;align-items:center;gap:10px;background:linear-gradient(135deg,#1e2749,#2d3a63);border-radius:999px;padding:5px 14px;cursor:pointer;box-shadow:0 2px 10px rgba(15,23,42,.22);user-select:none;}
#hud .hud-i{display:inline-flex;align-items:center;gap:4px;color:#fff;font-weight:800;font-size:13px;font-family:inherit;}
#hud .hud-i b{min-width:14px;text-align:right;font-variant-numeric:tabular-nums;}
#hud .hud-lv{display:inline-flex;align-items:center;gap:6px;padding:0 8px;border-left:1px solid rgba(255,255,255,.18);border-right:1px solid rgba(255,255,255,.18);}
#hud .hud-lvn{color:#fbbf24;font-weight:800;font-size:12.5px;white-space:nowrap;}
#hud .hud-lvn b{font-size:14.5px;}
#hud .hud-bar{display:block;width:70px;height:8px;background:rgba(255,255,255,.18);border-radius:999px;overflow:hidden;}
#hud .hud-bar>i{display:block;height:100%;width:0;background:linear-gradient(90deg,#fbbf24,#fde68a);border-radius:999px;transition:width .6s cubic-bezier(.2,.9,.3,1);}
#hud .hud-exp{color:rgba(255,255,255,.62);font-size:10.5px;font-variant-numeric:tabular-nums;white-space:nowrap;}
@keyframes hudpulse{0%{transform:scale(1);}45%{transform:scale(1.35);}100%{transform:scale(1);}}
#hud .pulse{animation:hudpulse .45s;}
@media(max-width:900px){#hud{gap:6px;padding:4px 9px;}#hud .hud-bar{width:44px;}#hud .hud-exp{display:none;}}
/* 吸い込みエフェクト */
.flyi{position:fixed;z-index:9999;pointer-events:none;font-size:19px;line-height:1;display:flex;align-items:center;gap:2px;font-weight:800;color:#f59e0b;text-shadow:0 1px 3px rgba(0,0,0,.25);will-change:transform,opacity;}
/* レベルアップ */
#lvup{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;background:rgba(10,14,30,.72);animation:fadein .25s;}
#lvup .box{background:linear-gradient(160deg,#1e2749,#392d63);border:2px solid #fbbf24;border-radius:24px;padding:34px 40px;text-align:center;color:#fff;box-shadow:0 24px 60px rgba(0,0,0,.5);max-width:340px;}
#lvup .big{font-size:15px;letter-spacing:5px;color:#fbbf24;font-weight:800;}
#lvup .num{font-size:64px;font-weight:900;line-height:1.05;margin:2px 0 6px;background:linear-gradient(180deg,#fff,#fbbf24);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
#lvup .unl{background:rgba(251,191,36,.14);border-radius:14px;padding:11px 14px;margin-top:14px;font-size:13.5px;line-height:1.7;text-align:left;}
@keyframes fadein{from{opacity:0;}to{opacity:1;}}
/* Lv情報パネル */
#lvinfo{position:fixed;inset:0;z-index:9998;background:rgba(15,23,42,.5);display:flex;align-items:center;justify-content:center;padding:16px;}
#lvinfo .box{background:#fff;border-radius:22px;padding:24px;max-width:420px;width:100%;max-height:82vh;overflow:auto;}
/* ローディング(犬が歩く) */

@keyframes hop{0%,100%{transform:translateY(0);}50%{transform:translateY(-4px);}}
@keyframes blink{0%,60%{opacity:.25;}30%{opacity:1;}}
/* ===== 戦闘バー(問題カードの外・画面上部に固定) ===== */
#btbar{position:fixed;left:216px;right:0;top:calc(var(--hdrh,56px) + var(--sat,0px));z-index:60;background:rgba(255,255,255,.97);
  border-bottom:1px solid var(--bd);box-shadow:0 4px 14px rgba(15,23,42,.07);backdrop-filter:blur(6px);}
#nav.hidden~#btbar{left:0;}
body.dark #btbar{background:rgba(23,21,18,.97);}
/* 中身は本文カラム(.wrap>*:not(.page) の 920px)にそろえる */
#btbar .btbar-in{max-width:920px;margin:0 auto;padding:8px 28px 10px;display:flex;align-items:flex-end;gap:12px;}
@media(max-width:900px){#btbar{left:0;}}
.btside{display:flex;flex-direction:column;align-items:center;gap:2px;flex-shrink:0;}
.btlives{line-height:1;white-space:nowrap;}
.btlives i{font-style:normal;font-size:14px;color:#e2e8f0;margin:0 .5px;transition:color .3s;}
.btlives i.on{color:#ef4444;}
.btdog{display:inline-flex;align-items:flex-end;line-height:0;}
.bttrack{position:relative;flex:1;height:46px;}
/* 下地=経験値ゾーン(右ほど早解き=高経験値)。btbarf が右から覆って残り時間を表す */
.btbar-l{position:absolute;left:0;right:0;bottom:2px;height:10px;border-radius:999px;overflow:hidden;
  background:linear-gradient(90deg,#94a3b8 0%,#94a3b8 20%,#0e7a5f 20%,#0e7a5f 40%,#2563eb 40%,#2563eb 60%,#8b5cf6 60%,#8b5cf6 80%,#f59e0b 80%,#f59e0b 100%);}
.btbar-l>i{position:absolute;right:0;top:0;bottom:0;width:0%;background:#e2e8f0;border-left:2px solid #fff;}
body.dark .btbar-l>i{background:#334155;border-left-color:#94a3b8;}
.btbar-l::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(90deg,rgba(255,255,255,.75) 0,rgba(255,255,255,.75) 1px,transparent 1px,transparent 20%);}
.xpzone{position:absolute;left:0;right:0;top:0;height:13px;display:flex;justify-content:space-between;
  font-size:9.5px;font-weight:800;color:var(--tx2);letter-spacing:.02em;pointer-events:none;}
.rkbar{display:inline-flex;gap:2px;margin-left:7px;vertical-align:middle;}
.rkbar i{display:block;width:9px;height:9px;border-radius:2px;background:#e2e8f0;}
.skpop.bad{background:rgba(190,18,60,.94);}
@keyframes munch{0%,100%{transform:translateY(0) scale(1);}30%{transform:translateY(-4px) scale(1.12);}60%{transform:translateY(0) scale(.96);}}
.btdog.munch{animation:munch .45s ease-out;}
.btfoe{position:absolute;bottom:7px;left:calc(100% - 30px);line-height:0;}

@keyframes foebob{0%,100%{transform:translateY(0) scaleY(1);}50%{transform:translateY(-3px) scaleY(.93);}}
@keyframes dogatk{0%{transform:translateX(0);}30%{transform:translateX(14px) scaleX(1.08);}100%{transform:translateX(0);}}
.btdog.atk{animation:dogatk .38s cubic-bezier(.3,1.6,.5,1);}
@keyframes foeatk{0%{transform:translateX(0);}35%{transform:translateX(-18px);}100%{transform:translateX(0);}}
.btfoe.atk{animation:foeatk .34s ease-out;}
@keyframes foedie{0%{transform:scale(1);opacity:1;}45%{transform:scale(1.35) rotate(8deg);opacity:.9;}100%{transform:scale(.1) translateY(6px);opacity:0;}}
.btfoe.dead{animation:foedie .42s ease-in forwards;}
@keyframes doghurt{0%,100%{filter:none;}25%,75%{filter:brightness(2.6) saturate(0);}50%{filter:brightness(.4);}}
.btdog.hurt{animation:doghurt .42s steps(1);}
@keyframes btshake{0%,100%{transform:translateX(0);}20%{transform:translateX(-7px);}40%{transform:translateX(6px);}60%{transform:translateX(-4px);}80%{transform:translateX(3px);}}
.bttrack.shake{animation:btshake .4s;}
.bttrack.frozen{filter:hue-rotate(150deg) brightness(1.1);}
.btsk{font-size:11px;font-weight:800;color:#7c3aed;background:#f3e8ff;border:1px solid #ddd6fe;border-radius:999px;padding:2px 8px;white-space:nowrap;flex-shrink:0;}
.btskbtn{font-size:11px;font-weight:800;color:#0369a1;background:#e0f2fe;border:1.5px solid #7dd3fc;border-radius:999px;padding:3px 10px;cursor:pointer;font-family:inherit;white-space:nowrap;flex-shrink:0;}
.btskbtn:disabled{opacity:.4;cursor:default;}
/* 戦闘中は本文を下げてバーと重ならないようにする */
body.bton .wrap{padding-top:calc(var(--btbarh,58px) + 8px);}
/* 特技と時間切れの吹き出しもバー側に出す */
.skpop{position:absolute;left:50%;top:11px;transform:translateX(-50%);background:rgba(15,23,42,.92);color:#fff;font-size:12px;font-weight:800;padding:4px 12px;border-radius:999px;white-space:nowrap;z-index:5;animation:skp 1.6s ease-out forwards;pointer-events:none;}
@keyframes skp{0%{opacity:0;transform:translate(-50%,8px) scale(.8);}18%{opacity:1;transform:translate(-50%,-6px) scale(1.05);}30%{transform:translate(-50%,-2px) scale(1);}80%{opacity:1;}100%{opacity:0;transform:translate(-50%,-16px);}}
@media(max-width:900px){
  #btbar .btbar-in{padding:6px 14px 8px;gap:9px;}
  .bttrack{height:42px;}
  body.bton .wrap{padding-top:calc(var(--btbarh,54px) + 6px);}
}
/* 敗走 */
#btlose{position:fixed;inset:0;z-index:10000;background:rgba(8,6,14,.86);display:flex;align-items:center;justify-content:center;padding:16px;animation:fadein .3s;}
#btlose .box{background:linear-gradient(165deg,#2a1420,#3b1030);border:2px solid #be123c;border-radius:22px;padding:30px 34px;text-align:center;color:#fff;max-width:340px;}
#btlose .ttl{font-size:26px;font-weight:900;letter-spacing:8px;color:#fb7185;font-family:'DotGothic16','Zen Kaku Gothic New',sans-serif;}
#btlose .half{background:rgba(255,255,255,.08);border-radius:12px;padding:10px;font-weight:800;font-size:14.5px;}
#btlose .half span{color:#fb7185;font-size:11.5px;margin-left:2px;}
.ctabs{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}
.ctab{border:2px solid var(--bd);background:#fff;border-radius:999px;padding:8px 16px;font-size:13.5px;font-weight:800;cursor:pointer;color:var(--tx2);font-family:inherit;}
.ctab.on{border-color:var(--blue);background:var(--blue);color:#fff;}
.ctab small{font-size:10.5px;opacity:.7;margin-left:5px;font-weight:700;}
/* ドリル入口カード */
.dgate{border:2px solid;border-radius:16px;padding:14px 16px;margin-top:12px;}
.dgate-h{display:flex;align-items:center;gap:10px;}
.dgate-ic{font-size:26px;line-height:1;}
.dgate-h b{font-size:19px;}
.dgate-h small{font-size:11.5px;color:var(--tx2);margin-left:6px;font-weight:700;}
.dgate-foe{margin-left:auto;line-height:0;}
.dgate p{font-size:13px;margin:8px 0 10px;color:var(--tx2);}
.dgate-st{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--tx2);}
.dgate-st b{color:var(--navy);}
.dgate-warn{margin-top:10px;background:#fee2e2;color:#b91c1c;border-radius:10px;padding:8px 11px;font-size:12.5px;font-weight:700;}
.gtag.beta{background:#0e7a5f;color:#fff;}
.lockrow{opacity:.55;cursor:default;}
.lockarea{text-align:center;padding:38px 20px;background:var(--lt);border-radius:16px;margin-top:14px;}
.lockarea .lockic{font-size:40px;line-height:1;}
.lockarea b{display:block;color:var(--navy);font-size:16px;margin:10px 0 4px;}
.dgate-lock{margin-top:10px;background:#f1f5f9;color:#475569;border-radius:10px;padding:8px 11px;font-size:12.5px;font-weight:700;}
/* ===== スタミナ ===== */
#hud .hud-st{color:#fde68a;}
#hud .hud-st.low{color:#fca5a5;animation:stlow 1.4s infinite;}
@keyframes stlow{0%,100%{opacity:1;}50%{opacity:.45;}}
.stampill{display:inline-flex;align-items:center;gap:3px;background:#fff7ed;border:1px solid #fed7aa;border-radius:999px;padding:3px 10px;font-size:12.5px;font-weight:800;color:#b45309;}
.stampill span{opacity:.65;font-weight:700;}
.stampill i{font-style:normal;font-size:10.5px;opacity:.7;margin-left:4px;font-weight:700;}
.stampill.empty{background:#fee2e2;border-color:#fca5a5;color:#b91c1c;}
.dcost{font-size:11.5px;font-weight:800;color:#b45309;background:#fff7ed;border:1px solid #fed7aa;border-radius:999px;padding:1px 8px;margin-left:6px;white-space:nowrap;}
.dlock{font-size:11.5px;font-weight:800;color:#64748b;background:#f1f5f9;border:1px solid var(--bd);border-radius:999px;padding:1px 8px;margin-left:6px;white-space:nowrap;}
.ctab.lock{opacity:.55;}
/* 入場ゲート */
#gatev{position:fixed;inset:0;z-index:9998;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;padding:16px;animation:fadein .2s;}
#gatev .box{background:#fff;border-radius:22px;padding:26px 28px;max-width:340px;text-align:center;}
#gatev .gi{font-size:44px;line-height:1;}
#gatev h3{color:var(--navy);font-size:18px;margin:8px 0 6px;}
#gatev p{font-size:13.5px;color:var(--tx2);margin:0 0 14px;line-height:1.7;}
#bagv{position:fixed;inset:0;z-index:9998;background:rgba(15,23,42,.5);display:flex;align-items:center;justify-content:center;padding:16px;}
#bagv .box{background:#fff;border-radius:22px;padding:24px;max-width:420px;width:100%;max-height:82vh;overflow:auto;}
/* 合格予測 */
.fcwrap{text-align:center;}
.fcnum{display:flex;align-items:baseline;justify-content:center;gap:10px;}
.fcnum span{font-size:12.5px;color:var(--tx2);font-weight:700;}
.fcnum b{font-size:44px;color:var(--navy);line-height:1;font-family:'DotGothic16','Zen Kaku Gothic New',sans-serif;}
.fcnum small{font-size:16px;margin-left:2px;}
.fcbar{position:relative;height:14px;background:#e2e8f0;border-radius:999px;margin:12px 0 4px;overflow:visible;}
.fcbar>div{height:100%;background:linear-gradient(90deg,#38bdf8,#22c55e);border-radius:999px;transition:width .6s;}
.fcbar>i{position:absolute;top:-4px;width:2px;height:22px;background:#ef4444;}
.fcbar>i::after{content:"合格70";position:absolute;top:-15px;left:50%;transform:translateX(-50%);font-size:10px;color:#ef4444;font-weight:800;font-style:normal;white-space:nowrap;}
.fctxt{font-size:13.5px;color:var(--tx2);line-height:1.8;margin-top:12px;}
.fcrec{margin-top:14px;background:var(--lt);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:7px;align-items:center;}
.fcrec>span:first-child{font-size:12px;font-weight:800;color:var(--navy);}
/* ゴールドパス */
#goldv{position:fixed;inset:0;z-index:9998;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;padding:16px;}
#goldv .box{background:#fff;border-radius:22px;padding:26px;max-width:460px;width:100%;max-height:84vh;overflow:auto;text-align:center;}
#goldv .gcrown{font-size:44px;line-height:1;}
#goldv h2{border:none;padding:0;margin:6px 0 8px;color:var(--navy);}
.gtable{width:100%;border-collapse:collapse;margin-top:12px;font-size:12.5px;}
.gtable th,.gtable td{border:1px solid var(--bd);padding:7px 9px;text-align:left;}
.gtable th{background:var(--lt);font-size:12px;}
.gtable th:last-child{background:#fff8e6;color:#92400e;}
.gtable td:last-child{background:#fffdf5;}
.gtag{font-size:11px;background:#fff8e6;color:#92400e;border:1px solid #fcd34d;border-radius:999px;padding:1px 8px;margin-left:6px;vertical-align:2px;}
.gpromo{display:flex;align-items:center;gap:14px;cursor:pointer;background:linear-gradient(135deg,#fffdf5,#fff8e6);border:1.5px solid #fcd34d;}
.gpromo b{color:#92400e;font-size:15px;}
.gpromo .arw{color:#b45309;font-weight:800;white-space:nowrap;}
.lockwrap{position:relative;}
.lockblur{filter:blur(5px);opacity:.5;pointer-events:none;user-select:none;max-height:190px;overflow:hidden;}
.lockover{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;}
.lockover>div:first-child{font-size:28px;}
.lockover b{color:var(--navy);font-size:14px;}
.rwd .rwdno{font-size:11.5px;font-weight:800;border-radius:999px;padding:2px 10px;white-space:nowrap;}
.rwd .g1{background:#fef3c7;color:#92400e;}
.rwd .g2{background:#e5e7eb;color:#374151;}
.rwd .g3{background:#fce7d6;color:#9a3412;}
.rwd .g4{background:var(--lt);color:var(--tx2);}
.bonusb{font-size:10.5px;font-weight:800;color:#b45309;background:#fff8e6;border:1px solid #fcd34d;border-radius:6px;padding:1px 6px;margin-left:4px;}
.cprog{display:flex;align-items:center;gap:12px;margin:10px 0 4px;}
.cprog-bar{flex:1;height:12px;background:#e2e8f0;border-radius:999px;overflow:hidden;}
.cprog-bar>div{height:100%;background:linear-gradient(90deg,#22c55e,#4ade80);border-radius:999px;transition:width .5s;}
.tiernew{font-size:10.5px;font-weight:800;color:var(--blue);background:#dbeafe;border-radius:6px;padding:1px 6px;margin-left:4px;vertical-align:1px;}
/* 5要素分類ドリル */
.accwrap{max-width:480px;margin:0 auto;}
.acchead{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--tx2);font-weight:700;margin-bottom:6px;}
.acctimer{height:8px;background:#e2e8f0;border-radius:999px;overflow:hidden;margin-bottom:14px;}
.acctimer>div{height:100%;background:linear-gradient(90deg,#3b82f6,#60a5fa);border-radius:999px;}
.acccard{background:#fff;border:1px solid var(--bd);border-radius:20px;padding:26px 18px;box-shadow:0 10px 30px rgba(15,23,42,.08);}
.accname{text-align:center;font-size:24px;font-weight:800;color:var(--navy);background:#eef2ff;border-radius:12px;padding:16px 10px;margin-bottom:18px;letter-spacing:1px;}
.accgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.accbtn{border:none;border-radius:14px;padding:22px 8px;font-size:16.5px;font-weight:800;color:#fff;background:linear-gradient(135deg,#4f5fe3,#5b6cf0);cursor:pointer;font-family:inherit;transition:transform .08s;}
.accbtn:active{transform:scale(.96);}
.accbtn.tall{grid-row:span 2;}
.accbtn.hit{background:linear-gradient(135deg,#16a34a,#22c55e)!important;}
.accbtn.miss{background:linear-gradient(135deg,#dc2626,#ef4444)!important;}
.accbtn.dim{opacity:.45;}
.acccombo{text-align:center;font-size:15px;font-weight:800;color:#ea580c;height:22px;margin-top:12px;}
@keyframes accpop{0%{transform:scale(.6);opacity:0;}60%{transform:scale(1.15);}100%{transform:scale(1);opacity:1;}}
.acccombo b{display:inline-block;animation:accpop .3s;}
/* 速度ランクのバッジ */
.rkb{display:inline-block;min-width:22px;text-align:center;border-radius:6px;color:#fff;font-weight:900;font-size:12.5px;padding:2px 6px;margin-right:5px;animation:accpop .35s;}
.rkn{font-size:12.5px;font-weight:800;color:var(--tx2);}
.rkr{font-size:12.5px;font-weight:800;color:#b45309;margin-left:6px;white-space:nowrap;}
.xpsum{margin-top:10px;background:#fff8e6;border:1px solid #fde68a;border-radius:12px;padding:9px 14px;font-size:13.5px;font-weight:700;color:#92400e;text-align:center;}
details.kc{border:1px solid var(--bd);border-radius:8px;margin:8px 0;background:#fff;}
details.kc summary{cursor:pointer;padding:11px 14px;font-weight:600;color:var(--navy);list-style:none;}
details.kc summary::before{content:"▸ ";}
details.kc[open] summary::before{content:"▾ ";}
details.kc .kb{padding:0 16px 14px;line-height:1.9;white-space:pre-line;font-size:14px;border-top:1px dashed var(--bd);padding-top:10px;}
.kcat{font-size:15px;font-weight:700;color:var(--navy);margin:18px 0 4px;border-left:5px solid var(--navy);padding-left:10px;}
/* 採点のあとに出す仕訳表。答案が表なのだから、答えも表で返す。
   借方と貸方を左右。行数の少ない側は空欄で埋める。
   科目名が長いので、金額の列だけ幅を決めて、科目に残りを渡す */
.jt{margin-top:10px;}
.jt em{display:block;font-style:normal;font-size:11px;font-weight:800;color:var(--dim);
  margin-bottom:5px;letter-spacing:.04em;}
.jt-t{border:2px solid var(--bd);border-radius:11px;overflow:hidden;background:var(--card);}
.jt-r{display:grid;grid-template-columns:1fr 5.2em 1fr 5.2em;align-items:center;
  border-top:1.5px solid var(--bd);min-height:36px;}
.jt-r:first-child{border-top:none;}
.jt-r>span{padding:6px 8px;min-width:0;overflow-wrap:anywhere;}
.jt-r>span:nth-child(3){border-left:1.5px solid var(--bd);}
.jt-h{background:var(--bg);}
.jt-h>span{font-size:10.5px;font-weight:800;color:var(--dim);letter-spacing:.08em;}
.jt-h>span:nth-child(1),.jt-h>span:nth-child(3){grid-column:span 2;}
.jt-h>span:nth-child(2),.jt-h>span:nth-child(4){display:none;}
.jt-a{font-size:12.5px;font-weight:700;color:var(--navy);}
.jt-v{font-size:12.5px;font-weight:700;color:var(--navy);text-align:right;}
.jt-none{border:2px dashed var(--bd);border-radius:11px;padding:14px;text-align:center;
  font-size:12px;font-weight:700;color:var(--dim);}
.jt.ok .jt-t{border-color:var(--ok);}
.jt.ok em{color:var(--ok);}
.jt.ng .jt-t{border-color:var(--ng);}
.jt.ng em{color:var(--ng);}

/* タブではない画面の見出し。左に戻る口 */
.nvsub{display:flex;align-items:center;gap:11px;padding:6px 0 14px;}
.nvsub-b{flex:none;width:38px;height:38px;border:2px solid var(--bd);border-radius:12px;
  background:var(--card);padding:0;cursor:pointer;
  display:flex;align-items:center;justify-content:center;}
.nvsub-b .nvic{width:19px;height:19px;color:var(--navy);transform:scaleX(-1);}
.nvsub-b:active{transform:translateY(1px);}
.nvsub-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.nvsub-t b{font-size:21px;font-weight:900;color:var(--navy);letter-spacing:-.03em;line-height:1.2;}
.nvsub-t i{font-style:normal;font-size:11.5px;font-weight:600;color:var(--dim);}
/* ドリルの2つめの入口。えらぶが主、つづきからは副 */
.sh2-sub{display:block;width:100%;margin-top:8px;border:none;background:none;
  font-family:inherit;font-size:12px;font-weight:800;color:var(--blue);
  cursor:pointer;padding:6px 0;}

.calcbtn{position:fixed;right:18px;bottom:18px;background:var(--navy);color:#fff;border:none;border-radius:50%;width:54px;height:54px;padding:0;line-height:0;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 3px 10px rgba(0,0,0,.3);z-index:60;}
#calc{position:fixed;right:18px;bottom:84px;background:#fff;border:1px solid var(--bd);border-radius:12px;box-shadow:0 6px 24px rgba(0,0,0,.25);padding:12px;z-index:70;width:240px;max-width:calc(100vw - 24px);}
#calc-e{min-height:17px;font-size:12.5px;color:var(--tx2);text-align:right;margin-bottom:4px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#calc input{width:100%;text-align:right;font-size:20px;padding:8px;border:1px solid var(--bd);border-radius:6px;margin-bottom:8px;font-variant-numeric:tabular-nums;}
#calc .cg{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;}
#calc button{padding:10px 0;font-size:16px;border:1px solid var(--bd);background:var(--lt);border-radius:6px;}
#calc button.op{background:#dbeafe;}
@media(max-width:700px){.jgrid{grid-template-columns:1fr;}}
/* アプリでは借方・貸方を横に並べる。左右が同時に見えないと貸借が確かめられない */
html.v2 .jgrid{grid-template-columns:1fr 1fr!important;gap:7px;}
html.v2 .jside .cap{font-size:11.5px;padding:5px;}
html.v2 .jrow{flex-direction:column;}
html.v2 .jrow select,html.v2 .acctbtn{flex:none;width:100%;font-size:12.5px;padding:8px 7px;
  border-bottom:1px solid var(--bd);text-align:left;}
html.v2 .jrow input[data-j]{flex:none;width:100%;border-left:none;font-size:16px;
  padding:7px 8px;text-align:right;}
html.v2 .jadd{font-size:11.5px;padding:8px 0;}
/* ===== アプリのときの画面設計 ===== */
/* v1 の枠は使わない。ただしフッター(非公式の但し書き・法務リンク)は
   Web では残す。検索から来た人に見せる文章であり、審査でも参照される */
html.v2 #hdr,html.v2 #nav{display:none!important;}
/* ただし模試の間だけは戻す。90分の残り時間と「試験終了」が見えないまま
   試験に入っていた(v2でヘッダごと消していたため) */
html.v2 body.exam #hdr{display:flex!important;}
html.native-ios #ftr{display:none!important;}
/* 下のタブバーに隠れないよう、Web のフッターに余白を足す。
   LP にはタブバーが無いので、そちらは通常の余白でよい */
html.v2 #ftr{padding-bottom:calc(86px + var(--sab,0px));}
/* 解いている間は出さない。規約や運営の話は、問題を解いている人には
   関係がないうえ、電卓のボタンがこの上に浮いて置き場所が読めなくなる */
html.v2 body.solving #ftr,html.v2 body.exam #ftr,html.v2 body.tuton #ftr{display:none;}
html.v2.lp #ftr{padding-bottom:26px;}
html.v2{--sat:0px;--sab:0px;}
html.v2 .wrap{padding:calc(10px + var(--sat)) 14px calc(96px + var(--sab));}
html.v2 body.solving .wrap{padding-bottom:calc(150px + var(--sab));}
html.v2 .calcbtn{bottom:calc(102px + var(--sab));}
/* 電卓は問題を解いている間だけ。一覧や設定の画面に浮いているのは邪魔 */
html.v2 .calcbtn{display:none;}
/* flex を block で上書きすると、中の絵が左上に寄る。出し入れは flex のままで行う */
html.v2 body.solving .calcbtn,html.v2 body.exam .calcbtn{display:flex;}
html.v2 #calc{bottom:calc(164px + var(--sab));}

html.v2 #solvebar{bottom:calc(72px + var(--sab));}
/* 下のタブバー */
#nvtab{position:fixed;left:0;right:0;bottom:0;z-index:70;display:flex;
  background:var(--card,#fff);border-top:1px solid var(--bd);
  padding:6px 4px calc(6px + var(--sab,env(safe-area-inset-bottom,0px)));}
#nvtab button{flex:1;background:none;border:none;display:flex;flex-direction:column;align-items:center;gap:2px;
  padding:5px 0;font-family:inherit;cursor:pointer;opacity:.45;}
#nvtab button.on{opacity:1;}
#nvtab button i{font-style:normal;font-size:8.5px;font-weight:800;color:var(--tx2);white-space:nowrap;letter-spacing:-.04em;}
#nvtab button.on i{color:var(--flame,var(--blue));}
/* ===== オンボーディング(アプリ・全画面) ===== */
body.onbon{overflow:hidden;}
#onb{position:fixed;inset:0;z-index:2600;background:var(--bg,#f6f7f8);
  display:flex;flex-direction:column;
  padding:calc(8px + var(--sat,0px)) 18px calc(16px + var(--sab,0px));}
.ob-hd{display:flex;align-items:center;gap:12px;padding:4px 0 10px;}
.ob-x{border:none;background:none;font-size:24px;line-height:1;color:var(--tx2);cursor:pointer;padding:2px 6px;font-family:inherit;}
/* もどる。矢印は右向きしか無いので、左右を反転して使う */
.ob-back{border:none;background:none;cursor:pointer;padding:2px 4px;font-family:inherit;
  display:flex;align-items:center;color:var(--tx2);}
.ob-back .nvic{width:20px;height:20px;color:currentColor;transform:scaleX(-1);}

/* オンボーディング中は右下の道具を出さない。
   まだ何も解いていないので、電卓もAIも使いようがない */
body.onbon .calcbtn,body.onbon #wfab,body.onbon #calc{display:none!important;}
.ob-bar{flex:1;height:14px;border-radius:8px;background:var(--lt);overflow:hidden;}
.ob-bar i{display:block;height:100%;border-radius:8px;background:var(--ok,#06E176);transition:width .35s ease;}
/* 進みは段の数だけ区切る(bokiinu2.pen C1)。
   あと何回でこれが終わるのかが、帯の割合より読み取りやすい */
.ob-seg{flex:1;display:flex;gap:4px;}
.ob-seg s{flex:1;text-decoration:none;height:6px;border-radius:3px;background:var(--bd);
  transition:background .25s ease;}
.ob-seg s.on{background:var(--blue);}
.ob-body{flex:1;display:flex;flex-direction:column;justify-content:center;overflow-y:auto;padding:6px 0;}
.ob-foot{padding-top:10px;}
.ob-sub2{text-align:center;margin-top:12px;}
.ob-sub2 a,.ob-txt{font-size:13px;font-weight:800;color:var(--tx2);text-decoration:underline;cursor:pointer;
  background:none;border:none;font-family:inherit;display:inline-block;padding:6px;}
/* 見出し・設問 */
.ob-h1{font-size:34px;font-weight:900;color:var(--navy);margin:10px 0 2px;text-align:center;}
body.dark .ob-h1{color:#dfe7f5;}
.ob-lead{font-size:14.5px;color:var(--tx2);text-align:center;margin:0;}
.ob-q{font-size:25px;font-weight:900;line-height:1.4;color:var(--navy);}
body.dark .ob-q{color:#dfe7f5;}
.ob-qsub{font-size:13px;color:var(--tx2);margin-top:10px;line-height:1.8;}
.ob-hero{text-align:center;}
/* 犬のふきだし */
.ob-say{display:flex;flex-direction:column;align-items:center;gap:10px;}
.ob-bub{position:relative;background:var(--card,#fff);border:2px solid var(--bd);border-radius:18px;
  padding:16px 18px;font-size:16px;font-weight:700;line-height:1.85;color:var(--navy);}
body.dark .ob-bub{color:#dfe7f5;}
.ob-bub::after{content:"";position:absolute;left:50%;bottom:-11px;transform:translateX(-50%);
  width:18px;height:18px;background:var(--card,#fff);border-right:2px solid var(--bd);border-bottom:2px solid var(--bd);
  clip-path:polygon(100% 0,100% 100%,0 100%);rotate:45deg;}
/* dogCanvas が inline で寸法を書くので上書きする(元絵は 64x64 の正方形) */
.ob-dog{display:flex;justify-content:center;}
.ob-dog canvas{image-rendering:pixelated;width:104px!important;height:104px!important;}
.ob-dog.big canvas{width:150px!important;height:150px!important;}
/* 選択肢 */
.ob-opts{display:flex;flex-direction:column;gap:11px;margin-top:20px;}
.ob-opt{background:var(--card,#fff);border:2px solid var(--bd);box-shadow:0 3px 0 var(--bd);
  border-radius:16px;padding:13px 14px;font-size:15.5px;font-weight:800;color:var(--navy);
  cursor:pointer;text-align:left;font-family:inherit;transition:.1s;
  display:flex;align-items:center;gap:12px;}
/* 絵文字は札に入れ、説明を1行そえる */
.ob-oi{flex:none;width:42px;height:42px;border-radius:11px;background:var(--bg);
  display:flex;align-items:center;justify-content:center;font-size:20px;line-height:1;}
.ob-opt.on .ob-oi{background:var(--card);}
.ob-ot{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.ob-ot b{font-size:14.5px;font-weight:800;}
.ob-ot i{font-style:normal;font-size:11px;font-weight:500;color:var(--dim);line-height:1.6;}
.ob-otag{flex:none;background:var(--blue);border-radius:6px;padding:3px 7px;
  font-size:10px;font-weight:800;color:#FFFFFF;}
/* 段の見出し */
.ob-step{display:flex;align-items:center;gap:6px;margin-bottom:9px;
  font-size:11px;font-weight:700;color:var(--blue);}
.ob-step .nvic{width:14px;height:14px;color:currentColor;}
.ob-btn.off{opacity:.42;pointer-events:none;}
body.dark .ob-opt{color:#dfe7f5;}
.ob-opt:active{transform:translateY(3px);box-shadow:0 0 0 var(--bd);}
.ob-opt.on{border-color:var(--blue);box-shadow:0 3px 0 var(--blue);background:var(--blue-tint,#EAF2FF);}
.ob-opt input{border:none;background:none;font-family:inherit;font-size:15px;flex:1;min-width:0;}
.ob-opt button{border:none;background:var(--navy);color:#fff;border-radius:999px;padding:8px 16px;
  font-family:inherit;font-weight:800;margin-left:10px;}
/* ボタン */
.ob-btn{width:100%;border:none;border-radius:16px;padding:16px;font-family:inherit;
  font-size:16px;font-weight:900;color:#fff;cursor:pointer;
  background:var(--blue,#0161E8);box-shadow:0 4px 0 var(--blue-deep,#0044A8);
  display:flex;align-items:center;justify-content:center;gap:8px;}
.ob-btn .nvic{width:18px;height:18px;color:currentColor;}
.ob-btn:active{transform:translateY(2px);box-shadow:0 2px 0 var(--blue-deep,#0044A8);}
.ob-btn.ghost{margin-top:10px;background:var(--card,#fff);color:var(--tx2);
  border:2px solid var(--bd);box-shadow:0 3px 0 var(--bd);}
/* ウィジェットの見本 */
.ob-wid{display:flex;justify-content:center;margin:20px 0 4px;}
.ob-widcard{width:158px;background:var(--card,#fff);border:1.5px solid var(--bd);border-radius:20px;
  padding:13px 14px;display:flex;flex-direction:column;gap:5px;box-shadow:0 6px 18px rgba(0,0,0,.12);}
.ob-widh{font-size:10.5px;font-weight:900;color:var(--tx2);}
.ob-widd{font-size:13px;font-weight:900;color:var(--tx2);}
.ob-widd b{font-size:30px;color:var(--blue);}
.ob-widbar{display:block;height:7px;border-radius:4px;background:var(--lt);overflow:hidden;}
.ob-widbar i{display:block;height:100%;background:var(--blue);}
.ob-widp{font-size:10.5px;font-weight:800;color:var(--tx2);}
/* 料金 */
.ob-plan{margin-top:18px;border:1.5px solid var(--bd);border-radius:16px;overflow:hidden;}
.ob-prow{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--bd);background:var(--card,#fff);}
.ob-prow:last-child{border-bottom:none;}
.ob-prow b{font-size:13.5px;color:var(--navy);min-width:64px;}
body.dark .ob-prow b{color:#dfe7f5;}
.ob-prow span{font-size:13px;color:var(--tx2);margin-left:auto;text-align:right;}
/* 引き留め */
#onbhold{position:fixed;inset:0;z-index:2700;background:rgba(15,10,40,.55);display:flex;align-items:flex-end;}
#onbhold .ob-hold{background:var(--card,#fff);width:100%;border-radius:22px 22px 0 0;
  padding:20px 18px calc(22px + var(--sab,0px));text-align:center;}
#onbhold .ob-holddog{display:flex;justify-content:center;margin-bottom:4px;}
#onbhold .ob-holddog canvas{image-rendering:pixelated;width:86px!important;height:86px!important;}
#onbhold b{display:block;font-size:23px;font-weight:900;color:var(--navy);margin-bottom:6px;}
body.dark #onbhold b{color:#dfe7f5;}
#onbhold p{font-size:14px;color:var(--tx2);line-height:1.85;margin:0 0 16px;}
#onbhold p b{display:inline;font-size:inherit;color:var(--blue);}
/* ===== boki.pen のライトモード・トークン =====================================
   .pen の duo-tokens-light をそのまま持ってくる。アプリ(native-ios)のライト時だけ。
   ダークは今回さわらない。 */
/* 暗いほうを基準に設計する(2026-08-31)。明るいほうは同じ役割を移し替えたもの。
   色には役割を1つずつ与え、それ以外に使わない:
   橙=続けている / 青=次へ進む / 緑=正しい / 赤=失う */
html.v2 body.dark{
  /* v2の夜版: 紙とインクを反転しただけ。青の彩度を落として眩しさを消す(2026-09-02) */
  --bg:#101114; --card:#191B1F; --lt:#0B0C0E; --bd:rgba(255,255,255,.13);
  --navy:#F2F3F5; --tx2:#A0A4AB; --dim:#686D75;
  --g1:#5F87EE; --g2:#7DA0F5; --g2-deep:#3D63C8;
  --grad:linear-gradient(100deg,var(--g1) 0%,var(--g2) 100%);
  --flame:#FFD98A; --flame-tint:#2C2510;
  --streak:#FFA05C;
  --stk-on:#4A3A18;
  /* 大問1〜5の青。夜は地が暗いので、明るい側へ5段まるごとずらす。
     昼の #12326E は夜の地に沈んで、帯があること自体が見えなくなる */
  --al1:#3E6FE6; --al2:#6E9BF2; --al3:#9BBCF8; --al4:#BFD5FB; --al5:#E0EBFE;
  --al-ink-a:#0E2352; --al-ink-b:#0E2352;
  --blue:#5F87EE; --blue-deep:#3D63C8; --blue-tint:#1C2740;
  --ok:#3FBF8A; --ok-deep:#2E9C6E;
  --ng:#E06455;
  --locked:#1C1E23; --locked-deep:#101216;
  --accent:#5F87EE; --accent-deep:#3D63C8; --magenta:#5F87EE;
  --cyan:#5F87EE; --cyan-tint:#1C2740; --cyan-text:#9DB6F5;
  --gold:#FFC947; --gold-deep:#D9A320; --silver:#98A2B0; --bronze:#C4703A;
  --cream:#101114; --lav:#1C2740; --warn:#FFD98A;
  --gsA:rgba(255,255,255,.06); --gsB:rgba(255,255,255,.03); --ghi:rgba(255,255,255,.10);
  --road:#1B1E24; --ink:#F2F3F5;
  color:#F2F3F5;
  background:var(--bg);
}
html.v2 body:not(.dark){
  /* v2「紙とインク」(bokiinu2.pen 2026-09-02): 生成りの地・白いカード・墨・青。
     青=次へ進む / 金=ごほうび / 緑=正しい / 赤=失う。数字はモノスペース */
  --bg:#F7F5F0; --card:#FFFFFF; --lt:#EFEDE7; --bd:#DCDAD4;
  --navy:#14161A; --tx2:#6B6E75; --dim:#8A8D94;
  --g1:#2B5CE0; --g2:#4A78F2; --g2-deep:#1E44AC;
  --grad:linear-gradient(100deg,var(--g1) 0%,var(--g2) 100%);
  --flame:#5C4300; --flame-tint:#FFC947;
  /* --flame は金地に乗せる墨。連続日数の数字は地の上に置くので別の色が要る */
  --streak:#D2540A;
  /* 連続記録の「その日やった」。--gold と同じ色にすると金メダルと見分けがつかない */
  --stk-on:#FFE3A6;
  /* 大問1〜5の青。隣り合う段の明度差を大きく取って、青だけで5つを見分けさせる */
  --al1:#12326E; --al2:#2B5CE0; --al3:#4E86F0; --al4:#8FB4F7; --al5:#C6DAFB;
  --al-ink-a:#FFFFFF; --al-ink-b:#12326E;
  --blue:#2B5CE0; --blue-deep:#1E44AC; --blue-tint:#E8EDFC;
  --ok:#177A57; --ok-deep:#116045;
  --ng:#C0392B;
  --locked:#EFEDE7; --locked-deep:#E2DFD7;
  --accent:#2B5CE0; --accent-deep:#1E44AC; --magenta:#2B5CE0;
  --cyan:#2B5CE0; --cyan-tint:#E8EDFC; --cyan-text:#1E44AC;
  --gold:#FFC947; --gold-deep:#D9A320; --silver:#98A2B0; --bronze:#C4703A;
  --cream:#F7F5F0; --lav:#E8EDFC; --warn:#7A5200;
  --gsA:#FFFFFF; --gsB:#FFFFFF; --ghi:transparent;
  --road:#E9E6DE; --ink:#14161A;
}
/* ===== Sunset Glass (2026-08-31) =====================================
   面はすりガラス・地はフラット・夕焼けのグラデは販促の全画面だけ。
   ここは見た目の層。トークンの役割(橙=いま触るもの/緑=正しい/赤=失う)は上と同じ */
html.sunset .nvhub-i,html.sunset .nvmy-s,html.sunset .nvpay-p,
html.sunset .nvsoon,html.sunset .ana-top,html.sunset .tcard,
html.sunset #jobv .job-pts>div,html.sunset #inv-ovl .inv-gift>div{
  background:var(--card);
  border:2px solid var(--bd);
  box-shadow:none;}
html.sunset .nvhub-i,html.sunset .nvpay-p,html.sunset .tcard,
html.sunset .ana-top{border-radius:16px;}
html.sunset .nvhub-i:active{transform:translateY(1px);}
html.sunset .nvhub-i.warn{border-color:var(--blue);}
html.sunset .nvpay-p.on{border-color:var(--navy);box-shadow:5px 5px 0 var(--navy);}
/* タブバー: 白地いっぱい+上に墨の線(3px)。選択タブは淡青のピル */
html.sunset #nvtab{left:0;right:0;bottom:0;
  border-radius:0;border:none;border-top:3px solid var(--navy);
  padding:9px 16px calc(9px + var(--sab,env(safe-area-inset-bottom,0px)));
  background:var(--card);box-shadow:none;gap:4px;}
html.sunset #nvtab button{padding:11px 0;opacity:1;position:relative;border-radius:12px;}
html.sunset #nvtab button i{display:none;}
html.sunset #nvtab button .sicon{position:relative;z-index:1;}
html.sunset #nvtab button.on{background:var(--blue-tint);}
/* ボタン: 青のベタ+白文字。フラットで、押すと1px沈むだけ */
html.sunset .btn{color:#fff;border-radius:12px;box-shadow:none;}
html.sunset .btn:active{transform:translateY(1px);box-shadow:none;}
html.sunset .btn.gray{background:var(--card);
  color:var(--navy);border:2px solid var(--bd);box-shadow:none;}
html.sunset .btn.green{color:#fff;box-shadow:none;}
html.sunset #nvpay .nvpay-cta{background:var(--blue);color:#fff;border-radius:12px;
  box-shadow:none;}
html.sunset #nvpay .nvpay-cta:active{transform:translateY(1px);}
/* ホームのノード: 現在地だけ光る。それ以外はガラス */
html.sunset .nvnode:not(.cur){background:transparent;padding-bottom:9px;}
html.sunset .nvnode:not(.cur):active{transform:none;padding-bottom:9px;}
html.sunset .nvnode:not(.done):not(.cur) .nvnode-f{
  background:linear-gradient(160deg,var(--gsA),var(--gsB));
  border:1px solid var(--bd);box-shadow:inset 0 1px 0 var(--ghi);
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);}
html.sunset .nvnode.done .nvnode-f{
  background:linear-gradient(160deg,var(--gsA),var(--gsB));
  border:1px solid rgba(251,185,49,.55);color:var(--g2);
  box-shadow:inset 0 1px 0 var(--ghi);
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);}
html.sunset .nvnode.cur .nvnode-f{box-shadow:0 0 34px rgba(248,143,34,.45);}
html.sunset .nvhere{background:var(--navy);
  border:none;color:var(--card);
  box-shadow:none;}
/* Sunset Glass: きょうの見出しはガラスに(グラデは現在地ノードと販促だけ) */
html.sunset .nvunit{background:var(--card);
  border:3px solid var(--navy);border-radius:16px;box-shadow:5px 5px 0 var(--navy);}
html.sunset .nvunit-t i{color:var(--blue);}
html.sunset .nvunit-t b{color:var(--navy);}
html.sunset .nvunit-b{border-left:2px solid var(--bd);color:var(--tx2);}
html.sunset .nvunit.fin{background:var(--card);
  border-color:var(--ok);box-shadow:5px 5px 0 var(--ok);}
html.sunset .nvunit.fin .nvunit-t b,html.sunset .nvunit.fin .nvunit-b{color:var(--navy);}
html.sunset .nvunit.fin .nvunit-t i{color:var(--ok);}

/* 学習の実力カード: 白の主役カード(墨3px+ベタ影)+青の見出しラベル */
html.sunset .stdy-hero{background:var(--card);
  border:3px solid var(--navy);border-radius:16px;box-shadow:5px 5px 0 var(--navy);color:var(--navy);}
html.sunset .stdy-hero .sh-k{color:var(--blue);letter-spacing:.14em;
  font-family:ui-monospace,'SF Mono',Menlo,monospace;}
html.sunset .stdy-hero .sh-v i{color:var(--tx2);}
html.sunset .stdy-hero .sh-sub{color:var(--tx2);}
html.sunset .stdy-hero .sh-sub b{color:var(--navy);}
html.sunset .stdy-gauge{background:var(--bd);}
html.sunset .stdy-gauge>i{background:var(--blue);}
html.sunset .stdy-gline span{color:var(--tx2);}
/* うねる1本道 */
.nvroad{position:absolute;left:0;top:0;z-index:0;pointer-events:none;overflow:visible;}
.nvroad .rd-base{fill:none;stroke:var(--road,#211E1A);stroke-width:64;
  stroke-linecap:round;stroke-linejoin:round;}
.nvroad .rd-prog{fill:none;stroke:var(--blue);stroke-width:64;
  stroke-linecap:round;stroke-linejoin:round;}
/* ノードは真円(幅=高さ=64) */
html.sunset .nvnode{width:64px;}
/* 行のピクセルアイコンはモノクロに(色が生きるのはキャラクターと現在地だけ) */
html.sunset .nvhub-i .sicon{filter:grayscale(1);opacity:.8;}
/* スイッチのオンは夕焼け色 */
html.sunset .nvsw.on{background:var(--blue);}
/* 現在地ノードも押し込みの土台をやめてフラット+発光 */
html.sunset .nvnode.cur{background:transparent;padding-bottom:9px;}
html.sunset .nvnode.cur:active{transform:translateY(2px);padding-bottom:9px;}
/* 宝箱も真円のガラスに(開けられるときだけ夕焼け色) */
html.sunset .nvchest{width:64px;padding:0;background:transparent;border-radius:50%;}
html.sunset .nvchest span{width:64px;height:64px;border-radius:50%;
  background:linear-gradient(160deg,var(--gsA),var(--gsB));
  border:1px solid var(--bd);box-shadow:inset 0 1px 0 var(--ghi);
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);}
html.sunset .nvchest.open{background:transparent;animation:none;}
html.sunset .nvchest.open span{background:var(--grad);border:none;
  box-shadow:0 0 30px rgba(248,143,34,.4);}
html.sunset .nvchest:active{transform:translateY(1px);padding-bottom:0;}
html.sunset .nvchest:not(.open):active{padding-bottom:0;}
/* 「いまここ」: 跳ねるのをやめて、ノードからやさしい波紋を出す */
html.sunset .nvnode{padding:0;}
html.sunset .nvnode:not(.cur){padding-bottom:0;}
html.sunset .nvnode:not(.cur):active{padding-bottom:0;}
html.sunset .nvnode.cur{animation:none;padding-bottom:0;}
html.sunset .nvnode.cur:active{transform:translateY(1px);padding-bottom:0;}
html.sunset .nvnode.cur::before,html.sunset .nvnode.cur::after{
  content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;
  border:2px solid rgba(248,143,34,.55);
  animation:nvripple 2.8s ease-out infinite;}
html.sunset .nvnode.cur::after{animation-delay:1.4s;}
@keyframes nvripple{
  0%{transform:scale(1);opacity:.65}
  70%{transform:scale(1.6);opacity:0}
  100%{transform:scale(1.6);opacity:0}}
@media (prefers-reduced-motion:reduce){
  html.sunset .nvnode.cur::before,html.sunset .nvnode.cur::after{animation:none;opacity:0;}}
/* ノードは道のり(弧長)で等間隔。位置は nvDrawRoad が振る */
html.sunset .nvnode-w{position:absolute;left:50%;top:0;padding:0;margin:0;
  transform:translate(-50%,-50%);}
/* ポップな押し込み影を全廃(浮きボタン・オンボのボタン) */
html.sunset .nvfloat{position:relative;height:0;left:auto;top:auto;display:block;
  overflow:visible;z-index:9;}
html.sunset .nvfloat .nvfl{margin-top:14px;}
html.sunset .nvfl{background:transparent;padding:0;width:60px;border-radius:0;
  display:flex;flex-direction:column;align-items:center;gap:5px;}
html.sunset .nvfl>span.nvfl-c{width:54px;height:54px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;padding:0;
  background:linear-gradient(160deg,var(--gsA),var(--gsB));
  border:1px solid var(--bd);
  box-shadow:inset 0 1px 0 var(--ghi),0 10px 24px rgba(0,0,0,.18);
  backdrop-filter:blur(20px) saturate(1.5);-webkit-backdrop-filter:blur(20px) saturate(1.5);}
html.sunset .nvfl em{font-size:24px;line-height:1;}
html.sunset .nvfl>b{font-size:9.5px;font-weight:800;color:var(--tx2);margin:0;letter-spacing:.02em;}
html.sunset .nvfl.prem>span.nvfl-c{border-color:rgba(251,185,49,.55);}
html.sunset .nvfl:active{transform:translateY(1px);}
html.sunset .nvfl>span{border-radius:15px;box-shadow:inset 0 1px 0 var(--ghi);}
html.sunset .nvfl:active{transform:translateY(1px);padding-bottom:0;}
html.sunset .nvfl.got{background:transparent;}
html.sunset .ob-btn{box-shadow:none;color:#fff;border-radius:12px;}
html.sunset .ob-btn:active{transform:translateY(1px);box-shadow:none;}
html.sunset .ob-btn.ghost{background:var(--card);
  color:var(--navy);border:2px solid var(--bd);box-shadow:none;}
html.sunset .nvquick button{box-shadow:inset 0 1px 0 var(--ghi);}
html.sunset .nvquick button:active{transform:translateY(1px);box-shadow:inset 0 1px 0 var(--ghi);}
html.sunset .nvunit-b:active{background:none;}
/* ホームはHUDの下に何も潜り込まないレイアウトなので、
   HUDの「下6pxを地の色で塗る影」が不要どころかカードの上辺を隠していた */
html.sunset body.nvhomeon .nvhome2 .nvbar{box-shadow:none;}
/* 育成・順位・学習・分析・マイページの持ち物バーも同じ影が最初のカードの上辺を塗っていた。
   バー自体に地の色が付いているので、下敷きの帯はどの画面でも不要 */
html.sunset .nvhub .nvbar,html.sunset .nvbar-top,
html.sunset .nvplanpg .nvbar{box-shadow:none;}
/* きょうカード: タップできるボタンに。理由の1行つき */
html.sunset .nvunit{font-family:inherit;text-align:left;width:100%;cursor:pointer;align-items:center;}
html.sunset .nvunit-a{color:var(--dim);font-size:20px;padding:0 14px 0 4px;flex-shrink:0;}
/* 道の終点: ゴールの旗 */
html.sunset .nvnode.goal .nvnode-f{background:linear-gradient(160deg,var(--gsA),var(--gsB));
  border:1px solid rgba(251,185,49,.55);box-shadow:inset 0 1px 0 var(--ghi);font-size:24px;
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);}
.nvgoal-t{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%);
  text-align:center;white-space:nowrap;pointer-events:none;}
.nvgoal-t b{display:block;font-size:12px;font-weight:800;color:var(--flame);}
.nvgoal-t i{display:block;font-style:normal;font-size:10.5px;font-weight:700;color:var(--dim);margin-top:2px;}
/* きょうの作戦(下から出るシート) — v2: 白シート+墨3px枠+グリップ */
/* 販促の全画面も同じ紙の地 */
html.sunset #nvpay,html.sunset #jobv,html.sunset #inv-ovl{
  background:var(--bg);}
/* ===== 各タブの中身を .pen の型に =====================================
   .pen の画面は「白地に要素が直に並ぶ」。Web版のカード入れ子(qpane)をほどき、
   見出し26/800 + サブ、行は下に縁のある立体カード、に揃える。 */
html.v2 body:not(.onbon) .qpane{background:none;border:none;box-shadow:none;
  padding:0;margin-top:0;border-radius:0;}
/* セクション見出しは既定18px。画面タイトル(いちばん最初のqpaneの先頭)だけ26px。
   renderDash のように qpane が複数ある画面では、各 qpane の先頭が h2 なので
   :first-child だけでは全部タイトル扱いになってしまう */
html.v2 .qpane>h2{font-size:18px;font-weight:800;color:var(--navy);
  margin:24px 0 8px;letter-spacing:-.01em;line-height:1.5;
  font-family:'Zen Kaku Gothic New',sans-serif;}
html.v2 main>.qpane:first-of-type>h2:first-child{font-size:26px;margin:0 0 4px;}
html.v2 .qpane>h2 .prog{display:block;font-size:13px;font-weight:700;color:var(--tx2);margin-top:4px;}
html.v2 .qpane>h2 .sicon,html.v2 .qpane>h2 [data-icon]{vertical-align:-3px;}
/* 推定点の数字が大きすぎる */
html.v2 .fcnum b{font-size:34px;}
html.v2 .fcnum b small{font-size:15px;}
html.v2 .fcnum span{font-size:12.5px;color:var(--tx2);}
/* 横にはみ出すものを止める */
html.v2 .qpane,html.v2 .qpane>*{max-width:100%;}
/* 問題文だけは端から端まで使う。上の指定より詳細度を上げて外す */
html.v2 .qpane>.qstick{max-width:none;width:100vw;margin-left:calc(50% - 50vw);
  margin-right:calc(50% - 50vw);}
html.v2 .qpane .bar .bl{font-size:11.5px;}
html.v2 .qpane>p,html.v2 .qpane>.prog{font-size:13.5px;font-weight:600;color:var(--tx2);line-height:1.8;}
/* 説明の帯 */
html.v2 .note{background:var(--lt,#F4F4F7);border:1.5px solid var(--bd);border-radius:14px;
  padding:13px 15px;font-size:12.5px;line-height:1.85;color:var(--tx2);}
/* 級などのタブ */
html.v2 .ctabs{display:flex;gap:8px;margin:14px 0 12px;}
html.v2 .ctab{border:1.5px solid var(--bd);background:var(--card);border-radius:999px;
  padding:8px 16px;font-size:13.5px;font-weight:800;color:var(--tx2);}
html.v2 .ctab.on{background:var(--blue);border-color:var(--blue);color:#fff;}
html.v2 .ctab.lock{opacity:.45;}
html.v2 .ctab small{font-size:11px;opacity:.8;margin-left:4px;}
/* 進捗 */
html.v2 .cprog{display:flex;align-items:center;gap:10px;margin:2px 0 14px;}
html.v2 .cprog-bar{flex:1;height:14px;border-radius:999px;background:var(--locked,#EDEDF2);overflow:hidden;}
html.v2 .cprog-bar>div{height:100%;border-radius:999px;background:var(--blue);}
/* かたまり(第1問…) */
html.v2 .dcard{background:none;border:none;box-shadow:none;padding:0;margin-top:22px;}
html.v2 .dcard>h3{font-size:17px;font-weight:800;color:var(--navy);margin:0 0 4px;}
html.v2 .dcard>.prog{font-size:12.5px;color:var(--tx2);line-height:1.8;margin-bottom:10px;}
/* 行 */
html.v2 .prow{background:var(--lt,#F4F4F7);border:1.5px solid var(--bd);border-radius:14px;
  padding:14px 14px;margin-bottom:9px;gap:11px;box-shadow:0 3px 0 var(--locked-deep,#DEDEE5);
  font-size:15px;font-weight:800;color:var(--navy);border-bottom-width:1.5px;}
html.v2 .prow:active{transform:translateY(3px);box-shadow:0 0 0 var(--locked-deep,#DEDEE5);}
html.v2 .prow .prog{font-size:12px;font-weight:700;color:var(--dim,#A2A2AC);}
html.v2 .prow .pst{min-width:34px;height:30px;border-radius:9px;font-size:13px;font-weight:800;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;}
html.v2 .note .pst{display:inline-flex;align-items:center;justify-content:center;
  min-width:26px;height:20px;border-radius:6px;font-size:12px;vertical-align:-4px;}
html.v2 .pst.none{background:var(--locked,#EDEDF2);color:var(--dim,#A2A2AC);}
html.v2 .pst.ok{background:var(--ok,#06E176);color:#fff;}
html.v2 .pst.gd{background:var(--blue-tint,#EAF2FF);color:var(--blue);}
html.v2 .pst.mid{background:#FFF3D6;color:#B45309;}
/* 大きめのカード(模試など) */
html.v2 .tcard{background:var(--lt,#F4F4F7);border:1.5px solid var(--bd);border-radius:16px;
  padding:16px;margin-top:10px;box-shadow:0 3px 0 var(--locked-deep,#DEDEE5);}
html.v2 .tcard:active{transform:translateY(3px);box-shadow:0 0 0 var(--locked-deep,#DEDEE5);}
html.v2 .tcard.white,html.v2 .tcard.light{background:var(--card);}
html.v2 .tcard>h3{font-size:17px;font-weight:800;color:var(--navy);margin:0;}
html.v2 .tcard .arw{font-size:13px;font-weight:700;color:var(--tx2);margin-top:5px;}
html.v2 .tcard.lockrow{opacity:.55;}
/* ボタン */
html.v2 .btn{background:var(--blue);color:#fff;border-radius:12px;padding:13px 22px;
  font-size:15px;font-weight:800;box-shadow:none;}
html.v2 .btn:active{transform:translateY(1px);}
html.v2 .btn.gray{background:var(--lt,#F4F4F7);color:var(--tx2);
  border:1.5px solid var(--bd);box-shadow:0 3px 0 var(--locked-deep,#DEDEE5);}
html.v2 .btn.green{background:var(--ok,#06E176);box-shadow:0 4px 0 var(--ok-deep,#04B85F);}
/* 一覧の行(ランキング等) */
html.v2 .rrow,html.v2 .rrowi{background:none;border-bottom:1px solid var(--bd);}
/* 報酬は常時出さず、タップで開く */
html.v2 .nvfold{background:var(--lt,#F4F4F7)!important;border:1.5px solid var(--bd)!important;
  border-radius:16px!important;padding:0!important;margin:12px 0!important;}
html.v2 .nvfold>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:9px;
  padding:14px 15px;font-size:15.5px;font-weight:800;color:var(--navy);}
html.v2 .nvfold>summary::-webkit-details-marker{display:none;}
html.v2 .nvfold .nvfold-a{margin-left:auto;color:var(--dim,#A2A2AC);font-size:15px;}
html.v2 .nvfold[open] .nvfold-a{transform:rotate(180deg);}
html.v2 .nvfold>*:not(summary){padding-left:15px;padding-right:15px;}
html.v2 .nvfold>*:last-child{padding-bottom:14px;}
/* 始める前の選択シート */
#pickm{position:fixed;inset:0;z-index:2500;background:rgba(15,10,40,.5);display:flex;align-items:flex-end;}
#pickm .pickm-box{background:var(--card,#fff);width:100%;border-radius:26px 26px 0 0;
  border:3px solid var(--navy);border-bottom:none;
  padding:18px 16px calc(20px + var(--sab,0px));}
#pickm .pickm-h{margin:0 4px 14px;}
#pickm .pickm-h b{display:block;font-size:19px;font-weight:800;color:var(--navy);}
#pickm .pickm-h i{display:block;font-style:normal;font-size:12.5px;font-weight:700;color:var(--tx2);margin-top:3px;}
#pickm .pickm-i{display:flex;align-items:center;gap:13px;width:100%;text-align:left;font-family:inherit;
  border:2px solid var(--bd);border-radius:14px;background:var(--card);padding:14px 15px;
  margin-bottom:10px;cursor:pointer;}
#pickm .pickm-i:active{transform:translateY(2px);}
#pickm .pickm-i.guide{border:3px solid var(--navy);box-shadow:4px 4px 0 var(--navy);background:var(--card);}
#pickm .pickm-ic{font-size:26px;}
#pickm .pickm-t b{display:block;font-size:15.5px;font-weight:800;color:var(--navy);}
#pickm .pickm-t i{display:block;font-style:normal;font-size:11.5px;font-weight:700;color:var(--tx2);margin-top:2px;}
#pickm .pickm-learn{display:block;width:100%;margin:0 0 10px;border:1.5px solid var(--bd);
  border-radius:14px;background:var(--lt,#F4F4F7);color:var(--tx2);font-family:inherit;
  font-size:13px;font-weight:800;padding:11px;cursor:pointer;}
#pickm .pickm-c{width:100%;margin-top:4px;border:none;background:none;color:var(--tx2);
  font-family:inherit;font-size:13px;font-weight:700;padding:10px;cursor:pointer;text-decoration:underline;}
/* 下のバーのガイドボタン */
#solvebar .sb-guide{border:1.5px solid var(--bd);background:var(--lt,#F4F4F7);border-radius:12px;
  padding:10px 14px;font-family:inherit;cursor:pointer;box-shadow:0 2px 0 var(--locked-deep,#DEDEE5);}
#solvebar .sb-guide b{font-size:13.5px;font-weight:800;color:var(--navy);white-space:nowrap;}
html.v2 body.solving .nv-hide{display:none;}
/* ===== レッスン完了(Duolingo の結果画面) ===== */
.nvfin{display:flex;flex-direction:column;align-items:center;text-align:center;padding:8px 0 0;}
.nvfin-dog{margin:6px 0 2px;}
.nvfin-dog canvas{image-rendering:pixelated;width:150px!important;height:150px!important;}
.nvfin-h{font-size:30px;font-weight:900;letter-spacing:-.01em;}
.nvfin-h.gold{color:var(--gold,#f5a524);}
.nvfin-h.ok{color:var(--blue,#0161E8);}
.nvfin-h.ng{color:var(--tx2);}
.nvfin-s{font-size:14.5px;font-weight:700;color:var(--tx2);margin:6px 0 18px;line-height:1.7;}
.nvfin-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;width:100%;}
.nvfin-c{border-radius:14px;border:2px solid var(--bd);background:var(--card);padding:11px 4px;}
.nvfin-c i{display:block;font-style:normal;font-size:10.5px;font-weight:700;color:var(--dim);}
.nvfin-c b{display:block;padding-top:5px;
  font-size:17px;font-weight:700;color:var(--navy);
  font-family:ui-monospace,'SF Mono',Menlo,monospace;}
.nvfin-c.xp b{color:var(--blue);}
.nvfin-tk{margin-top:12px;font-size:13.5px;font-weight:800;color:var(--accent,#9B00E8);}
.nvfin-foot{width:100%;margin-top:22px;display:flex;flex-direction:column;gap:10px;}
/* ===== 連続記録の祝い ===== */
#nvstreak{position:fixed;inset:0;z-index:2650;background:var(--bg,#fff);display:flex;flex-direction:column;
  padding-bottom:calc(16px + var(--sab,0px));}
.nvst-top{background:linear-gradient(180deg,#FF9D2E,#F27A00);padding:calc(34px + var(--sat,0px)) 22px 30px;
  display:flex;align-items:center;justify-content:space-between;}
.nvst-n b{display:block;font-size:74px;font-weight:900;color:#fff;line-height:1;
  text-shadow:0 3px 0 rgba(0,0,0,.18);}
.nvst-n i{display:block;font-style:normal;font-size:24px;font-weight:900;color:#fff;margin-top:4px;}
.nvst-fire{font-size:88px;filter:drop-shadow(0 6px 10px rgba(0,0,0,.25));}
.nvst-body{flex:1;padding:20px 20px 0;display:flex;flex-direction:column;}
.nvst-mon{font-size:20px;font-weight:900;color:var(--navy);margin-bottom:12px;}
.nvst-wk{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:6px;}
.nvst-wk span{text-align:center;font-size:12px;font-weight:800;color:var(--dim,#A2A2AC);}
.nvst-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
.nvst-cal span{aspect-ratio:1;display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:800;color:var(--tx2);border-radius:50%;}
.nvst-cal span.on{background:#FF9D2E;color:#fff;}
.nvst-cal span.td{outline:2px solid var(--blue,#0161E8);}
.nvst-body .ob-btn{margin-top:auto;margin-bottom:8px;}
/* ===== 学習ハブ / マイページ ===== */
.nvhub{display:flex;flex-direction:column;gap:0;}
.nvhub .nvbar{position:sticky;top:var(--sat,0px);z-index:20;background:var(--bg);
  padding:10px 0 12px;gap:14px;box-shadow:0 6px 0 var(--bg);}
.nvbar-top{position:sticky;top:var(--sat,0px);z-index:20;background:var(--bg);
  padding:10px 0 12px;gap:14px;box-shadow:0 6px 0 var(--bg);margin-bottom:4px;}
.nvhub-i{display:flex;align-items:center;gap:14px;width:100%;text-align:left;font-family:inherit;
  background:var(--lt,#F4F4F7);border:1.5px solid var(--bd);border-radius:16px;
  padding:15px 15px;margin-bottom:10px;cursor:pointer;box-shadow:0 3px 0 var(--locked-deep,#DEDEE5);}
.nvhub-i:active{transform:translateY(3px);box-shadow:0 0 0 var(--locked-deep,#DEDEE5);}
.nvhub-i.warn{background:var(--blue-tint,#EAF2FF);border-color:var(--blue);box-shadow:0 3px 0 var(--blue-deep,#0044A8);}
.nvhub-t{flex:1;min-width:0;}
.nvhub-t b{display:block;font-size:16.5px;font-weight:800;color:var(--navy);}
.nvhub-t i{display:block;font-style:normal;font-size:12.5px;font-weight:700;color:var(--tx2);margin-top:2px;}
.nvhub-a{color:var(--dim,#A2A2AC);font-size:22px;}
/* マイページの上 */
.nvmy-head{display:flex;align-items:center;gap:14px;padding:4px 0 16px;}
.nvmy-dog canvas{image-rendering:pixelated;width:72px!important;height:72px!important;}
.nvmy-n em{display:block;font-style:normal;font-size:12.5px;font-weight:800;
  color:var(--blue);letter-spacing:.02em;}
.nvmy-n b{display:block;font-size:22px;font-weight:800;color:var(--navy);}
.nvmy-n i{display:block;font-style:normal;font-size:12.5px;font-weight:700;color:var(--tx2);margin-top:3px;}
.nvmy-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:18px;}
.nvmy-s{background:var(--lt,#F4F4F7);border:1.5px solid var(--bd);border-radius:14px;padding:10px 6px;text-align:center;}
.nvmy-s i{display:block;font-style:normal;font-size:10.5px;font-weight:800;color:var(--dim,#A2A2AC);}
.nvmy-s b{display:block;font-size:16px;font-weight:800;color:var(--navy);margin-top:3px;}
/* ホームの復習ボタン */
.nvquick{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:2px 0 16px;}
.nvquick button{display:flex;align-items:center;gap:9px;font-family:inherit;cursor:pointer;
  background:var(--card);border:1.5px solid var(--bd);border-radius:14px;padding:12px 13px;
  box-shadow:0 3px 0 var(--locked-deep,#DEDEE5);text-align:left;}
.nvquick button:active{transform:translateY(3px);box-shadow:0 0 0 var(--locked-deep,#DEDEE5);}
.nvquick b{display:block;font-size:14px;font-weight:800;color:var(--navy);}
.nvquick i{display:block;font-style:normal;font-size:11px;font-weight:700;color:var(--tx2);margin-top:1px;}
.nvquick .nq-n{margin-left:auto;background:var(--magenta,#FF019A);color:#fff;border-radius:999px;
  min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:900;padding:0 6px;}
/* ===== きょうの学習記録(.pen duo-12-home-tasks-light) ===== */
.nvplan{width:100%;border:none;background:var(--card);border-radius:16px;padding:0;cursor:pointer;
  font-family:inherit;text-align:left;box-shadow:0 3px 0 var(--bd);margin:2px 0 4px;
  border:1.5px solid var(--bd);display:block;}
.nvplan:active{transform:translateY(3px);box-shadow:0 0 0 var(--bd);}
.nvplan-h{display:flex;align-items:baseline;gap:8px;padding:11px 14px 8px;}
.nvplan-h b{font-size:15px;font-weight:800;color:var(--navy);}
.nvplan-h i{font-style:normal;margin-left:auto;font-size:12px;font-weight:800;color:var(--dim,#A2A2AC);}
.nvplan-track{display:block;height:14px;margin:0 14px 12px;border-radius:999px;background:var(--locked,#EDEDF2);overflow:hidden;}
.nvplan-track i{display:block;height:100%;border-radius:999px;background:var(--blue);
  transition:width .3s ease;}
/* 全画面 */
.nvplanpg{display:flex;flex-direction:column;gap:0;}
.nvplanpg .nvbar{position:sticky;top:var(--sat,0px);z-index:20;background:var(--bg);
  padding:10px 0 12px;gap:14px;box-shadow:0 6px 0 var(--bg);}
.nvpg-h{padding:2px 0 14px;}
.nvpg-t b{display:block;font-size:26px;font-weight:800;color:var(--navy);}
.nvpg-t i{display:block;font-style:normal;font-size:14px;font-weight:700;color:var(--tx2);margin-top:2px;}
.nvpg-wrap{display:flex;align-items:center;gap:11px;margin-top:14px;}
.nvpg-track{flex:1;height:16px;border-radius:999px;background:var(--locked,#EDEDF2);overflow:hidden;}
.nvpg-track i{display:block;height:100%;border-radius:999px;background:var(--grad,var(--blue));transition:width .3s ease;}
.nvpg-num{font-size:14px;font-weight:800;color:var(--tx2);white-space:nowrap;}
.nvps{margin-bottom:18px;}
.nvps-h{display:flex;align-items:baseline;margin-bottom:9px;}
.nvps-h b{font-size:15px;font-weight:800;color:var(--tx2);}
.nvps-h i{font-style:normal;margin-left:auto;font-size:13px;font-weight:800;color:var(--dim,#A2A2AC);}
.nvps-rows{display:flex;flex-direction:column;gap:10px;}
/* タスク行 */
.nvpr{width:100%;border:none;padding:0 0 4px;border-radius:16px;cursor:pointer;font-family:inherit;
  background:var(--locked-deep,#DEDEE5);display:block;text-align:left;}
.nvpr.cur{background:var(--blue-deep,#0044A8);}
.nvpr:active{transform:translateY(2px);padding-bottom:2px;}
.nvpr-f{display:flex;align-items:center;gap:12px;border-radius:16px;padding:14px 14px;
  background:var(--lt,#F4F4F7);border:1.5px solid var(--bd);}
.nvpr.cur .nvpr-f{background:var(--card);border-color:var(--blue);}
.nvpr-ck{width:30px;height:30px;border-radius:999px;flex-shrink:0;background:var(--lt,#F4F4F7);
  border:1.5px solid var(--bd);display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:16px;font-weight:900;}
.nvpr.done .nvpr-ck{background:var(--ok,#06E176);border-color:var(--ok,#06E176);}
.nvpr.cur .nvpr-ck{border-color:var(--blue);}
.nvpr-t{flex:1;min-width:0;}
.nvpr-t b{display:block;font-size:16px;font-weight:800;color:var(--navy);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.nvpr-t i{display:block;font-style:normal;font-size:12.5px;font-weight:700;color:var(--tx2);margin-top:2px;}
.nvpr.done .nvpr-t b,.nvpr.done .nvpr-t i{color:var(--dim,#A2A2AC);}
.nvpr-xp{font-size:15px;font-weight:900;color:var(--blue);flex-shrink:0;}
.nvpr-xp i{font-style:normal;font-size:10px;margin-left:2px;}
.nvpr.done .nvpr-xp{color:var(--dim,#A2A2AC);}
.nvpathsep{padding:22px 0 10px;border-top:1.5px solid var(--bd);margin-top:20px;}
.nvpathsep b{display:block;font-size:20px;font-weight:800;color:var(--navy);}
.nvpathsep i{display:block;font-style:normal;font-size:12.5px;font-weight:700;color:var(--tx2);margin-top:3px;}
/* ===== ホーム = 学習パス(.pen duo-13-roadmap-light に合わせる) ===== */
.nvhome2{display:flex;flex-direction:column;gap:0;}
html.v2 body.nvhomeon .wrap{padding:calc(6px + var(--sat,0px)) 16px calc(96px + var(--sab,0px));max-width:520px;}
/* HUD */
.nvhome2 .nvbar{position:sticky;top:var(--sat,0px);z-index:20;
  background:var(--bg,#fff);padding:10px 0 12px;margin:0 -2px;gap:14px;box-shadow:0 6px 0 var(--bg);}
.nvp{display:inline-flex;align-items:center;gap:5px;background:none;border:none;padding:0;
  font-size:17px;font-weight:800;color:var(--tx2);}
.nvp b{font-size:17px;font-weight:800;}
.nvp.st-fire b{color:#FF6B00;}
.nvp.st-food b{color:var(--cyan-text,#00808C);}
.nvp.st-tk b{color:var(--accent,#9B00E8);}
.nvp.st-day b{color:var(--blue,#0161E8);}
.nvp.warn{opacity:.55;}
.nvp.lvp{gap:7px;}
.nvp.lvp i{font-style:normal;font-size:13px;font-weight:800;color:var(--dim,#A2A2AC);}
.nvp.lvp u{display:block;width:46px;height:8px;border-radius:999px;background:var(--locked,#EDEDF2);
  text-decoration:none;overflow:hidden;}
.nvp.lvp u b{display:block;height:100%;background:var(--grad,var(--ok));}
.nvp.days{cursor:pointer;}
/* 級のタブ */
.nvtier{display:flex;align-items:center;gap:8px;padding:2px 0 12px;}
.nvtierb{border:1.5px solid var(--bd);background:var(--card);border-radius:999px;
  padding:7px 15px;font-family:inherit;font-size:13px;font-weight:800;color:var(--tx2);cursor:pointer;}
.nvtierb.on{background:var(--blue);border-color:var(--blue);color:#fff;}
.nvtierb.lk{opacity:.45;}
.nvtierp{margin-left:auto;font-size:13px;font-weight:800;color:var(--dim,#A2A2AC);}
/* ユニット帯 */
.nvsec{display:flex;align-items:stretch;gap:0;background:var(--blue);border-radius:16px;
  padding:0;margin:14px 0 4px;overflow:hidden;}
.nvsec.done{background:var(--ok-deep,#04B85F);}
.nvsec-t{flex:1;min-width:0;color:#fff;padding:14px 16px;}
.nvsec-t i{display:block;font-style:normal;font-size:13px;font-weight:700;opacity:.85;}
.nvsec-t b{display:block;font-size:17px;font-weight:800;line-height:1.4;margin-top:2px;}
.nvsec-b{border:none;background:var(--blue-deep,#0044A8);width:62px;flex-shrink:0;
  font-size:22px;cursor:pointer;color:#fff;}
.nvsec.done .nvsec-b{background:#037A40;}
/* パス */
.nvpath{display:flex;flex-direction:column;align-items:center;gap:0;padding:10px 0 4px;position:relative;}
.nvnode-w{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding:22px 0;}
/* 道順の線。ノードの下から次のノードの上まで、ゆるいS字でつなぐ */
.nvlink{position:absolute;top:calc(100% - 22px);z-index:0;pointer-events:none;overflow:visible;}
.nvnode,.nvchest,.nvhere{position:relative;z-index:1;}
.nvnode{width:76px;padding:0 0 9px;border:none;border-radius:999px;cursor:pointer;font-family:inherit;
  background:var(--locked-deep,#DEDEE5);transition:transform .1s;display:block;}
.nvnode .nvnode-f{display:flex;align-items:center;justify-content:center;height:64px;border-radius:999px;
  background:var(--locked,#EDEDF2);font-size:28px;font-weight:900;color:var(--dim,#A2A2AC);
  box-shadow:inset 0 2px 0 rgba(255,255,255,.55);}
.nvnode:active{transform:translateY(5px);padding-bottom:4px;}
.nvnode.done{background:var(--ok-deep,#04B85F);}
.nvnode.done .nvnode-f{background:var(--ok,#06E176);color:#fff;}
/* 進行中だけ光らせる。1画面に1つしか出ないので、迷わせない */
.nvnode.cur{background:var(--g2,#FF9600);}
.nvnode.cur .nvnode-f{background:var(--grad,linear-gradient(100deg,#FFC800,#FF9600));color:#3A2500;
  box-shadow:0 0 22px -2px rgba(255,150,0,.5);}
.nvnode.cur{animation:nvbob 2s ease-in-out infinite;}
@keyframes nvbob{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.nvnode-l{font-size:12px;font-weight:800;color:var(--tx2);text-align:center;max-width:160px;line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.nvhere{position:absolute;top:-16px;background:var(--card);border:2px solid var(--bd);
  border-radius:999px;padding:3px 12px;font-size:11px;font-weight:800;color:var(--blue);
  white-space:nowrap;z-index:2;}
.nvdogside{position:absolute;left:calc(100% + 10px);bottom:22px;}
.nvdogside canvas{image-rendering:pixelated;width:70px!important;height:70px!important;}
/* ===== ログイン日数(全画面) ================================ */
#lgv{position:fixed;inset:0;z-index:9995;background:var(--bg,#fff);
  display:flex;align-items:center;justify-content:center;padding:24px;}
body.lgon{overflow:hidden;}
#lgv .lg-box{width:100%;max-width:340px;text-align:center;}
#lgv .lg-flame{font-size:64px;line-height:1;}
#lgv .lg-n{display:flex;align-items:baseline;justify-content:center;gap:6px;margin-top:6px;}
#lgv .lg-n b{font-size:60px;font-weight:900;line-height:1;letter-spacing:-.03em;color:var(--navy);}
#lgv .lg-n i{font-style:normal;font-size:19px;font-weight:900;color:var(--flame);}
#lgv .lg-cells{display:flex;gap:7px;justify-content:center;margin-top:22px;flex-wrap:wrap;}
#lgv .lg-c{width:38px;height:38px;border-radius:12px;background:var(--lt);
  border:1.5px solid var(--bd);display:grid;place-items:center;}
#lgv .lg-c u{text-decoration:none;font-size:13px;font-weight:900;color:var(--dim);}
#lgv .lg-c.on{background:var(--flame-tint);border-color:var(--gold);}
#lgv .lg-c.on u{color:var(--flame);}
#lgv .lg-c.now{transform:scale(.6);opacity:0;}
#lgv .lg-c.now.pop{transform:scale(1);opacity:1;
  transition:transform .34s cubic-bezier(.2,1.5,.4,1),opacity .2s;
  box-shadow:0 0 20px -2px rgba(255,150,0,.65);}
#lgv .lg-msg{margin-top:22px;font-size:14.5px;font-weight:700;color:var(--tx2);line-height:1.9;}
#lgv .lg-msg b{color:var(--navy);}
#lgv .lg-msg i{display:block;font-style:normal;font-size:12.5px;color:var(--dim);margin-top:5px;}
#lgv .btn{width:100%;margin-top:26px;}
@media(prefers-reduced-motion:reduce){#lgv .lg-c.now{transform:none;opacity:1;}}
/* 広告の帯(このアプリ自身の案内) */
.adbn{display:flex;align-items:center;gap:11px;width:100%;text-align:left;
  background:var(--card);border:1px solid var(--bd);border-radius:16px;
  padding:12px 13px;font-family:inherit;cursor:pointer;margin-top:12px;}
.adbn-i{font-size:24px;line-height:1;flex:none;}
.adbn-t{flex:1;min-width:0;}
.adbn-t b{display:block;font-size:13.5px;font-weight:900;color:var(--navy);line-height:1.4;}
.adbn-t i{display:block;font-style:normal;font-size:11.5px;font-weight:700;color:var(--tx2);margin-top:2px;line-height:1.5;}
.adbn-a{color:var(--dim);font-size:17px;flex:none;}
/* オン・オフのつまみ */
.nvsw{flex:none;width:42px;height:25px;border-radius:99px;background:var(--locked,#EDEDF2);
  position:relative;transition:background .18s;}
.nvsw::after{content:"";position:absolute;top:3px;left:3px;width:19px;height:19px;
  border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .18s;}
.nvsw.on{background:var(--ok,#58CC02);}
.nvsw.on::after{transform:translateX(17px);}
/* 求人(全画面) */
#jobv{position:fixed;inset:0;z-index:9996;background:var(--bg,#fff);
  display:flex;flex-direction:column;overflow:hidden;}
body.jobon{overflow:hidden;}
#jobv .job-head{flex:none;display:flex;align-items:center;gap:10px;
  padding:calc(10px + var(--sat,0px)) 14px 8px;}
#jobv .job-head b{font-size:16px;font-weight:900;color:var(--navy);}
#jobv .job-x{border:none;background:none;font-size:23px;line-height:1;
  color:var(--dim,#A2A2AC);cursor:pointer;font-family:inherit;padding:0 4px;}
#jobv .job-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:4px 22px 20px;text-align:center;}
#jobv .job-body.form{text-align:left;}
#jobv .job-ic{font-size:52px;line-height:1;margin-top:6px;}
#jobv h2{font-size:24px;font-weight:900;color:var(--navy);margin:14px 0 0;line-height:1.5;letter-spacing:-.01em;}
#jobv .job-lead{font-size:13.5px;font-weight:700;color:var(--tx2);line-height:1.95;margin:12px 0 0;}
#jobv .job-lead b{color:var(--navy);}
#jobv .job-pts{display:flex;flex-direction:column;gap:10px;margin:22px 0 0;text-align:left;}
#jobv .job-pts>div{background:var(--card);border:1px solid var(--bd);border-radius:15px;padding:13px 15px;}
#jobv .job-pts span{font-size:19px;}
#jobv .job-pts b{display:block;font-size:13.5px;font-weight:900;color:var(--navy);margin-top:5px;}
#jobv .job-pts i{display:block;font-style:normal;font-size:12px;font-weight:700;color:var(--tx2);margin-top:3px;line-height:1.75;}
#jobv .job-note{font-size:11.5px;font-weight:700;color:var(--dim);margin:16px 0 0;line-height:1.8;}
#jobv .job-f{display:block;margin-top:18px;}
#jobv .job-f>span{display:block;font-size:12.5px;font-weight:900;color:var(--navy);margin-bottom:7px;}
#jobv select,#jobv textarea{width:100%;font-family:inherit;font-size:15px;
  border:1.5px solid var(--bd);border-radius:12px;padding:11px 12px;
  background:var(--card);color:var(--navy);}
#jobv textarea{resize:none;line-height:1.7;}
#jobv .job-seg{display:flex;gap:7px;flex-wrap:wrap;}
#jobv .job-seg button{flex:1;min-width:70px;font-family:inherit;font-size:13px;font-weight:800;
  border:1.5px solid var(--bd);background:var(--card);color:var(--tx2);
  border-radius:12px;padding:10px 4px;cursor:pointer;}
#jobv .job-seg button.on{border-color:var(--ok);background:var(--ok);color:#0F2A00;}
#jobv .job-foot{flex:none;border-top:1px solid var(--bd);padding:12px 20px calc(14px + var(--sab,0px));}
#jobv .job-foot .btn{width:100%;}
#jobv .nvpay-skip{display:block;width:100%;margin-top:8px;}
/* 課金の3案 */
.nvpay-plans{display:flex;flex-direction:column;gap:10px;margin-top:18px;}
.nvpay-p{position:relative;display:block;width:100%;text-align:left;font-family:inherit;
  background:var(--card);border:2px solid var(--bd);border-radius:16px;
  padding:14px 15px 13px;cursor:pointer;}
.nvpay-p.on{border-color:var(--flame);box-shadow:0 0 0 3px var(--flame-tint);}
.nvpay-tag{position:absolute;top:-9px;right:12px;background:var(--grad,var(--flame));
  color:#3A2500;font-size:10px;font-weight:900;border-radius:99px;padding:2px 10px;}
.nvpay-pn{display:block;font-size:14px;font-weight:900;color:var(--navy);}
.nvpay-pp{display:block;font-size:24px;font-weight:900;color:var(--navy);margin-top:2px;}
.nvpay-pp i{font-style:normal;font-size:12px;font-weight:800;color:var(--tx2);margin-left:3px;}
.nvpay-pl{display:block;margin-top:9px;}
.nvpay-pl u{display:block;text-decoration:none;font-size:12.5px;font-weight:700;
  line-height:1.9;color:var(--tx2);}
.nvpay-pl u.y::before{content:"○ ";color:var(--ok);font-weight:900;}
.nvpay-pl u.n{color:var(--dim);}
.nvpay-pl u.n::before{content:"× ";color:var(--dim);font-weight:900;}
/* 購入前の分析。中身をぼかして「何が見えるのか」だけ伝える */
.ana-lock{position:relative;}
.ana-blur{filter:blur(7px) saturate(.8);opacity:.6;pointer-events:none;user-select:none;
  transform:scale(1.01);max-height:78vh;overflow:hidden;}
.ana-veil{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  padding:20px;background:linear-gradient(to bottom,
    color-mix(in srgb,var(--bg) 55%,transparent) 0%,
    color-mix(in srgb,var(--bg) 88%,transparent) 45%,
    var(--bg) 100%);}
.ana-veil-in{text-align:center;max-width:19em;}
.ana-veil-in .nvsoon-i{font-size:44px;line-height:1;filter:grayscale(1);opacity:.5;}
.ana-veil-in b{display:block;font-size:19px;font-weight:900;color:var(--navy);margin:12px 0 8px;
  line-height:1.5;}
.ana-veil-in i{display:block;font-style:normal;font-size:13px;font-weight:700;color:var(--tx2);
  line-height:1.9;}
.ana-veil-in .btn{margin-top:20px;}
/* ===== 友だち紹介(全画面) ================================== */
#inv-ovl{position:fixed;inset:0;z-index:9994;background:var(--bg,#fff);
  display:flex;flex-direction:column;overflow:hidden;}
body.invon{overflow:hidden;}
#inv-ovl .inv-head{flex:none;padding:calc(10px + var(--sat,0px)) 12px 4px;}
#inv-ovl .inv-x{border:none;background:none;font-size:23px;line-height:1;
  color:var(--dim,#A2A2AC);cursor:pointer;font-family:inherit;padding:0 4px;}
#inv-ovl .inv-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:6px 22px calc(28px + var(--sab,0px));text-align:center;}
#inv-ovl .inv-dog canvas{image-rendering:pixelated;width:88px!important;height:88px!important;margin:6px auto 0;}
#inv-ovl h2{font-size:25px;font-weight:900;color:var(--navy);margin:12px 0 0;letter-spacing:-.01em;}
#inv-ovl .inv-lead{font-size:13.5px;font-weight:700;color:var(--tx2);line-height:1.9;margin:10px 0 0;}
#inv-ovl .inv-gift{display:flex;gap:10px;margin:20px 0 0;}
#inv-ovl .inv-gift>div{flex:1;background:var(--card);border:1px solid var(--bd);
  border-radius:16px;padding:13px 8px;}
#inv-ovl .inv-gift i{display:block;font-style:normal;font-size:11px;font-weight:800;color:var(--tx2);}
#inv-ovl .inv-gift b{display:block;font-size:14px;font-weight:900;color:var(--flame);margin-top:3px;}
#inv-ovl .inv-cond{font-size:12px;font-weight:700;color:var(--tx2);margin:11px 0 0;line-height:1.8;}
#inv-ovl .inv-cond b{color:var(--navy);}
#inv-ovl .inv-link{background:var(--lt);border-radius:13px;padding:12px 14px;margin:20px 0 0;
  font-size:12px;color:var(--tx2);word-break:break-all;line-height:1.7;text-align:left;}
#inv-ovl .inv-btns{display:flex;flex-direction:column;gap:9px;margin:14px 0 0;}
#inv-ovl .inv-btns .btn{width:100%;}
#inv-ovl .inv-n{font-size:12px;font-weight:700;color:var(--dim);margin:16px 0 0;}
/* ===== 分析 ================================================ */
.ana-top{display:flex;align-items:center;gap:12px;
  background:var(--card);border:3px solid var(--navy);border-radius:16px;box-shadow:5px 5px 0 var(--navy);
  padding:18px 18px 15px;margin-bottom:14px;}
.ana-tot{display:flex;align-items:baseline;gap:8px;}
.ana-tot i{font-style:normal;font-size:12.5px;font-weight:800;color:var(--tx2);}
.ana-tot b{font-size:40px;font-weight:800;line-height:1;color:var(--navy);margin-left:auto;}
.ana-tot em{font-style:normal;font-size:13px;font-weight:800;color:var(--tx2);}
.ana-stack{display:flex;gap:3px;margin-top:14px;height:14px;}
.ana-stack>span{background:var(--lt);border-radius:4px;overflow:hidden;}
.ana-stack>span>u{display:block;height:100%;background:var(--grad,var(--flame));text-decoration:none;}
.ana-legend{display:flex;gap:3px;margin-top:4px;}
.ana-legend>span{flex:1;text-align:center;font-size:9.5px;font-weight:800;color:var(--dim);}
.ana-sub{font-size:12.5px;font-weight:700;color:var(--tx2);margin:12px 0 0;line-height:1.7;}
.ana-sub b{color:var(--navy);}

.ana-c{background:var(--card);border:2px solid var(--bd);border-radius:16px;
  padding:15px 16px 14px;margin-bottom:11px;}
/* .btn.gray は後方の旧ルールに負けるので、ここで再度確定する */
html.sunset .btn.gray{background:var(--card);color:var(--navy);
  border:2px solid var(--bd);box-shadow:none;}
html.sunset .btn.gray:active{transform:translateY(1px);}
/* 汎用の面部品(.g=カード / .g.list+.li=区切り線リスト) */
html.sunset .g{background:var(--card);
  border:2px solid var(--bd);border-radius:16px;
  box-shadow:none;}
html.sunset .g.list{padding:4px 0;}
html.sunset .li{display:flex;align-items:center;gap:13px;padding:13px 16px;}
html.sunset .li+.li{border-top:1px solid color-mix(in srgb,var(--navy) 9%,transparent);}
html.sunset .li .t{flex:1;min-width:0;}
html.sunset .li .t b{display:block;font-size:13.5px;font-weight:700;color:var(--navy);}
html.sunset .li .t i{display:block;font-style:normal;font-size:11px;color:var(--dim);margin-top:2px;font-weight:700;}
html.sunset .li .val{font-size:11.5px;color:var(--dim);font-weight:700;white-space:nowrap;flex:none;}
/* 庭(草原・パン/ズーム) */
#nvgd{position:fixed;inset:0;z-index:40;overflow:hidden;
  --gd-a:#A9C489;--gd-b:#8FB573;--gd-tuft:#6F9B54;--gd-fl:#FFF0C9;}
body.dark #nvgd{--gd-a:#39512E;--gd-b:#2C4024;--gd-tuft:#4E6B3D;--gd-fl:#E8D9A8;}
.gd-vp{position:absolute;inset:0;touch-action:none;cursor:grab;overflow:hidden;
  background:linear-gradient(180deg,var(--gd-a),var(--gd-b));}
.gd-w{position:absolute;left:0;top:0;transform-origin:0 0;
  background:
    radial-gradient(circle 3px at 12% 30%, color-mix(in srgb,var(--gd-tuft) 55%,transparent) 0 2px, transparent 3px),
    radial-gradient(circle 3px at 68% 74%, color-mix(in srgb,var(--gd-tuft) 45%,transparent) 0 2px, transparent 3px),
    radial-gradient(circle 2px at 42% 52%, color-mix(in srgb,var(--gd-tuft) 45%,transparent) 0 1.5px, transparent 2px),
    linear-gradient(180deg,var(--gd-a),var(--gd-b));
  background-size:220px 220px,260px 260px,180px 180px,100% 100%;}
.gd-tf,.gd-fl{position:absolute;pointer-events:none;transform:translate(-50%,-50%);}
.gd-fl{width:9px;height:9px;border-radius:50%;background:var(--gd-fl);
  box-shadow:0 0 0 2.5px color-mix(in srgb,var(--gd-fl) 45%,transparent);}
.gd-dog{position:absolute;transform:translate(-50%,-90%);border:none;background:none;
  font-family:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px;}
.gd-dog canvas{image-rendering:pixelated;filter:drop-shadow(0 3px 2px rgba(0,0,0,.25));}
.gd-dog>b{font-size:10.5px;font-weight:800;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5);
  background:rgba(0,0,0,.28);border-radius:99px;padding:1px 8px;white-space:nowrap;}
.gd-dog>b em{font-style:normal;font-size:8.5px;color:var(--g2,#FBB931);margin-left:4px;}
.gd-dog.gone{filter:grayscale(1);opacity:.6;}
.gd-dog.st canvas{opacity:.96;}
.gd-top{position:absolute;left:16px;right:16px;top:calc(var(--sat,0px) + 10px);
  display:flex;align-items:center;gap:8px;pointer-events:none;}
.gd-top b{font-size:20px;font-weight:800;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.35);margin-right:auto;}
.gd-pill{font-size:12px;font-weight:800;color:var(--navy);
  background:linear-gradient(160deg,var(--gsA),var(--gsB));border:1px solid var(--bd);
  border-radius:11px;padding:5px 10px;
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);}
.gd-zoom{position:absolute;right:14px;bottom:calc(var(--sab,0px) + 160px);
  display:flex;flex-direction:column;gap:8px;}
.gd-zoom button{width:40px;height:40px;border-radius:50%;border:1px solid var(--bd);
  background:linear-gradient(160deg,var(--gsA),var(--gsB));color:var(--navy);
  font-size:18px;font-weight:800;font-family:inherit;cursor:pointer;
  box-shadow:inset 0 1px 0 var(--ghi);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);}
.gd-foot{position:absolute;left:16px;right:16px;bottom:calc(var(--sab,0px) + 92px);
  display:flex;gap:10px;}
.gd-fb{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;
  border:1px solid var(--bd);border-radius:14px;padding:13px 0;
  background:linear-gradient(160deg,var(--gsA),var(--gsB));color:var(--navy);
  font-size:13.5px;font-weight:800;font-family:inherit;cursor:pointer;
  box-shadow:inset 0 1px 0 var(--ghi),0 10px 24px rgba(0,0,0,.25);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);}
.gd-fb i{font-style:normal;font-size:11px;color:var(--tx2);}
#gdpop{position:absolute;left:16px;right:16px;bottom:calc(var(--sab,0px) + 150px);pointer-events:none;}
#gdpop .gd-card{pointer-events:auto;padding:14px 16px;text-align:center;}
#gdpop .gd-card>b{display:block;font-size:16px;font-weight:800;color:var(--navy);}
#gdpop .gd-card>i{display:block;font-style:normal;font-size:11.5px;font-weight:700;color:var(--tx2);margin-top:2px;}
#gdpop .gd-card>u{display:block;text-decoration:none;font-size:12px;font-weight:700;color:var(--flame);margin-top:4px;}
#gdpop .gd-card>p{font-size:11.5px;color:var(--dim);margin:5px 0 0;line-height:1.7;}
.gd-acts{display:flex;gap:8px;justify-content:center;margin-top:10px;}
.gd-acts .btn{width:auto;font-size:12.5px;padding:10px 18px;}
.gd-mainlab{align-self:center;font-size:12px;font-weight:800;color:var(--flame);}
#stbk{position:fixed;inset:0;z-index:9994;background:rgba(10,8,6,.45);
  display:flex;align-items:flex-end;justify-content:center;}
/* 育成(ネイティブ) */
.nvdg-hero{position:relative;text-align:center;padding:22px 18px 16px;}
.nvdg-hero>b{display:block;font-size:19px;font-weight:800;color:var(--navy);margin-top:6px;}
.nvdg-hero>i{display:block;font-style:normal;font-size:12.5px;font-weight:700;color:var(--tx2);margin-top:3px;}
.nvdg-hero>i em{font-style:normal;color:var(--gold,#FBB931);letter-spacing:2px;}
.nvdg-hero>p{font-size:12px;color:var(--dim);line-height:1.75;margin:6px 0 0;}
.nvdg-hero .nvdg-st{display:block;text-decoration:none;font-size:12.5px;font-weight:700;color:var(--flame);margin-top:6px;}
.nvdg-food{position:absolute;top:12px;right:14px;font-size:12.5px;font-weight:800;color:var(--navy);
  background:linear-gradient(160deg,var(--gsA),var(--gsB));border:1px solid var(--bd);
  border-radius:11px;padding:5px 11px;}
.nvdg-pen{border:none;background:none;cursor:pointer;color:var(--dim);font-size:14px;font-family:inherit;padding:0 4px;}
#nvdgc{min-height:96px;display:flex;align-items:flex-end;justify-content:center;}
#nvdgc canvas{image-rendering:pixelated;}
.nvdg-row{cursor:pointer;}
.nvdg-ico{width:44px;display:flex;justify-content:center;align-items:flex-end;flex-shrink:0;}
.nvdg-ico canvas{image-rendering:pixelated;}
.nvdg-ico.gone{filter:grayscale(1);opacity:.55;}
.nvdg-main{font-style:normal;font-size:9px;background:var(--blue);color:#fff;border-radius:6px;
  padding:1px 6px;margin-left:6px;vertical-align:1px;font-weight:800;}
.nvdg-call{width:auto;font-size:11px;padding:8px 12px;flex-shrink:0;}
.nvdg-book{padding:14px;}
.nvdg-caps{display:flex;gap:8px;margin-bottom:12px;}
.nvdg-caps .btn{flex:1;font-size:12.5px;padding:11px 0;}
.nvdg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;}
html.sunset .stampc{background:linear-gradient(160deg,var(--gsA),var(--gsB));
  border:1px solid var(--bd);border-radius:14px;}
html.sunset .stampc.dog,html.sunset .stampc.ach,html.sunset .stampc.sec,
html.sunset .stampc.zomb{background:linear-gradient(160deg,var(--gsA),var(--gsB));}
html.sunset .stampc.empty{background:none;border:1px dashed var(--bd);opacity:.5;}
/* 伸びグラフと取り方 */
.ana-gr{display:block;width:100%;height:150px;}
.ana-grx{display:flex;justify-content:space-between;font-size:9.5px;color:var(--dim);
  padding:2px 2px 0;font-weight:700;}
.ana-lg{display:flex;gap:10px;flex-wrap:wrap;padding:8px 2px 2px;}
.ana-lg span{display:flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;color:var(--tx2);}
.ana-lg s{text-decoration:none;width:10px;height:10px;border-radius:3px;display:block;}
.ana-qbar u{position:absolute;top:-3px;bottom:-3px;width:0;border-left:2px solid var(--navy);
  opacity:.5;transform:translateX(-1px);}
.ana-qbar{position:relative;overflow:visible;}
.ana-qv i{font-style:normal;font-size:10px;color:var(--dim);}
.ana-qgr-w{margin:2px 0 10px;}
.ana-qgr{display:block;width:100%;height:86px;}
.ana-qcm{padding:4px 16px 14px;}
.ana-tk{display:flex;align-items:center;gap:10px;padding:6px 0;}
.ana-tk>b{flex:none;width:46px;font-size:12px;font-weight:800;color:var(--navy);}
.ana-tkb{flex:1;position:relative;height:9px;border-radius:99px;background:var(--locked,#EDEDF2);}
.ana-tkb i{position:absolute;left:0;top:0;bottom:0;border-radius:99px;background:var(--grad);}
.ana-tkb u{position:absolute;top:-4px;bottom:-4px;width:0;border-left:2px solid var(--navy);
  opacity:.55;transform:translateX(-1px);}
.ana-tk em{flex:none;font-style:normal;font-size:11px;font-weight:700;color:var(--tx2);width:74px;text-align:right;}
.ana-tk em b{font-size:13px;color:var(--navy);}
/* 大問ごとのトグルリスト */
.ana-lh{display:flex;align-items:baseline;gap:8px;font-size:13.5px;font-weight:800;
  color:var(--navy);padding:10px 16px 4px;}
.ana-lh span{margin-left:auto;font-size:10.5px;font-weight:700;color:var(--dim);}
.ana-q+.ana-q{border-top:1px solid color-mix(in srgb,var(--navy) 9%,transparent);}
.ana-qh{display:flex;align-items:center;gap:10px;width:100%;border:none;background:none;
  font-family:inherit;cursor:pointer;padding:13px 16px;text-align:left;}
.ana-qt{flex:none;width:96px;}
.ana-qt b{display:block;font-size:14px;font-weight:800;color:var(--navy);}
.ana-qt i{display:block;font-style:normal;font-size:9.5px;font-weight:700;color:var(--dim);
  margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ana-qbar{flex:1;height:9px;border-radius:99px;background:var(--locked,#EDEDF2);overflow:hidden;}
.ana-qbar i{display:block;height:100%;border-radius:99px;background:var(--grad);}
.ana-qv{flex:none;font-size:11.5px;font-weight:700;color:var(--tx2);}
.ana-qv b{font-size:15px;font-weight:800;color:var(--navy);}
.ana-ar{flex:none;font-style:normal;color:var(--dim);font-size:14px;
  transform:rotate(90deg);transition:transform .15s;}
.ana-q.cl .ana-ar{transform:rotate(0deg);}
.ana-q.cl .ana-qb{display:none;}
.ana-qb{padding:0 16px 14px;}
.ana-msw{margin-top:12px;}
.ana-msh{display:flex;align-items:baseline;gap:7px;font-size:12px;font-weight:800;color:var(--navy);margin-bottom:6px;}
.ana-msh span{font-size:10.5px;font-weight:700;color:var(--dim);}
.ana-ms{display:flex;align-items:center;gap:9px;padding:3px 0;}
.ana-ms>span{flex:none;width:96px;font-size:11px;font-weight:700;color:var(--tx2);}
.ana-msb{flex:1;height:8px;border-radius:99px;background:var(--locked,#EDEDF2);overflow:hidden;}
.ana-msb i{display:block;height:100%;border-radius:99px;background:var(--grad);}
.ana-ms em{flex:none;font-style:normal;font-size:10.5px;font-weight:800;color:var(--tx2);width:32px;text-align:right;}
.ana-mst{font-size:11px;color:var(--dim);line-height:1.75;margin:7px 0 0;}
.ana-mst b{color:var(--navy);}
.ana-pats{margin-top:10px;display:flex;flex-direction:column;}
.ana-p{display:flex;align-items:center;gap:9px;padding:6.5px 0;}
.ana-p+.ana-p{border-top:1px solid color-mix(in srgb,var(--navy) 6%,transparent);}
.ana-p s{text-decoration:none;flex:none;width:9px;height:9px;border-radius:50%;}
.ana-p s.ng{background:var(--ng);}
.ana-p s.warn{background:var(--g2,#FBB931);}
.ana-p s.none{background:none;border:1.5px solid var(--dim);}
.ana-p s.ok{background:var(--ok);}
.ana-p b{flex:1;min-width:0;font-size:12px;font-weight:700;color:var(--navy);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ana-p i{flex:none;font-style:normal;font-size:10.5px;font-weight:700;color:var(--dim);}
.ana-h{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap;}
.ana-h b{font-size:16px;font-weight:800;color:var(--navy);}
.ana-h i{font-style:normal;font-size:11.5px;font-weight:700;color:var(--tx2);}
.ana-pts{margin-left:auto;text-align:right;font-size:12px;font-weight:800;color:var(--tx2);}
.ana-pts u{display:block;text-decoration:none;font-size:10px;font-weight:700;color:var(--dim);}
.ana-v{display:flex;align-items:baseline;gap:5px;margin-top:9px;flex-wrap:wrap;}
.ana-v b{font-size:30px;font-weight:800;line-height:1;color:var(--navy);}
.ana-v em{font-style:normal;font-size:12px;font-weight:800;color:var(--tx2);}
.ana-mock{margin-left:auto;font-size:11px;font-weight:800;color:var(--flame);
  background:var(--flame-tint);border-radius:99px;padding:3px 10px;}
.ana-bar{height:10px;border-radius:99px;background:var(--lt);margin-top:9px;overflow:hidden;}
.ana-bar i{display:block;height:100%;border-radius:99px;background:var(--grad,var(--flame));}
.ana-row{display:flex;gap:4px;margin-top:11px;}
.ana-row>span{flex:1;text-align:center;}
.ana-row i{display:block;font-style:normal;font-size:9.5px;font-weight:800;color:var(--dim);}
.ana-row b{display:block;font-size:14px;font-weight:800;color:var(--navy);margin-top:1px;}
.ana-note{margin-top:11px;font-size:12.5px;font-weight:700;line-height:1.8;
  border-radius:12px;padding:9px 12px;background:var(--lt);color:var(--tx2);}
.ana-note b{color:var(--navy);}
.ana-note.warn{background:var(--flame-tint);color:var(--flame);}
.ana-note.warn b{color:var(--flame);}
.ana-note.ok{background:var(--ok-tint,var(--lt));color:var(--ok);}
.ana-note.ok b{color:var(--ok);}
.ana-foot{font-size:11.5px;line-height:1.9;color:var(--dim);margin:18px 2px 0;}
.ana-foot b{display:block;color:var(--tx2);font-size:12px;margin-bottom:3px;}
/* ===== AIに聞く(全画面チャット) ============================ */
#ask-ovl{position:fixed;inset:0;z-index:9993;background:var(--bg,#fff);
  display:flex;flex-direction:column;overflow:hidden;}
body.askon{overflow:hidden;}
#ask-ovl .ask-head{flex:none;display:flex;align-items:center;gap:10px;
  padding:calc(10px + var(--sat,0px)) 14px 10px;border-bottom:1px solid var(--bd);}
#ask-ovl .ask-head b{font-size:16px;font-weight:800;color:var(--navy);}
#ask-ovl .ask-x{border:none;background:none;font-size:23px;line-height:1;
  color:var(--dim,#A2A2AC);cursor:pointer;font-family:inherit;padding:0 4px;}
#ask-ovl .ask-left{margin-left:auto;font-size:11.5px;font-weight:800;color:var(--tx2);}
#ask-ovl .ask-pick{flex:none;padding:9px 14px;border-bottom:1px solid var(--bd);background:var(--lt);}
#ask-ovl .ask-pick select{width:100%;max-width:100%;font-family:inherit;font-size:13px;
  padding:8px 10px;border:1.5px solid var(--bd);border-radius:10px;
  background:var(--card);color:var(--navy);}
#ask-ovl .ask-pick.one b{font-size:13px;font-weight:800;color:var(--navy);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
#ask-ovl .ask-log{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:14px;display:flex;flex-direction:column;gap:10px;}
#ask-ovl .ask-empty{text-align:center;margin:auto;color:var(--tx2);font-size:13.5px;line-height:1.9;}
#ask-ovl .ask-dog canvas{image-rendering:pixelated;width:72px!important;height:72px!important;}
#ask-ovl .ask-me{align-self:flex-end;max-width:82%;background:var(--blue);color:#fff;
  border-radius:16px 16px 4px 16px;padding:10px 13px;font-size:14px;line-height:1.7;
  white-space:pre-wrap;word-break:break-word;}
#ask-ovl .ask-ai{align-self:flex-start;max-width:88%;background:var(--lt);color:var(--navy);
  border-radius:16px 16px 16px 4px;padding:11px 13px;font-size:14px;line-height:1.85;
  white-space:pre-wrap;word-break:break-word;}
#ask-ovl .ask-ai.wait{color:var(--tx2);}
#ask-ovl .ask-sep{align-self:center;font-size:11px;font-weight:800;color:var(--dim);
  background:var(--lt);border-radius:99px;padding:3px 12px;}
#ask-ovl .ask-foot{flex:none;border-top:1px solid var(--bd);background:var(--bg);
  padding:9px 12px calc(10px + var(--sab,0px));}
#ask-ovl .ask-chips{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;
  padding-bottom:8px;}
#ask-ovl .ask-chips button{flex:none;border:1.5px solid var(--bd);background:var(--card);
  color:var(--tx2);border-radius:99px;padding:7px 13px;font-size:12px;font-weight:700;
  font-family:inherit;cursor:pointer;white-space:nowrap;}
#ask-ovl .ask-in{display:flex;gap:8px;align-items:center;}
#ask-ovl .ask-in input{flex:1;min-width:0;border:1.5px solid var(--bd);border-radius:999px;
  padding:11px 16px;font-size:16px;font-family:inherit;background:var(--card);color:var(--navy);}
#ask-ovl .ask-go{flex:none;width:42px;height:42px;border:none;border-radius:50%;
  background:var(--blue);color:#fff;font-size:19px;font-weight:800;cursor:pointer;
  font-family:inherit;box-shadow:0 3px 0 var(--blue-deep);}
#ask-ovl .ask-go:active{transform:translateY(2px);box-shadow:none;}
/* ===== 連続記録の画面(HUDの炎をタップ) ===================== */
#nvstk{position:fixed;inset:0;z-index:9992;background:var(--bg,#fff);
  display:flex;flex-direction:column;overflow:hidden;}
#nvstk .stk-x{position:absolute;top:calc(10px + var(--sat,0px));left:12px;z-index:3;
  width:42px;height:42px;border:none;background:none;font-size:26px;line-height:1;
  color:var(--tx2);cursor:pointer;font-family:inherit;}
#nvstk .stk-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:calc(62px + var(--sat,0px)) 18px calc(18px + var(--sab,0px));}
/* 3枚のカードを縦に積むだけ。横スクロールはさせない */
#nvstk .stk-card{background:var(--card);border:2px solid var(--bd);border-radius:16px;
  padding:14px;margin-bottom:11px;}
#nvstk .stk-hr{display:flex;align-items:center;gap:13px;}
#nvstk .stk-fire{flex:none;width:56px;height:56px;border-radius:14px;background:var(--flame-tint);
  display:flex;align-items:center;justify-content:center;}
#nvstk .stk-ht{flex:1;min-width:0;}
#nvstk .stk-ht b{display:block;font-size:34px;font-weight:800;color:var(--navy);
  line-height:1;letter-spacing:-.03em;}
#nvstk .stk-ht b u{text-decoration:none;font-size:15px;font-weight:800;margin-left:5px;}
#nvstk .stk-ht i{display:block;font-style:normal;font-size:12px;font-weight:700;
  color:var(--tx2);margin-top:7px;}

/* 今週。7つを均等に割る。幅にかかわらず1行に収まる */
#nvstk .stk-week{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;
  margin-top:13px;padding-top:13px;border-top:1.5px solid var(--bd);}
#nvstk .stk-wd{display:flex;flex-direction:column;align-items:center;gap:5px;}
#nvstk .stk-wd i{font-style:normal;font-size:10.5px;font-weight:700;color:var(--dim);}
#nvstk .stk-wd.td i{color:var(--navy);font-weight:900;}
#nvstk .stk-wc{width:100%;aspect-ratio:1;max-width:38px;border-radius:11px;
  background:var(--bg);border:2px solid var(--bd);
  display:flex;align-items:center;justify-content:center;
  font-size:10px;font-weight:800;color:var(--dim);}
#nvstk .stk-wc.on{background:var(--stk-on);border-color:var(--stk-on);}
#nvstk .stk-wd.td .stk-wc{border-color:var(--navy);color:var(--navy);}
#nvstk .stk-wc .bic{width:20px;height:20px;vertical-align:0;}

/* 次の節目 */
#nvstk .stk-mile{display:flex;align-items:center;gap:11px;}
#nvstk .stk-mi{flex:none;width:36px;height:36px;border-radius:11px;background:var(--bg);
  display:flex;align-items:center;justify-content:center;}
#nvstk .stk-mi .nvic{width:19px;height:19px;color:var(--navy);}
#nvstk .stk-mt{flex:1;min-width:0;}
#nvstk .stk-mt b{display:block;font-size:13.5px;font-weight:800;color:var(--navy);}
#nvstk .stk-mt s{display:block;text-decoration:none;height:8px;border-radius:5px;
  background:var(--bg);box-shadow:inset 0 0 0 1.5px var(--bd);margin-top:7px;overflow:hidden;}
#nvstk .stk-mt s i{display:block;height:100%;border-radius:5px;background:var(--gold);}
#nvstk .stk-mn{flex:none;font-size:11.5px;font-weight:800;color:var(--dim);}

/* 粒。曜日を7列に固定するので、幅に関係なく収まる */
#nvstk .stk-gh{display:flex;align-items:center;margin-bottom:11px;}
#nvstk .stk-gh b{flex:1;font-size:13.5px;font-weight:800;color:var(--navy);}
#nvstk .stk-more{border:none;background:none;font-family:inherit;font-size:11.5px;
  font-weight:800;color:var(--blue);cursor:pointer;padding:2px 0;}
#nvstk .stk-wk{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:5px;}
#nvstk .stk-wk i{font-style:normal;text-align:center;font-size:9.5px;font-weight:700;color:var(--dim);}
#nvstk .stk-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
#nvstk .stk-d{width:100%;height:30px;border-radius:7px;background:var(--bg);
  box-shadow:inset 0 0 0 1.5px var(--bd);}
#nvstk .stk-d.gh{background:none;box-shadow:none;}
#nvstk .stk-d.on{background:var(--stk-on);box-shadow:none;}
/* メダルの色。ID付きの上の行に負けるので、ここでも指定しておく */
#nvstk .stk-d.m1{background:var(--bronze,#C4703A);box-shadow:none;}
#nvstk .stk-d.m2{background:var(--silver,#98A2B0);box-shadow:none;}
#nvstk .stk-d.m3{background:var(--gold,#FFC947);box-shadow:none;}
#nvstk .stk-d.td{box-shadow:0 0 0 2px var(--navy);}
#nvstk .stk-lg{display:flex;align-items:center;gap:5px;justify-content:flex-end;
  font-size:10.5px;font-weight:700;color:var(--dim);margin-top:11px;}
#nvstk .stk-lg .stk-d{width:11px;height:11px;border-radius:4px;flex:none;}
#nvstk .stk-close{display:block;width:100%;margin-top:9px;border:none;background:none;
  font-family:inherit;font-size:13px;font-weight:800;color:var(--tx2);
  text-decoration:underline;cursor:pointer;padding:8px 0;}
#nvstk .stk-foot{flex-shrink:0;padding:12px 18px calc(14px + var(--sab,0px));border-top:1px solid var(--bd);}
/* 見出しは上に貼りつけ、道だけがスクロールする */
html.v2 body.nvhomeon .nvhome2{display:flex;flex-direction:column;
  /* 画面の高さから、上の余白とタブバーの実寸を引く。
     タブバーは 68px + 下の安全余白。ここを 64px 固定で引いていたため、
     スクロール領域が10pxぶんタブバーに潜っていた */
  height:calc(100dvh - var(--sat,0px) - 10px - 68px - var(--sab,0px));}
html.v2 body.nvhomeon .wrap{padding-bottom:0;}
.nvstick{position:sticky;top:0;z-index:8;background:var(--bg,#fff);padding-bottom:6px;}
/* 道の上端が帯のすぐ下で断ち切られると、ノードが途中で切れて壊れて見える。
   帯の下に地の色のぼかしを重ねて、切れるのではなく消えるようにする */
html.v2 body.nvhomeon .nvstick::after{
  content:"";position:absolute;left:0;right:0;top:100%;height:10px;pointer-events:none;
  background:linear-gradient(to bottom,var(--bg,#fff),transparent);}
/* 上の余白は「いまここ」のバッジ(ノードより13px上に出る)と、
   進行中ノードの光(22px)が入るだけ取る。6pxだと端末差で切れる */
.nvscroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding-top:26px;padding-bottom:38px;position:relative;}
/* 左に浮かせる、ログインボーナスとプレミアム */
/* スクロールしても同じ場所に居させたいので、道ではなく画面に固定する。
   z は帯のぼかし(8)より上。下だと、ぼかしがボタンの上を塗って切れて見える。
   top は見出しの帯の高さで変わるので、描いたあとに nvFloatPos() で合わせる */
.nvfloat{position:fixed;left:14px;z-index:9;display:flex;flex-direction:column;gap:10px;
  top:calc(var(--sat,0px) + 170px);}
.nvfl{width:66px;border:none;padding:0 0 5px;border-radius:15px;cursor:pointer;
  font-family:inherit;background:var(--accent-deep,#6E00A6);display:block;}
.nvfl>span{display:block;border-radius:16px;background:var(--accent,#9B00E8);
  padding:9px 4px 6px;text-align:center;}
.nvfl em{display:block;font-style:normal;font-size:25px;line-height:1.1;}
.nvfl b{display:block;font-size:9.5px;font-weight:800;color:#fff;margin-top:2px;letter-spacing:-.03em;}
.nvfl:active{transform:translateY(4px);padding-bottom:1px;}
.nvfl.got{background:var(--locked-deep,#DEDEE5);}
.nvfl.got>span{background:var(--locked,#EDEDF2);}
.nvfl.got em{filter:grayscale(1);opacity:.5;}
.nvfl.got b{color:var(--dim,#A2A2AC);}
.nvfl.prem{background:var(--gold-deep,#C89B00);}
.nvfl.prem>span{background:var(--gold,#FFC800);}
.nvfl.prem b{color:#4B3200;}
/* ===== 学習ページ ============================================
   主役は計画。いまのペースで受かるのか、あと何日かを1画面で見せる */
/* 暗い地では、面をべた塗りすると強すぎる。カードにして、
   状態は左の帯と数字の色で示す */
/* 試験までの見通しは、この画面の主役なのでグラデーションで置く。
   地が明るいので、文字は濃い茶 */
.stdy-hero{border-radius:20px;padding:20px 20px 18px;
  background:var(--grad,linear-gradient(100deg,#FFC800,#FF9600));
  box-shadow:0 5px 0 var(--g2-deep,#C97300);color:#3A2500;}
.stdy-hero .sh-k{font-size:12.5px;font-weight:800;color:rgba(58,37,0,.72);}
.stdy-hero .sh-v{display:flex;align-items:baseline;gap:8px;margin-top:5px;}
.stdy-hero .sh-v b{font-size:46px;font-weight:700;line-height:1;letter-spacing:-2px;}
.stdy-hero .sh-v i{font-style:normal;font-size:15px;font-weight:800;color:rgba(58,37,0,.8);}
.stdy-hero .sh-sub{font-size:13px;font-weight:700;color:rgba(58,37,0,.85);margin-top:10px;line-height:1.6;}
.stdy-hero .sh-sub b{color:#3A2500;}
.stdy-gauge{position:relative;margin-top:14px;height:10px;border-radius:5px;background:rgba(58,37,0,.2);
  position:relative;overflow:hidden;}
.stdy-gauge>i{display:block;height:100%;border-radius:999px;background:#3A2500;}
.stdy-gauge>s{position:absolute;top:-3px;width:3px;height:16px;background:var(--navy);}
.stdy-gline{display:flex;justify-content:flex-end;margin-top:6px;}
.stdy-gline span{font-size:10.5px;font-weight:600;
  color:rgba(58,37,0,.8);white-space:nowrap;}
.stdy-nums{display:flex;gap:9px;margin-top:14px;}
.stdy-num{flex:1;border:1.5px solid var(--bd);border-radius:16px;padding:13px 6px;text-align:center;}
.stdy-num i{display:block;font-style:normal;font-size:11.5px;font-weight:800;color:var(--tx2);}
.stdy-num b{display:block;font-size:21px;font-weight:800;color:var(--navy);margin-top:3px;}
.stdy-num b em{font-style:normal;font-size:12px;font-weight:800;color:var(--tx2);margin-left:1px;}
.stdy-eta{display:flex;gap:8px;align-items:flex-start;margin-top:12px;padding:12px 14px;
  border-radius:14px;background:var(--lt,#F4F4F7);font-size:12.5px;font-weight:700;
  color:var(--tx2);line-height:1.7;}
.stdy-eta b{color:var(--navy);}
.stdy-h{display:flex;align-items:baseline;gap:8px;margin:24px 0 10px;}
.stdy-h b{font-size:16px;font-weight:800;color:var(--navy);}
.stdy-h a{margin-left:auto;font-size:12.5px;font-weight:800;color:var(--blue);
  cursor:pointer;text-decoration:none;}
.stdy-chart{border:1.5px solid var(--bd);border-radius:18px;padding:14px 12px 8px;}
.stdy-chart svg{display:block;width:100%;height:150px;overflow:visible;}
.stdy-chart .sc-empty{text-align:center;font-size:13px;font-weight:700;
  color:var(--tx2);padding:34px 10px;line-height:1.8;}
.stdy-lg{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;font-size:11px;
  font-weight:800;color:var(--tx2);margin-top:8px;}
.stdy-lg span{display:flex;align-items:center;gap:4px;}
.stdy-lg u{display:block;width:14px;height:3px;border-radius:2px;text-decoration:none;}
/* 準備中の画面 */
.nvsoon{text-align:center;padding:66px 24px;}
.nvsoon .nvsoon-i{font-size:52px;line-height:1;filter:grayscale(1);opacity:.45;}
.nvsoon b{display:block;font-size:21px;font-weight:800;color:var(--navy);margin:14px 0 6px;}
.nvsoon i{display:block;font-style:normal;font-size:14px;font-weight:700;color:var(--tx2);
  max-width:20em;margin:0 auto;line-height:1.8;}
/* 上に戻る */
/* 上に戻る。absolute だとスクロールする箱の中身と一緒に動いてしまうので、
   画面に固定する。位置はタブバーの上 */
.nvtop{position:fixed;right:14px;bottom:calc(var(--sab,0px) + 82px);z-index:9;
  width:46px;height:46px;border:1.5px solid var(--bd);border-radius:999px;
  background:var(--card,#fff);box-shadow:0 3px 0 var(--bd);
  font-size:19px;color:var(--blue);cursor:pointer;font-family:inherit;
  opacity:0;pointer-events:none;transform:translateY(6px);
  transition:opacity .18s ease,transform .18s ease;}
.nvtop.on{opacity:1;pointer-events:auto;transform:none;}
.nvtop.on:active{transform:translateY(3px);box-shadow:none;}
/* きょうの1本道の見出し(Duolingoのユニットバナー)。
   文字を出すのはここだけ。いま解く1つの名前と、何個目かだけ。 */
/* きょうの見出しは「いま進んでいる」ものなのでグラデーション。
   黄～橙は明るいので、文字は白ではなく濃い茶で置く */
.nvunit{display:flex;align-items:stretch;background:var(--grad,var(--ok,#06E176));border-radius:16px;
  margin:2px 0 4px;overflow:hidden;box-shadow:0 4px 0 var(--g2-deep,#C97300);}
.nvunit.fin{background:var(--ok,#58CC02);box-shadow:0 4px 0 var(--ok-deep,#46A302);}
.nvunit.fin .nvunit-t b,.nvunit.fin .nvunit-b{color:#0F2A00;}
.nvunit.fin .nvunit-t i{color:rgba(15,42,0,.72);}
.nvunit-t{flex:1;padding:14px 16px;min-width:0;}
.nvunit-t i{display:block;font-style:normal;font-size:12.5px;font-weight:800;
  color:rgba(58,37,0,.72);letter-spacing:.02em;}
.nvunit-t b{font-size:19px;font-weight:800;color:#3A2500;line-height:1.35;margin-top:3px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.nvunit-b{width:58px;flex-shrink:0;border:none;border-left:2px solid rgba(58,37,0,.22);
  background:none;font-size:21px;cursor:pointer;color:#3A2500;font-family:inherit;}
.nvunit-b:active{background:rgba(0,0,0,.09);}
/* 寄り道(復習・勘定科目チェック)。鍵はかけない */
.nvnode.side{background:var(--blue-deep,#0044A8);position:relative;}
.nvnode.side .nvnode-f{background:var(--card,#fff);border:2px solid var(--blue);
  color:var(--blue);font-size:26px;}
.nvnode.side.lk{background:var(--locked-deep,#DEDEE5);}
.nvnode.side.lk .nvnode-f{background:var(--locked,#EDEDF2);border-color:var(--locked-deep,#DEDEE5);
  filter:grayscale(1);opacity:.55;}
.nvp.st-fire{cursor:pointer;}
/* 先のタスクは押させない。鍵は色を落として奥に引っ込める */
.nvnode.lk{cursor:default;}
.nvnode.lk:active{transform:none;padding-bottom:9px;}
.nvnode.lk .nvnode-f{filter:grayscale(1);opacity:.5;font-size:24px;}
.nvchest:not(.open) span{filter:grayscale(1);opacity:.5;}
.nvchest:not(.open):active{transform:none;padding-bottom:9px;}
/* 宝箱 */
.nvchest{width:76px;padding:0 0 9px;border:none;border-radius:20px;cursor:pointer;
  background:var(--locked-deep,#DEDEE5);font-family:inherit;display:block;}
.nvchest span{display:flex;align-items:center;justify-content:center;height:64px;border-radius:20px;
  background:var(--locked,#EDEDF2);font-size:30px;box-shadow:inset 0 2px 0 rgba(255,255,255,.55);}
.nvchest.open{background:var(--accent-deep,#6E00A6);}
.nvchest.open span{background:var(--accent,#9B00E8);}
.nvchest.open{animation:nvbob 2s ease-in-out infinite;}
.nvchest:active{transform:translateY(5px);padding-bottom:4px;}
.nvpathend{text-align:center;font-size:12.5px;color:var(--dim,#A2A2AC);line-height:1.8;padding:18px 12px 6px;}
/* ローディング。犬が歩いているあいだ待ってもらう */
/* ローディング(bokiinu2.pen B1)。犬 → Loading... → 帯 → % → 下にヒント */
#nvload{position:fixed;inset:0;z-index:9990;background:var(--bg);
  display:flex;flex-direction:column;
  padding-top:var(--sat,0px);padding-bottom:var(--sab,0px);}
#nvload .nvload-core{flex:1;min-height:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:14px;padding:0 30px;}
#nvload .nvload-d{line-height:0;height:170px;display:flex;align-items:center;justify-content:center;}
#nvload .nvload-d canvas{image-rendering:pixelated;}
#nvload .nvload-t{font-size:22px;font-weight:900;color:var(--navy);letter-spacing:-.02em;}
#nvload .nvload-bar{display:block;width:100%;max-width:330px;height:10px;border-radius:5px;
  background:var(--bd);overflow:hidden;}
#nvload .nvload-bar i{display:block;height:100%;width:0;border-radius:5px;background:var(--blue);}
#nvload .nvload-p{font-style:normal;font-size:11.5px;font-weight:700;color:var(--dim);}
#nvload .nvload-tipw{flex:none;padding:0 24px 34px;}
#nvload .nvload-tip{background:var(--card);border:2px solid var(--bd);border-radius:14px;
  padding:14px 16px;}
#nvload .nvload-th{display:flex;align-items:center;gap:7px;
  font-size:10.5px;font-weight:700;color:#7A5200;letter-spacing:.08em;}
#nvload .nvload-th .nvic{width:14px;height:14px;color:var(--gold);}
#nvload .nvload-tip p{margin:5px 0 0;font-size:12.5px;font-weight:600;color:var(--navy);line-height:1.7;}
body.dark #nvload .nvload-th{color:var(--gold);}
/* 課金誘導。全画面・左上にバツ。中身は PAYWALL を差し替えれば変わる */
#nvpay{position:fixed;inset:0;z-index:9995;background:var(--bg,#fff);
  display:flex;flex-direction:column;overflow:hidden;}
#nvpay .nvpay-x{position:absolute;top:calc(10px + var(--sat,0px));left:12px;z-index:3;
  width:42px;height:42px;border:none;background:none;font-size:26px;line-height:1;
  color:var(--tx2);cursor:pointer;font-family:inherit;}
#nvpay .nvpay-x:active{opacity:.5;}
#nvpay .nvpay-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:calc(62px + var(--sat,0px)) 22px 12px;text-align:center;}
#nvpay .nvpay-rib{display:inline-block;background:var(--gold,#FFC800);color:#4B3200;
  font-size:14px;font-weight:800;border-radius:8px;padding:7px 20px;margin-bottom:16px;}
#nvpay .nvpay-h{font-size:25px;font-weight:800;color:var(--navy);line-height:1.4;margin:0 0 8px;}
#nvpay .nvpay-s{font-size:14px;font-weight:700;color:var(--tx2);margin:0 0 20px;}
#nvpay .nvpay-art{display:flex;align-items:center;justify-content:center;
  min-height:150px;margin:6px 0 20px;line-height:0;}
#nvpay .nvpay-art canvas{image-rendering:pixelated;}
#nvpay .nvpay-list{text-align:left;max-width:340px;margin:0 auto;display:flex;
  flex-direction:column;gap:12px;}
#nvpay .nvpay-li{display:flex;gap:11px;align-items:flex-start;font-size:14.5px;
  font-weight:700;color:var(--tx1,#0A0A0C);line-height:1.6;}
#nvpay .nvpay-li span{flex-shrink:0;font-size:17px;}
#nvpay .nvpay-foot{flex-shrink:0;padding:12px 20px calc(14px + var(--sab,0px));
  background:var(--bg,#fff);border-top:1px solid var(--bd);}
#nvpay .nvpay-cta{width:100%;border:none;border-radius:16px;padding:16px;font-family:inherit;
  font-size:16.5px;font-weight:800;color:#4B3200;background:var(--gold,#FFC800);
  box-shadow:0 4px 0 var(--gold-deep,#C89B00);cursor:pointer;}
#nvpay .nvpay-cta:active{transform:translateY(4px);box-shadow:none;}
#nvpay .nvpay-note{font-size:11.5px;color:var(--dim,#A2A2AC);margin-top:10px;line-height:1.6;}
#nvpay .nvpay-skip{display:block;width:100%;border:none;background:none;margin-top:6px;
  font-family:inherit;font-size:13.5px;font-weight:800;color:var(--tx2);cursor:pointer;padding:8px;}
/* 解禁前 */
.nvlockarea{text-align:center;padding:44px 20px;}
.nvlockarea .nvlockic{font-size:46px;}
.nvlockarea b{display:block;font-size:18px;font-weight:800;color:var(--navy);margin:10px 0 4px;}
.nvlockarea span{font-size:13.5px;color:var(--tx2);}
/* タブバー: 白地いっぱい+上に墨の線(v2 2026-09-02) */
html.v2 #nvtab{left:0;right:0;bottom:0;
  border-radius:0;border:none;border-top:3px solid var(--navy);
  padding:9px 16px calc(9px + var(--sab,0px));gap:4px;
  background:var(--card);box-shadow:none;}
#nvtab button{flex:1;background:none;border:none;display:flex;flex-direction:column;align-items:center;gap:2px;
  padding:7px 0 5px;border-radius:12px;font-family:inherit;cursor:pointer;opacity:1;}
#nvtab button i{font-style:normal;font-size:10px;font-weight:800;color:var(--dim,#A2A2AC);}
#nvtab button.on{background:var(--flame-tint,#EAF2FF);}
#nvtab button.on i{color:var(--blue,#0161E8);}
.nvbar{display:flex;align-items:center;gap:14px;}
.nvsp{flex:1;}
/* メニュー(下から出るシート) */
#nvmenu{position:fixed;inset:0;background:rgba(15,10,40,.5);z-index:2450;display:flex;align-items:flex-end;}
#nvmenu .nvm-box{background:var(--card,#fff);width:100%;border-radius:22px 22px 0 0;padding:16px 14px 20px;
  padding-bottom:calc(20px + env(safe-area-inset-bottom,0px));max-height:82vh;overflow-y:auto;}
#nvmenu .nvm-h{font-size:12.5px;font-weight:800;color:var(--tx2);margin:0 4px 10px;}
#nvmenu .nvm-i{display:flex;align-items:center;gap:12px;width:100%;background:none;border:none;
  padding:13px 8px;border-bottom:1px solid var(--bd);font-family:inherit;cursor:pointer;text-align:left;}
#nvmenu .nvm-t{flex:1;min-width:0;}
#nvmenu .nvm-t b{display:block;font-size:15px;color:var(--navy);}
body.dark #nvmenu .nvm-t b{color:#dfe7f5;}
#nvmenu .nvm-t i{font-style:normal;font-size:11.5px;color:var(--tx2);}
#nvmenu .nvm-a{color:var(--tx2);font-size:20px;}
#nvmenu .nvm-c{width:100%;margin-top:14px;border:none;background:var(--lt);border-radius:14px;
  padding:14px;font-family:inherit;font-size:14px;font-weight:800;color:var(--tx2);cursor:pointer;}
/* ===== 問題を解く画面のヘッダ(.pen duo-06-lesson-light) ===== */
#nvsolvehead{display:none;}
html.v2 body.solving #nvsolvehead,html.v2 body.tuton #nvsolvehead{display:flex;position:fixed;left:0;right:0;top:0;z-index:66;
  align-items:center;gap:14px;background:var(--bg,#fff);
  padding:calc(8px + var(--sat,0px)) 16px 10px;border-bottom:1px solid var(--bd);}
#nvsolvehead .nsh-x{border:none;background:none;font-size:23px;line-height:1;color:var(--dim,#A2A2AC);
  cursor:pointer;padding:2px 4px;font-family:inherit;}
#nvsolvehead .nsh-bar{flex:1;height:16px;border-radius:999px;background:var(--locked,#EDEDF2);overflow:hidden;}
#nvsolvehead .nsh-bar i{display:block;height:100%;border-radius:999px;background:var(--grad,var(--blue));transition:width .3s ease;}
#nvsolvehead .nsh-hp{display:flex;align-items:center;gap:4px;font-size:17px;font-weight:800;color:var(--ng,#FF4B4B);}
#nvsolvehead .nsh-heart{font-size:19px;}
/* 解いている間は、上の戦闘バーも下のタブバーも出さない */
html.v2 body.solving #btbar,html.v2 body.tuton #btbar{display:none;}
/* 模試の間も出さない。90分の試験中に下のタブを1回押すだけで、
   確認もなく試験から出てしまっていた */
html.v2 body.solving #nvtab,html.v2 body.tuton #nvtab,html.v2 body.exam #nvtab{display:none;}
html.v2 body.tuton .wrap{padding-top:calc(64px + var(--sat,0px));}
html.v2 body.solving .wrap{padding-top:calc(64px + var(--sat,0px));
  padding-bottom:calc(var(--sbh,74px) + 14px);}
html.v2 body.solving #solvebar{bottom:0;padding-bottom:calc(9px + var(--sab,0px));}
/* 電卓は下のバーの上に置く。バーの高さは実測 */
html.v2 body.solving .calcbtn{bottom:calc(var(--sbh,74px) + 12px);}
html.v2 body.solving #calc{bottom:calc(var(--sbh,74px) + 74px);}
/* ガイド中は解答欄がシートに隠れないよう、下に逃げ場を作る */
html.v2 body.tuton .wrap{padding-bottom:var(--guideh,60vh);}
/* ガイドは他のシートと同じく全幅・下も余白なし */
html.v2 #tutguide{left:0;right:0;bottom:0;max-width:none;border-radius:20px 20px 0 0;
  padding:16px 18px calc(16px + var(--sab,0px));box-shadow:0 -8px 30px rgba(0,0,0,.18);
  border-top:1px solid var(--bd);}
html.v2 body.tuton .calcbtn{display:none;}
/* ガイド中はハイライトが z-index:151 まで上がるので、問題文をそれより上に置く。
   そうしないと、仕訳の行がスクロールしてきて問題文の上に描かれる */
html.v2 body.tuton .qstick{z-index:152;background:var(--card,#fff);}
/* 金額の4択。押しやすい大きさで2列 */
#tutguide .tg-ch{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:9px 0 2px;}
#tutguide .tg-ch button{border:1.5px solid var(--bd);border-radius:11px;background:var(--card,#fff);
  font-family:inherit;font-size:15px;font-weight:800;color:var(--navy);padding:8px 6px;
  line-height:1.3;cursor:pointer;box-shadow:0 2px 0 var(--bd);}
#tutguide .tg-ch button:active{transform:translateY(2px);box-shadow:none;}
#tutguide .tg-ch button[disabled]{opacity:.5;}
body.dark #tutguide .tg-ch button{color:#dfe7f5;}
/* ステータスバーの下を不透明に。スクロールした本文が透けて見えるのを止める */
html.v2 body::before{content:"";position:fixed;left:0;right:0;top:0;height:var(--sat,0px);
  background:var(--bg,#fff);z-index:80;pointer-events:none;}
/* 連打で画面が拡大するのを止める */
html.v2,html.v2 body{touch-action:manipulation;}
html.v2 button,html.v2 .prow,html.v2 .tcard,
html.v2 input,html.v2 select,html.v2 a{touch-action:manipulation;}
/* やめる確認 */
/* ドリル一覧(bokiinu2.pen N-B4) */
.nvsub-h{flex:none;width:36px;height:36px;border:2px solid var(--bd);border-radius:12px;
  background:none;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.nvsub-h .nvic{width:17px;height:17px;color:var(--dim);transform:none;}
.pm-seg{display:flex;gap:4px;background:var(--card);border:2px solid var(--bd);
  border-radius:13px;padding:4px;margin-bottom:14px;}
.pm-s{flex:1;min-width:0;height:40px;border:none;border-radius:10px;background:none;
  font-family:inherit;font-size:12.5px;font-weight:800;color:var(--dim);cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:5px;}
.pm-s.on{background:var(--navy);color:var(--card);}
.pm-s .nvic{width:13px;height:13px;color:var(--bd);}
.pm-s u{text-decoration:none;font-size:9.5px;font-weight:700;color:var(--bd);}
.pm{display:flex;flex-direction:column;gap:14px;}
.pm-rec{display:flex;align-items:center;gap:12px;background:var(--card);
  border:3px solid var(--navy);border-radius:16px;padding:14px 15px;}
.pm-rt{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;}
.pm-rr{display:flex;align-items:center;gap:7px;}
.pm-rr s{text-decoration:none;background:var(--blue);border-radius:6px;padding:3px 8px;
  font-size:9.5px;font-weight:800;color:#FFFFFF;}
.pm-rr em{font-style:normal;font-size:10px;font-weight:800;color:#7A5200;}
.pm-rt b{font-size:17px;font-weight:900;color:var(--navy);letter-spacing:-.02em;line-height:1.3;}
.pm-rt i{font-style:normal;font-size:10.5px;font-weight:600;color:var(--dim);}
.pm-rb{flex:none;width:96px;height:46px;border:none;border-radius:12px;background:var(--blue);
  font-family:inherit;font-size:13px;font-weight:900;color:#FFFFFF;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:6px;}
.pm-rb .nvic{width:17px;height:17px;color:currentColor;}

.pm-sec{display:flex;flex-direction:column;gap:7px;}
.pm-sh{display:flex;align-items:center;gap:9px;border:none;background:none;padding:0;
  font-family:inherit;cursor:pointer;text-align:left;}
.pm-sh s{text-decoration:none;flex:none;background:var(--navy);border-radius:7px;padding:4px 8px;
  font-size:10px;font-weight:800;color:var(--card);}
.pm-sh b{flex:1;min-width:0;font-size:13px;font-weight:900;color:var(--navy);}
.pm-sh i{font-style:normal;font-size:11px;font-weight:700;color:var(--dim);}
.pm-sh .nvic{flex:none;width:17px;height:17px;color:var(--dim);transform:rotate(90deg);}
.pm-sh .nvic.up{transform:rotate(-90deg);}
.pm-list{background:var(--card);border:2px solid var(--bd);border-radius:14px;overflow:hidden;}
.pm-d{display:flex;align-items:center;gap:11px;width:100%;min-height:52px;padding:8px 14px;
  border:none;background:none;font-family:inherit;cursor:pointer;text-align:left;}
.pm-d+.pm-d{border-top:1.5px solid var(--bd);}
.pm-mk{flex:none;width:20px;height:20px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;
  font-size:10px;font-weight:800;color:var(--dim);border:1.5px solid var(--bd);}
.pm-mk.m1{border-color:var(--blue);color:var(--blue);}
.pm-mk.m2{border-color:var(--gold);background:var(--flame-tint);color:#7A5200;}
.pm-mk.m3{border-color:var(--blue);background:var(--blue);color:#FFFFFF;}
.pm-dn{flex:1;min-width:0;font-size:12.5px;font-weight:600;color:var(--dim);line-height:1.5;}
.pm-dn.done{color:var(--navy);font-weight:700;}
.pm-hot{text-decoration:none;flex:none;background:var(--flame-tint);border-radius:6px;padding:3px 7px;
  font-size:9.5px;font-weight:800;color:#7A5200;}
.pm-dq{text-decoration:none;flex:none;font-size:10.5px;font-weight:700;color:var(--bd);}
.pm-more{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;height:46px;
  border:2px solid var(--bd);border-radius:12px;background:none;
  font-family:inherit;font-size:12px;font-weight:700;color:var(--dim);cursor:pointer;}
.pm-more .nvic{width:16px;height:16px;color:currentColor;transform:rotate(90deg);}

/* 凡例シート(bokiinu2.pen N-B4h) */
#pmh{position:fixed;inset:0;z-index:2700;background:rgba(20,22,26,.45);display:flex;align-items:flex-end;}
#pmh .pmh-box{width:100%;background:var(--card);border-top:3px solid var(--navy);
  border-radius:26px 26px 0 0;padding:0 22px calc(26px + var(--sab,0px));}
#pmh .pmh-grip{display:flex;justify-content:center;padding:10px 0 0;}
#pmh .pmh-grip s{text-decoration:none;width:44px;height:5px;border-radius:3px;background:var(--bd);}
#pmh .pmh-h{display:flex;align-items:center;gap:10px;padding:10px 0 14px;}
#pmh .pmh-h b{flex:1;font-size:19px;font-weight:900;color:var(--navy);letter-spacing:-.02em;}
#pmh .pmh-h button{width:32px;height:32px;border:2px solid var(--bd);border-radius:10px;
  background:none;font-family:inherit;font-size:15px;color:var(--navy);cursor:pointer;}
#pmh .pmh-r{display:flex;align-items:center;gap:13px;height:64px;}
#pmh .pmh-r+.pmh-r{border-top:1.5px solid var(--bd);}
#pmh .pmh-r .pm-mk{width:24px;height:24px;border-radius:12px;font-size:11px;}
#pmh .pmh-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
#pmh .pmh-t b{font-size:13.5px;font-weight:800;color:var(--navy);}
#pmh .pmh-t i{font-style:normal;font-size:11px;font-weight:500;color:var(--dim);}
#pmh .pmh-n{background:var(--bg);border-radius:13px;padding:13px 14px;margin-top:14px;}
#pmh .pmh-n em{font-style:normal;font-size:10px;font-weight:800;color:var(--dim);}
#pmh .pmh-n p{margin:5px 0 0;font-size:12px;font-weight:700;color:var(--navy);line-height:1.7;}
#pmh .pmh-c{width:100%;height:52px;margin-top:20px;border:none;border-radius:13px;
  background:var(--navy);font-family:inherit;font-size:14px;font-weight:900;color:var(--card);cursor:pointer;}

/* 勘定科目チェック(bokiinu2.pen N-B7b) */
.ac5{display:flex;flex-direction:column;gap:11px;}
.ac5-sum{background:var(--card);border:2px solid var(--bd);border-radius:14px;padding:13px 14px;}
.ac5-r{display:flex;}
.ac5-r span{flex:1;min-width:0;display:flex;flex-wrap:wrap;justify-content:center;
  align-items:baseline;gap:2px;}
.ac5-r span+span{border-left:1.5px solid var(--bd);}
.ac5-r b{font-size:20px;font-weight:700;color:var(--navy);}
.ac5-r u{text-decoration:none;font-size:10px;font-weight:700;color:var(--dim);}
.ac5-r i{flex-basis:100%;font-style:normal;text-align:center;font-size:10px;font-weight:700;
  color:var(--dim);margin-top:2px;}
.ac5-el{display:flex;gap:5px;margin-top:10px;padding-top:10px;border-top:1.5px solid var(--bd);}
.ac5-e{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:4px;}
.ac5-e s{display:block;width:100%;text-decoration:none;height:6px;border-radius:3px;background:var(--bg);overflow:hidden;}
.ac5-e s i{display:block;height:100%;border-radius:3px;background:var(--blue);}
.ac5-e s i.weak{background:var(--gold);}
.ac5-e em{font-style:normal;font-size:9px;font-weight:700;color:var(--dim);}
.ac5-e em.weak{color:#7A5200;}

.ac5-main{background:var(--card);border:3px solid var(--navy);border-radius:18px;padding:15px 16px;
  display:flex;flex-direction:column;gap:12px;}
.ac5-h{display:flex;align-items:center;gap:9px;}
.ac5-h s{text-decoration:none;flex:none;background:var(--blue);border-radius:7px;padding:4px 9px;
  font-size:10px;font-weight:800;color:#FFFFFF;}
.ac5-h i{flex:1;min-width:0;font-style:normal;font-size:10.5px;font-weight:600;color:var(--dim);}
.ac5-t{display:flex;align-items:center;gap:12px;}
.ac5-tt{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;}
.ac5-tt b{font-size:18px;font-weight:900;color:var(--navy);letter-spacing:-.02em;}
.ac5-tt i{font-style:normal;font-size:10.5px;font-weight:600;color:var(--dim);}
.ac5-m{flex:none;width:38px;height:38px;border-radius:12px;background:var(--bg);
  display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:900;color:var(--dim);}
.ac5-m .nvic{width:17px;height:17px;color:var(--dim);}
.ac5-m.m1{background:#F3E2D5;color:#8A4B23;}
.ac5-m.m2{background:#E9ECF1;color:#5B646F;}
.ac5-m.m3{background:var(--flame-tint);color:#7A5200;}
.ac5-cta{height:52px;border:none;border-radius:13px;background:var(--blue);
  font-family:inherit;font-size:15px;font-weight:900;color:#FFFFFF;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:8px;}
.ac5-cta .nvic{width:19px;height:19px;color:currentColor;}

.ac5-row{display:flex;align-items:center;gap:11px;height:62px;padding:0 14px;
  background:var(--card);border:2px solid var(--bd);border-radius:14px;
  font-family:inherit;cursor:pointer;text-align:left;}
.ac5-row.lock{opacity:.6;cursor:default;}
.ac5-rt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.ac5-rt b{font-size:13.5px;font-weight:800;color:var(--navy);}
.ac5-rt i{font-style:normal;font-size:10px;font-weight:600;color:var(--dim);}
.ac5-ago{flex:none;font-size:10px;font-weight:700;color:var(--bd);}
.ac5-ra{flex:none;width:17px;height:17px;color:var(--dim);}
.ac5-row .ac5-m{width:30px;height:30px;border-radius:10px;font-size:11.5px;}

.ac5-mix{display:flex;align-items:center;gap:11px;height:64px;padding:0 15px;
  background:var(--navy);border:none;border-radius:14px;font-family:inherit;cursor:pointer;text-align:left;}
.ac5-mix>.nvic{flex:none;width:19px;height:19px;color:var(--card);}
.ac5-mt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.ac5-mt b{font-size:14px;font-weight:900;color:var(--card);}
.ac5-mt i{font-style:normal;font-size:10px;font-weight:600;color:var(--dim);}
.ac5-mix s{text-decoration:none;flex:none;background:var(--gold);border-radius:10px;padding:8px 12px;
  font-size:12px;font-weight:900;color:#3A2A00;}

/* 模試(bokiinu2.pen N-B8)。次の1回だけを大きく、残りは行 */
.mk{display:flex;flex-direction:column;gap:12px;}
.mk-main{background:var(--card);border:3px solid var(--navy);border-radius:18px;padding:16px;
  display:flex;flex-direction:column;gap:13px;}
.mk-h{display:flex;align-items:center;gap:10px;}
.mk-h s{text-decoration:none;flex:none;background:var(--blue);border-radius:7px;padding:4px 9px;
  font-size:10px;font-weight:800;color:#FFFFFF;}
.mk-h b{flex:1;min-width:0;font-size:20px;font-weight:900;color:var(--navy);letter-spacing:-.02em;}
.mk-m{display:flex;background:var(--bg);border-radius:12px;padding:12px 0;}
.mk-m span{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:2px;}
.mk-m span+span{border-left:1.5px solid var(--bd);}
.mk-m b{font-size:19px;font-weight:700;color:var(--navy);}
.mk-m i{font-style:normal;font-size:10px;font-weight:700;color:var(--dim);}
.mk-main p{margin:0;font-size:11px;font-weight:500;color:var(--dim);line-height:1.7;}
.mk-cta{height:54px;border:none;border-radius:13px;background:var(--blue);
  font-family:inherit;font-size:15px;font-weight:900;color:#FFFFFF;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:8px;}
.mk-cta .nvic{width:19px;height:19px;color:currentColor;}
.mk-r{display:flex;align-items:center;gap:12px;height:64px;padding:0 15px;
  background:var(--card);border:2px solid var(--bd);border-radius:14px;
  font-family:inherit;cursor:pointer;text-align:left;}
.mk-rt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.mk-rt b{font-size:14.5px;font-weight:800;color:var(--navy);}
.mk-rt i{font-style:normal;font-size:10.5px;font-weight:600;color:var(--dim);}
.mk-ra{flex:none;width:18px;height:18px;color:var(--blue);}
.mk-lock{display:flex;align-items:center;gap:12px;background:var(--flame-tint);
  border-radius:14px;padding:14px 15px;}
.mk-lock>.nvic{flex:none;width:19px;height:19px;color:#7A5200;}
.mk-lt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.mk-lt b{font-size:13px;font-weight:900;color:#14161A;}
.mk-lt i{font-style:normal;font-size:10.5px;font-weight:700;color:#7A5200;}
.mk-lock button{flex:none;border:none;border-radius:10px;background:#14161A;padding:10px 13px;
  font-family:inherit;font-size:12px;font-weight:800;color:#FFFFFF;cursor:pointer;}
.mk-hist{border:2px solid var(--bd);border-radius:14px;padding:14px 15px;
  display:flex;flex-direction:column;gap:9px;}
.mk-hh{display:flex;align-items:center;gap:10px;}
.mk-hh b{flex:1;font-size:13px;font-weight:900;color:var(--navy);}
.mk-hh i{font-style:normal;font-size:10.5px;font-weight:700;color:var(--dim);}
.mk-hb{display:block;height:8px;border-radius:4px;background:var(--bg);
  box-shadow:inset 0 0 0 1.5px var(--bd);overflow:hidden;}
.mk-hb i{display:block;height:100%;border-radius:4px;background:var(--blue);}
.mk-hist p{margin:0;font-size:11px;font-weight:600;color:var(--dim);line-height:1.7;}
body.dark .mk-lt b{color:#2C2510;}
body.dark .mk-lock button{background:#2C2510;}

/* ログイン(bokiinu2.pen N-G2)。下から出るシートにする */
html.v2 #acct-ovl{align-items:flex-end;padding:0;background:rgba(20,22,26,.45);}
html.v2 #acct-box,html.sunset #acct-box{width:100%;max-width:520px;background:var(--card);
  border:none;border-top:3px solid var(--navy);border-radius:26px 26px 0 0;box-shadow:none;
  padding:0 22px calc(26px + var(--sab,0px));line-height:1.6;font-size:13.5px;
  max-height:86dvh;overflow-y:auto;}
html.v2 #acct-box::before{content:"";display:block;width:44px;height:5px;border-radius:3px;
  background:var(--bd);margin:10px auto 12px;}
#acct-box .ac-h{display:flex;align-items:center;gap:14px;padding:12px 0 16px;}
#acct-box .ac-dog{flex:none;width:64px;height:64px;border-radius:20px;background:var(--bg);
  display:flex;align-items:center;justify-content:center;line-height:0;overflow:hidden;}
#acct-box .ac-dog canvas{image-rendering:pixelated;}
#acct-box .ac-ht{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;}
#acct-box .ac-ht b{font-size:20px;font-weight:900;color:var(--navy);letter-spacing:-.02em;line-height:1.3;}
#acct-box .ac-ht i{font-style:normal;font-size:11.5px;font-weight:600;color:var(--dim);}
#acct-box .ac-vis{display:flex;align-items:center;gap:10px;padding-bottom:16px;}
#acct-box .ac-v{flex:1;min-width:0;height:56px;border-radius:13px;background:var(--bg);
  border:2px solid var(--bd);display:flex;align-items:center;justify-content:center;gap:8px;
  font-size:12px;font-weight:700;color:var(--dim);}
#acct-box .ac-v .nvic{width:17px;height:17px;color:currentColor;}
#acct-box .ac-v.on{background:var(--blue-tint);border-color:var(--blue);color:var(--blue);font-weight:800;}
#acct-box .ac-ar{flex:none;width:20px;height:20px;color:var(--navy);}
#acct-box .ac-act{display:flex;flex-direction:column;gap:10px;}
#acct-box .ac-g{height:56px;border:2.5px solid var(--navy);border-radius:14px;background:var(--card);
  font-family:inherit;font-size:15px;font-weight:900;color:var(--navy);cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:10px;}
#acct-box .ac-g s{text-decoration:none;width:20px;height:20px;border-radius:10px;
  background:conic-gradient(#EA4335 0 25%,#FBBC05 0 50%,#34A853 0 75%,#4285F4 0);}
#acct-box .ac-m{height:50px;border:none;border-radius:14px;background:none;
  font-family:inherit;font-size:12.5px;font-weight:700;color:var(--dim);cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:8px;}
#acct-box .ac-m .nvic{width:17px;height:17px;color:currentColor;}
#acct-box .ac-mr{display:flex;gap:8px;}
#acct-box .ac-mr.hidden{display:none;}
#acct-box .ac-mr input{flex:1;min-width:0;box-sizing:border-box;height:50px;
  border:2px solid var(--bd);border-radius:12px;padding:0 14px;
  font-family:inherit;font-size:14px;background:var(--card);color:var(--navy);}
#acct-box .ac-send{flex:none;height:50px;padding:0 18px;border:none;border-radius:12px;
  background:var(--navy);font-family:inherit;font-size:13px;font-weight:800;color:var(--card);cursor:pointer;}
#acct-box .ac-msg{font-size:12px;font-weight:600;color:var(--blue);margin:10px 0 0;line-height:1.8;}
#acct-box .ac-msg:empty{display:none;}
#acct-box .ac-later{display:block;width:100%;margin-top:18px;border:none;background:none;
  font-family:inherit;font-size:12.5px;font-weight:700;color:var(--dim);cursor:pointer;padding:8px 0;}
#acct-box .ac-close{display:flex;justify-content:flex-end;padding:6px 0 2px;}
#acct-box .ac-close button{border:none;background:none;font-family:inherit;font-size:12.5px;
  font-weight:800;color:var(--dim);cursor:pointer;padding:6px 2px;}

/* 中断シート(bokiinu2.pen N-B5b) */
#nshq{position:fixed;inset:0;z-index:2700;background:rgba(20,22,26,.45);display:flex;align-items:flex-end;}
#nshq .nshq-box{background:var(--card);width:100%;border-radius:26px 26px 0 0;
  border-top:3px solid var(--navy);
  padding:0 22px calc(22px + var(--sab,0px));}
#nshq .nq-grip{display:flex;justify-content:center;padding:10px 0 12px;}
#nshq .nq-grip s{text-decoration:none;width:44px;height:5px;border-radius:3px;background:var(--bd);}
#nshq .nq-h{display:flex;align-items:center;gap:14px;padding-bottom:14px;}
#nshq .nq-dog{flex:none;width:62px;height:62px;border-radius:19px;background:var(--bg);
  display:flex;align-items:center;justify-content:center;line-height:0;overflow:hidden;}
#nshq .nq-dog canvas{image-rendering:pixelated;}
#nshq .nq-ht{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;}
#nshq .nq-ht b{font-size:20px;font-weight:900;color:var(--navy);letter-spacing:-.02em;}
#nshq .nq-ht i{font-style:normal;font-size:11.5px;font-weight:600;color:var(--dim);}
#nshq .nq-st{display:flex;background:var(--bg);border-radius:14px;padding:14px 0;margin-bottom:16px;}
#nshq .nq-s{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;}
#nshq .nq-s+.nq-s{border-left:1.5px solid var(--bd);}
#nshq .nq-s b{font-size:17px;font-weight:700;color:var(--navy);}
#nshq .nq-s i{font-style:normal;font-size:10px;font-weight:700;color:var(--dim);}
#nshq .nq-act{display:flex;flex-direction:column;gap:10px;}
#nshq .nq-go{height:58px;border:none;border-radius:14px;background:var(--blue);
  font-family:inherit;font-size:16px;font-weight:900;color:#FFFFFF;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:8px;}
#nshq .nq-go .nvic{width:19px;height:19px;color:currentColor;}
#nshq .nq-q{height:52px;border:2px solid var(--bd);border-radius:14px;background:none;
  font-family:inherit;font-size:13.5px;font-weight:800;color:var(--dim);cursor:pointer;}
#nshq .nq-n{margin:16px 0 0;text-align:center;font-size:10.5px;font-weight:500;color:var(--dim);}

/* ===== スマホの演習モード ===== */
#solvebar{display:none;}
@media(max-width:620px){
  body.solving{padding-bottom:82px;}
  /* 問題文・資料を上に貼る。金額を見に戻らなくていいように */
  body.solving #btbar{top:var(--sat,0px);}   /* 解答中はヘッダーが流れるので、戦闘バーを一番上に詰める */
  /* 画面の端から端まで使う。親の余白がいくつでも効くよう vw で外に出す。
     影は付けない(下線だけで足りる) */
  .qstick{position:sticky;top:var(--stickTop,58px);z-index:32;background:var(--card,#fff);
    width:100vw;max-width:none;margin:0 calc(50% - 50vw) 10px;padding:8px 16px 6px;
    border-bottom:1px solid var(--bd);border-radius:0;box-shadow:none;}
  .qstick .qtext{max-height:none;overflow:visible;margin-bottom:0;font-size:15px;line-height:1.85;}
  .qstick-t{display:none;}
  /* 大問の資料は長いので貼り付けない(全文は出す) */
  /* 幅も戻す。100vw のままだと親の余白ぶん右にはみ出す(アプリで問題文が切れていた) */
  body.solving .qstick.long{position:static;width:auto;max-width:100%;margin:0;padding:0;border:none;box-shadow:none;}
  /* 仕訳: 使う行だけ出す */
  .jrow.jhide{display:none;}
  .jadd{display:block;width:100%;border:none;border-top:1px solid var(--bd);background:var(--lt);
    color:var(--blue);font-family:inherit;font-size:12px;font-weight:800;padding:9px 0;cursor:pointer;}
  /* 勘定科目は大きなボタンで選ぶ */
  select.jsel-off{display:none;}
  .acctbtn{flex:1;min-width:0;border:none;background:none;font-family:inherit;font-size:13.5px;
    font-weight:700;text-align:left;padding:11px 10px;color:var(--tx2);cursor:pointer;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .acctbtn.empty{color:#9aa3b2;font-weight:600;}
  .acctbtn.empty::after{content:" ▾";}
  .jrow input[data-j]{font-size:16px;}   /* 16px未満だとiOSが勝手にズームする */
  /* 下の固定バー */
  #solvebar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:64;gap:10px;align-items:center;
    background:var(--card,#fff);border-top:1px solid var(--bd);padding:9px 14px;
    padding-bottom:calc(9px + env(safe-area-inset-bottom,0px));box-shadow:0 -6px 18px -10px rgba(0,0,0,.4);}
  #solvebar .sb-info{flex:1;min-width:0;display:flex;gap:9px;flex-wrap:wrap;font-size:11.5px;color:var(--tx2);}
  #solvebar .sb-info b{font-size:13px;color:var(--tx2);font-variant-numeric:tabular-nums;}
  #solvebar .sb-ok{color:var(--ok,#16a34a);font-weight:800;}
  #solvebar .sb-ng{color:var(--warn,#f59e0b);font-weight:800;}
  #solvebar .btn{padding:12px 22px;font-size:14.5px;font-weight:800;border-radius:14px;
    background:var(--blue,#0161E8);color:#fff;box-shadow:0 3px 0 var(--blue-deep,#0044A8);}
  /* 採点は下のバーに集約したので、ペーン内のボタンは重複を消して小さくする */
  body.solving #d-grade,body.solving #pq-grade{display:none;}
  body.solving .qpane .btn{padding:10px 14px;font-size:13px;}
  /* 電卓とボタンをバーの上へ逃がす */
  body.solving .calcbtn{bottom:calc(72px + env(safe-area-inset-bottom,0px));}
  body.solving #calc{bottom:calc(134px + env(safe-area-inset-bottom,0px));}
}
/* #calc button のほうが強く(1,0,1 対 1,0,0)、地の色だけ奪われて
   白い字が薄い地に乗っていた。id を2つ重ねて勝たせる */
#calc #calc-send{width:100%;margin-top:8px;padding:11px 0;font-size:14px;font-weight:800;
  border:none;border-radius:8px;background:var(--navy);color:#fff;font-family:inherit;cursor:pointer;}
body.dark #calc #calc-send{background:var(--navy);color:#0e1626;}
.calctgt{outline:2px dashed var(--blue);outline-offset:-2px;}
.sentpop{animation:sentpop .45s;}
@keyframes sentpop{0%{background:#dcfce7}100%{background:transparent}}
/* 勘定科目のボトムシート */
#acct-sheet{position:fixed;inset:0;background:rgba(15,10,40,.5);z-index:2500;display:flex;align-items:flex-end;}
#acct-sheet .as-box{background:var(--card,#fff);width:100%;border-radius:20px 20px 0 0;padding:16px 16px 22px;
  padding-bottom:calc(22px + env(safe-area-inset-bottom,0px));max-height:76vh;overflow-y:auto;}
#acct-sheet .as-h{font-size:12.5px;font-weight:800;color:var(--tx2);margin-bottom:10px;}
#acct-sheet .as-list{display:flex;flex-direction:column;gap:8px;}
#acct-sheet .as-o{border:1.5px solid var(--bd);border-radius:12px;background:var(--card,#fff);
  padding:14px 16px;font-family:inherit;font-size:15px;font-weight:800;text-align:left;color:var(--tx2);cursor:pointer;}
#acct-sheet .as-o.on{border-color:var(--blue);background:var(--lt);}
#acct-sheet .as-c{margin-top:12px;width:100%;border:none;background:none;color:var(--tx2);
  font-family:inherit;font-size:12.5px;padding:8px;cursor:pointer;}

/* ===== v3 editorial redesign ===== */
body{font-family:'Zen Kaku Gothic New',"Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;background:#edeaf5;}
.wrap{max-width:1060px;padding:24px 20px 90px;}
.eyebrow{font-size:12px;letter-spacing:.16em;color:#5f5880;font-weight:700;}
.disp{font-size:clamp(30px,5.4vw,46px);font-weight:700;line-height:1.28;color:var(--navy);}
.disp2{font-size:clamp(22px,3.4vw,31px);font-weight:700;color:var(--navy);}
.sub{color:#55506e;font-size:14.5px;max-width:46ch;line-height:2.1;}
.hero2{background:linear-gradient(160deg,#e6e1f8 0%,#cdc5f0 45%,#a99ce2 100%);border-radius:30px;padding:clamp(28px,5vw,54px);margin-top:16px;position:relative;overflow:hidden;}
.hero2::after{content:"";position:absolute;right:-90px;bottom:-140px;width:380px;height:380px;border-radius:50%;background:radial-gradient(circle at 32% 30%,rgba(255,255,255,.55),rgba(255,255,255,0) 62%);}
.hero-flex{display:flex;flex-wrap:wrap;gap:30px;justify-content:space-between;align-items:flex-end;position:relative;z-index:1;}
.hstat{display:flex;gap:30px;padding-bottom:6px;}
.hstat .n{font-size:32px;font-weight:800;color:var(--navy);line-height:1.1;}
.hstat .t{font-size:11.5px;color:#4d4670;letter-spacing:.1em;margin-top:4px;}
.statstrip{display:flex;flex-wrap:wrap;background:#fff;border-radius:22px;margin-top:14px;padding:18px 6px;box-shadow:0 2px 14px rgba(28,23,51,.05);}
.statstrip>div{flex:1;min-width:108px;text-align:center;padding:6px 8px;border-right:1px solid var(--bd);}
.statstrip>div:last-child{border-right:none;}
.statstrip .n{font-size:24px;font-weight:800;color:var(--navy);}
.statstrip .t{font-size:11px;color:#8a84a3;margin-top:3px;letter-spacing:.08em;}
.sechead{display:flex;flex-wrap:wrap;gap:8px 44px;align-items:baseline;justify-content:space-between;margin:46px 4px 16px;}
.sechead p{color:#6b6488;font-size:13px;max-width:50ch;line-height:1.9;}
.trio{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;}
.tcard{border-radius:26px;padding:28px;cursor:pointer;transition:.18s;min-height:180px;display:flex;flex-direction:column;}
.tcard:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(28,23,51,.14);}
.tcard h3{font-size:19px;font-weight:700;margin-bottom:10px;}
.tcard p{font-size:13px;line-height:1.95;flex:1;}
.tcard .arw{margin-top:16px;font-weight:700;font-size:13.5px;letter-spacing:.04em;}
.tcard.light{background:linear-gradient(170deg,#e9e5f8,#d7d0f1);color:var(--navy);}
.tcard.light p{color:#4d4670;}
.tcard.white{background:#fff;color:var(--navy);box-shadow:0 2px 12px rgba(28,23,51,.05);}
.tcard.white p{color:#6b6488;}
.tcard.dark{background:var(--navy);color:#fff;}
.tcard.dark p{color:#b3add0;}
.rstep{border:none;background:#fff;border-radius:18px;margin-bottom:8px;padding:16px 22px;box-shadow:0 2px 10px rgba(28,23,51,.04);align-items:center;}
.rstep.now{outline:2px solid var(--navy);background:#fff;}
.rstep.done{outline:none;opacity:.75;}
.rnum{font-size:21px;font-weight:800;color:#c9c2ea;min-width:40px;font-variant-numeric:tabular-nums;}
.rstep.now .rnum{color:var(--navy);}
.rtable th,.rtable td{border:none;border-bottom:1px solid var(--bd);padding:10px 14px;}
.rtable th{background:none;font-size:11px;letter-spacing:.12em;color:#8a84a3;font-weight:700;}
.qpane h2{border-left:none;padding-left:0;font-size:20px;font-weight:800;}
.dcard{border:1px solid transparent;border-radius:20px;box-shadow:0 2px 12px rgba(28,23,51,.05);}
#hdr h1{font-weight:900;}
/* footer & terms modal */
#ftr{max-width:1060px;margin:0 auto;padding:28px 20px 40px;color:#8a84a3;font-size:12px;line-height:2;border-top:1px solid var(--bd);}
#ftr a{color:#6b6488;text-decoration:underline;cursor:pointer;}
#ftr .fnote{margin-top:6px;}
#tos-ovl,#wlc-ovl,#acct-ovl{position:fixed;inset:0;background:rgba(28,23,51,.5);z-index:100;display:flex;align-items:center;justify-content:center;padding:20px;}
#tos-box,#wlc-box,#acct-box{background:#fff;border-radius:20px;max-width:720px;max-height:82vh;overflow-y:auto;padding:30px 32px;line-height:2;font-size:13.5px;}
#tos-box h2,#wlc-box h2,#acct-box h2{color:var(--navy);font-size:19px;margin-bottom:12px;}
#tos-box h3,#wlc-box h3{color:var(--navy);font-size:14.5px;margin:18px 0 6px;}
#tos-box p,#tos-box li,#wlc-box p{color:#454059;}
#tos-box ul{padding-left:20px;}
.wstep{display:flex;gap:14px;align-items:flex-start;padding:10px 0;border-bottom:1px dashed var(--bd);}
.wstep .wn{font-size:20px;font-weight:800;color:#c9c2ea;min-width:32px;}
.wstep b{color:var(--navy);}
/* ===== v4 duolingo-style ===== */
.sechead{margin:34px 4px 12px;}
.page .pgc>.sechead:first-child{margin-top:0;}
.pgr{padding-top:2px;}
.sechead p{display:none;}
.btn{border-radius:16px;font-weight:800;box-shadow:0 4px 0 rgba(28,23,51,.35);transition:.08s;}
.btn:active{transform:translateY(3px);box-shadow:0 1px 0 rgba(28,23,51,.35);}
.btn.gray{box-shadow:0 4px 0 #64748b;}
.btn.green{box-shadow:0 4px 0 #0f7a35;}
.btn:disabled{box-shadow:none;transform:none;}
.tcard,.qpane,.dcard{border-radius:20px;border:2px solid var(--bd);box-shadow:0 3px 0 var(--bd);}
.tcard{min-height:0;padding:22px 24px;}
.tcard:hover{transform:translateY(-2px);box-shadow:0 6px 0 var(--bd);}
.tcard.light{border-color:#c3b8ea;box-shadow:0 3px 0 #c3b8ea;}
.tcard.dark{border-color:var(--navy);box-shadow:0 3px 0 #0c0a1a;}
.rrow{border:2px solid var(--bd);box-shadow:0 2px 0 var(--bd);}
.rrow.me{outline:none;border-color:var(--blue);box-shadow:0 2px 0 var(--blue);}
.rtab{border:2px solid var(--bd);box-shadow:0 3px 0 var(--bd);}
.rtab.act{border-color:var(--navy);box-shadow:0 3px 0 #0c0a1a;}
.dogico{box-shadow:0 3px 0 var(--bd);}
.dogico.sel{box-shadow:0 3px 0 var(--blue);}
.topstat{display:flex;gap:12px;flex-wrap:wrap;margin-top:14px;}
.topstat>div{flex:1;min-width:120px;background:#fff;border:2px solid var(--bd);box-shadow:0 3px 0 var(--bd);border-radius:18px;padding:12px 14px;display:flex;align-items:center;gap:10px;}
.topstat .ico{font-size:24px;}
.topstat .n{font-size:22px;font-weight:900;color:var(--navy);line-height:1.1;}
.topstat .t{font-size:10.5px;color:#8a84a3;font-weight:700;letter-spacing:.06em;}
.steps{position:relative;margin:6px 0 0;}
.step{display:flex;gap:16px;align-items:center;background:#fff;border:2px solid var(--bd);box-shadow:0 3px 0 var(--bd);border-radius:20px;padding:16px 20px;margin-bottom:12px;position:relative;}
.step.now{border-color:var(--blue);box-shadow:0 3px 0 var(--blue);}
.step.done{opacity:.72;}
.stepc{width:46px;height:46px;border-radius:50%;background:var(--lt);color:#8a84a3;display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:900;flex-shrink:0;border:3px solid var(--bd);}
.step.now .stepc{background:var(--blue);color:#fff;border-color:#5b4fb5;}
.step.done .stepc{background:var(--ok);color:#fff;border-color:#0f7a35;}
.stepbar{background:var(--lt);border-radius:6px;height:10px;overflow:hidden;margin-top:6px;max-width:340px;}
.stepbar>div{height:100%;background:linear-gradient(90deg,#7c6fd0,#a99ce0);border-radius:6px;}
.gmach{background:linear-gradient(170deg,#fff,#f5f3fc);border:2px solid var(--bd);box-shadow:0 4px 0 var(--bd);border-radius:26px;padding:34px 20px;text-align:center;}
.bcell{background:#fff;border:2px solid var(--bd);box-shadow:0 3px 0 var(--bd);border-radius:18px;padding:14px 8px 10px;text-align:center;}
.bcell.no{opacity:.55;}
.exgrid{display:grid;grid-template-columns:1fr 340px;gap:16px;align-items:start;}
@media(max-width:820px){.exgrid{grid-template-columns:1fr;}}
.herodog{background:rgba(255,255,255,.6);border-radius:22px;padding:16px 22px 10px;text-align:center;cursor:pointer;border:2px solid rgba(255,255,255,.8);}
.herodog:hover{background:rgba(255,255,255,.78);}
/* ===== v5 sidebar layout / blue theme / dark mode ===== */
:root{--navy:#211D18;--blue:#E07211;--blue-deep:#B65600;--blue-tint:#FDEFD9;
  --lt:#F1ECE3;--bd:#E5DDCF;--cream:#ffffff;--lav:#FDEFD9;--bg:#F5F2EC;--card:#ffffff;
  --tx2:#6E675E;--dim:#A39B90;--locked:#EDE8DF;--locked-deep:#DCD5C8;
  --g1:#F88F22;--g2:#FBB931;--g2-deep:#C64F0D;
  --grad:linear-gradient(100deg,var(--g1) 0%,var(--g2) 100%);
  --flame:#C9660D;--flame-tint:#FDEFD9;--accent:#E07211;--accent-deep:#B65600;
  --gold:#FBB931;--gold-deep:#D98A10;--warn:#E07211;
  --gsA:rgba(255,255,255,.78);--gsB:rgba(255,255,255,.42);--ghi:rgba(255,255,255,.88);--road:#E7E0D3;}
body{background:var(--bg);color:var(--navy);}
#hdr{background:var(--cream);}
#nav{position:fixed;left:0;top:57px;bottom:0;width:216px;flex-direction:column;align-items:stretch;gap:5px;padding:16px 12px;border-right:2px solid var(--bd);border-bottom:none;background:var(--card);overflow:visible;}
#nav button{text-align:left;padding:12px 16px;border-radius:14px;font-size:14.5px;letter-spacing:.03em;color:var(--tx2);}
#nav button:hover{background:var(--lt);}
#nav button.act{background:var(--lt);color:var(--blue);border:2px solid var(--blue);padding:10px 14px;}
#nav #btn-eod{margin-top:auto;}
#nav #btn-theme{font-size:13px;color:var(--tx2);}
.navchip{background:rgba(21,42,82,.10);padding:1px 6px;font-size:10.5px;margin-left:5px;vertical-align:1px;}
body.dark .navchip{background:rgba(255,255,255,.14);}
.wrap{margin-left:216px;max-width:none;padding:46px 28px 90px;}
#ftr{margin-left:216px;max-width:none;}
#nav.hidden~.wrap,#nav.hidden~#ftr{margin-left:0;}
.wrap>*:not(.page){max-width:920px;margin-left:auto;margin-right:auto;}
.page{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:22px;align-items:start;max-width:1160px;margin:0 auto;}
.page.noRail{grid-template-columns:minmax(0,1fr);max-width:920px;}
.pgr{position:sticky;top:76px;}
.rcard{background:var(--card);border:2px solid var(--bd);box-shadow:0 3px 0 var(--bd);border-radius:18px;padding:16px 18px;margin-bottom:14px;}
.rcard h3{color:var(--navy);font-size:15px;margin-bottom:6px;}
.rrowi{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px dashed var(--bd);font-size:13.5px;color:var(--tx2);}
.rrowi:last-child{border-bottom:none;}
.rrowi b{color:var(--navy);font-size:15px;}
.hero2{background:linear-gradient(160deg,#dce9fc 0%,#b9d3f8 45%,#86b0f0 100%);}
.hero2::after{background:radial-gradient(circle at 32% 30%,rgba(255,255,255,.6),rgba(255,255,255,0) 62%);}
.tcard.light{background:linear-gradient(170deg,#e4eefb,#caddf8);color:var(--navy);border-color:#a9c6f0;box-shadow:0 3px 0 #a9c6f0;}
.stepbar>div{background:linear-gradient(90deg,#2b6cea,#7fa8e8);}
.step.now{border-color:var(--blue);box-shadow:0 3px 0 var(--blue);}
.step.now .stepc{background:var(--blue);border-color:#1d4fa8;}
#tabs{background:var(--lt);}
.sub{color:#3d517a;}
.eyebrow{color:#3d517a;}
.hero2 .disp{color:#152a52;}
.prog{color:var(--tx2);}
body.dark{--navy:#F5F2EC;--blue:#F88F22;--blue-deep:#C64F0D;--blue-tint:#2E2013;
  --lt:#1C1A18;--bd:#3A342C;--cream:#131211;--bg:#131211;--card:#1C1A18;
  --tx2:#A8A29A;--dim:#6A655D;--locked:#1C1A18;--locked-deep:#0D0C0B;
  --flame:#F88F22;--flame-tint:#2E2013;--accent:#F88F22;--accent-deep:#C64F0D;
  --lav:#2E2013;--gold:#FBB931;--gold-deep:#C64F0D;--warn:#F88F22;
  --gsA:rgba(255,255,255,.09);--gsB:rgba(255,255,255,.03);--ghi:rgba(255,255,255,.16);--road:#25211C;
  color:#F5F2EC;}
body.dark #hdr h1{color:#e8eef9;}
body.dark .qpane,body.dark .step,body.dark .rrow,body.dark .rtab,body.dark .dogico,body.dark .bcell,body.dark .tcard.white,body.dark .dcard,body.dark .chip,body.dark .qzc,body.dark .jitem,body.dark details.kc{background:var(--card);border-color:var(--bd);color:#dfe7f5;}
body.dark .qpane,body.dark .step,body.dark .rrow,body.dark .rtab,body.dark .dogico,body.dark .bcell,body.dark .tcard.white,body.dark .dcard{box-shadow:none;}
body.dark .tcard.white p,body.dark .card p{color:var(--tx2);}
body.dark .gmach{background:var(--card);border-color:var(--bd);box-shadow:0 4px 0 #0a111f;}
body.dark .tcard.light{background:var(--card);color:var(--navy);border-color:var(--bd);box-shadow:none;}
body.dark .tcard.dark{background:var(--lt);border-color:var(--bd);box-shadow:none;}
body.dark .hero2{background:linear-gradient(160deg,#1c2f55 0%,#1c3f74 60%,#1d4fa8 100%);}
body.dark .hero2 .disp{color:#eaf1fd;}
body.dark .sub,body.dark .eyebrow{color:#9fb4d8;}
body.dark .herodog{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.14);}
body.dark .herodog:hover{background:rgba(255,255,255,.14);}
body.dark .stepc{background:var(--lt);border-color:var(--bd);color:var(--tx2);}
body.dark .note{background:var(--lt);color:var(--tx2);}
body.dark .rtable th{background:var(--lt);color:var(--tx2);}
body.dark .rtable th,body.dark .rtable td{border-color:var(--bd);}
body.dark .btn{box-shadow:0 4px 0 #0a111f;}
body.dark .btn.gray{background:#3a4a68;box-shadow:0 4px 0 #0a111f;}
body.dark .exp{background:#2e2a18;border-color:#5c4d1d;color:#e8dfb8;}
body.dark .boxrow input,body.dark .jrow input,body.dark .jrow select,body.dark input,body.dark select{background:var(--card);color:#dfe7f5;border-color:var(--bd);}
body.dark #cele-box,body.dark #tos-box,body.dark #wlc-box,body.dark #acct-box{background:var(--card);color:#dfe7f5;}
body.dark #tos-box p,body.dark #tos-box li,body.dark #wlc-box p,body.dark #acct-box p{color:#b9c6de;}
body.dark #calc{background:var(--card);border-color:var(--bd);}
body.dark #calc button{background:var(--lt);color:#dfe7f5;border-color:var(--bd);}
body.dark #calc input{background:var(--card);color:#dfe7f5;}
body.dark .qtext table th,body.dark .qpane table.tb th{background:var(--lt);}
body.dark .qtext,body.dark .qpane{color:#dfe7f5;}
body.dark .btn{background:var(--blue);color:#fff;}
body.dark .btn.gray{background:#3a4a68;}
body.dark .btn.green{background:var(--ok);}
body.dark .rtab.act,body.dark .tab.act,body.dark .chip.act,body.dark #nav button.act{color:#fff;}
body.dark .rtab.act,body.dark .tab.act,body.dark .chip.act{background:var(--blue);border-color:var(--blue);}
body.dark #nav button.act{background:var(--blue);border-color:var(--blue);}
body.dark #timer{background:var(--blue);}
body.dark #btn-acct{background:var(--lt)!important;color:var(--navy)!important;}
body.dark .hbtn{filter:none;}
@media(max-width:900px){
  #hdr{position:static;}                        /* ヘッダーはスクロールで流す(2段組で高さが読めないため) */
  body.exam #hdr{position:sticky;top:0;}        /* 模試中はタイマーがあるので固定 */
  #nav{position:sticky;top:0;left:auto;right:auto;bottom:auto;width:auto;flex-direction:row;align-items:center;gap:4px;padding:8px 10px;border-right:none;border-bottom:2px solid var(--bd);overflow-x:auto;}
  body.bton #hdr,body.bton #nav{position:static;}  /* 問題を解いている間はヘッダーもメニューも流して、戦闘バーだけ上に残す */
  #nav button{padding:8px 14px;white-space:nowrap;}
  #nav #btn-theme{margin-top:0;}
  .wrap,#ftr{margin-left:0;}
  .page{grid-template-columns:minmax(0,1fr);}
  .pgc{min-width:0;}
  .pgr{position:static;}
}
/* ===== v6 neutral bg / plain hero ===== */
:root{--bg:#F5F2EC;--card:#ffffff;--lt:#F1ECE3;--bd:#E5DDCF;--cream:#ffffff;--lav:#FDEFD9;--tx2:#6E675E;}
body.dark{--bg:#131211;--card:#1C1A18;--lt:#25211C;--bd:#3A342C;--cream:#191612;--tx2:#A8A29A;}
.hero2{background:none;box-shadow:none;border-radius:0;padding:14px 4px 4px;overflow:visible;}
.hero2::after{display:none;}
body.dark .hero2{background:none;}
.hero2 .disp,body.dark .hero2 .disp{color:var(--navy);}
.sub,.eyebrow{color:var(--tx2);}
.tcard.light{background:var(--card);color:var(--navy);border-color:var(--blue);box-shadow:0 3px 0 var(--blue);}
body.dark .tcard.light{background:var(--card);color:var(--navy);border-color:var(--blue);box-shadow:none;}
/* ===== v7 dot font & pixel icons ===== */
body{font-family:'Zen Kaku Gothic New',"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;}
#hdr h1,.disp,.disp2,.gmach,.bcell,#cele-box h2,.rrowi b,.res-big,.rnum2,.rrow .rv{font-family:'DotGothic16','Zen Kaku Gothic New',sans-serif;}
.pixf,.pixf *{font-family:'DotGothic16',sans-serif!important;}
.pixico{image-rendering:pixelated;}
.pixwalk{image-rendering:pixelated;}
.heroflex{display:flex;gap:10px;align-items:center;min-height:0;}
.cta{position:relative;animation:ctaPulse 1.8s ease-in-out infinite;}
/* 学習を始める(オレンジのボタン)はエフェクトもオレンジで揃える */
.btn.gobig.cta{animation:ctaPulseO 1.8s ease-in-out infinite;}
@keyframes ctaPulseO{0%,100%{transform:translateY(0);box-shadow:0 5px 0 #c75b28,0 0 0 0 rgba(255,140,60,.5);}50%{transform:translateY(-3px);box-shadow:0 8px 0 #c75b28,0 0 0 14px rgba(255,140,60,0);}}
/* Snapchat風のでか連続日数 */
.strkbig{display:flex;align-items:baseline;gap:6px;margin:0 0 4px;}
.strkbig .strkfire{font-size:34px;line-height:1;}
.strkbig b{font-size:30px;font-weight:900;color:#f59e0b;font-family:'Zen Kaku Gothic New',sans-serif;}
.strkbig .strku{font-size:14px;font-weight:800;color:#f59e0b;}
.strkbig .strkw{font-size:11.5px;color:var(--ng,#dc2626);font-weight:800;margin-left:6px;animation:blink 1.2s infinite;}
/* 1問目クリアの🔥スプラッシュ */
.strksplash{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;pointer-events:none;background:rgba(28,23,51,.32);animation:fadein .25s;}
.strksplash.out{opacity:0;transition:opacity .5s;}
.ss-in{background:var(--card,#fff);border-radius:24px;padding:26px 44px;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.35);animation:sspop .45s cubic-bezier(.2,1.4,.4,1);}
.ss-in .ss-f{display:block;font-size:56px;line-height:1.1;animation:ssfire .6s ease-in-out 2;}
.ss-in b{font-size:44px;font-weight:900;color:#f59e0b;font-family:'Zen Kaku Gothic New',sans-serif;}
.ss-in .ss-t{font-size:20px;font-weight:900;color:#f59e0b;margin-left:2px;}
.ss-in .ss-s{display:block;font-size:12.5px;color:var(--tx2);margin-top:6px;font-weight:700;}
@keyframes sspop{0%{transform:scale(.4);opacity:0;}100%{transform:scale(1);opacity:1;}}
@keyframes ssfire{0%,100%{transform:scale(1);}50%{transform:scale(1.25) rotate(-6deg);}}
/* ランキング行の報酬チップ */
.rwsm{font-size:10.5px;color:var(--goldd);font-weight:800;white-space:nowrap;margin-left:6px;}
@keyframes ctaPulse{0%,100%{transform:translateY(0);box-shadow:0 4px 0 rgba(28,23,51,.35),0 0 0 0 rgba(43,108,234,.45);}50%{transform:translateY(-3px);box-shadow:0 7px 0 rgba(28,23,51,.35),0 0 0 14px rgba(43,108,234,0);}}
.cta .arrowa{display:inline-block;animation:ctaArrow 1.2s ease-in-out infinite;}
@keyframes ctaArrow{0%,100%{transform:translateX(0);}50%{transform:translateX(5px);}}
.heroflex .disp{font-size:clamp(32px,4.2vw,54px);line-height:1.22;white-space:nowrap;}
.heroflex #homedog canvas{max-width:100%;height:auto;}
@media(max-width:820px){.heroflex{flex-wrap:wrap;}.heroflex>div{flex:1 1 100%!important;}}
.nicon,.micon,.sicon{display:inline-flex;align-items:center;margin-right:9px;vertical-align:-5px;}
.fpop{position:fixed;bottom:88px;right:26px;background:#152a52;color:#fff;border-radius:12px;padding:6px 14px;font-weight:800;font-size:14px;z-index:135;animation:fpopUp 1.1s ease-out forwards;pointer-events:none;}
@keyframes fpopUp{0%{transform:translateY(8px);opacity:0;}15%{opacity:1;}70%{opacity:1;}100%{transform:translateY(-18px);opacity:0;}}
#nav button{position:relative;}
.navbadge{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:#e05656;border-radius:50%;width:9px;height:9px;}
#quest-ovl{position:fixed;inset:0;background:rgba(28,23,51,.55);z-index:120;display:flex;align-items:center;justify-content:center;padding:20px;}
#quest-box{max-width:560px;width:100%;max-height:86vh;overflow-y:auto;}
.qbtn-dot{position:absolute;right:-3px;top:-3px;background:#e05656;border-radius:50%;width:11px;height:11px;border:2px solid #fff;}
.wbadge{display:inline-flex;align-items:center;gap:7px;background:#e05656;color:#fff;font-weight:800;font-size:12.5px;border-radius:999px;padding:6px 15px;box-shadow:0 3px 0 #a83c3c;}
body.onb #nav{display:none!important;}
body.onb .wrap,body.onb #ftr{margin-left:0!important;}
body.onb #btn-invite,body.onb #btn-eod,body.onb .calcbtn{display:none!important;}
#hdr .hbtn{white-space:nowrap;flex-shrink:0;}
#hdr h1{white-space:nowrap;}
@media(max-width:640px){
  html,body{overflow-x:clip;}
  #hdr{padding:10px 12px;gap:8px;flex-wrap:wrap;row-gap:6px;}
  #hdr h1{font-size:14.5px;}
  #hdr>div{gap:6px!important;min-width:0;flex-wrap:wrap;row-gap:6px;justify-content:flex-end;}
  #hdr .hbtn{padding:7px 12px;font-size:12px;}
  #btn-acct{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  #btn-acct .achb,#btn-acct .strk{display:none;}
  #btn-acct .acct-lv{margin-left:4px;}
}
.onbcol{max-width:600px;margin:0 auto;text-align:center;}
.onbh1{font-family:'Zen Kaku Gothic New',sans-serif;font-weight:900;font-size:clamp(30px,7vw,44px);line-height:1.28;color:var(--navy);margin:14px 0 4px;letter-spacing:.01em;}
.mokushi{margin:12px auto 0;max-width:430px;background:var(--card);border-radius:16px;padding:9px 16px 8px;}
.mokushi .mkt{font-size:12.5px;font-weight:800;color:var(--navy);display:flex;align-items:center;justify-content:center;gap:7px;}
.mokushi .mkn{font-size:19px;color:var(--blue);font-weight:900;margin-top:1px;line-height:1.2;}
.mokushi .mks{font-size:11px;color:var(--tx2);margin-top:2px;}
/* 初回ビュー: 訴求セクション */
.lpsec{margin-top:34px;}
.lph{font-size:20px;font-weight:900;color:var(--navy);font-family:'Zen Kaku Gothic New',sans-serif;}
body.dark .lph{color:#e8eef9;}
.lpp{font-size:13px;color:var(--tx2);margin-top:6px;}
.lpimg{width:100%;max-width:560px;border-radius:14px;border:1px solid var(--bd);margin-top:12px;box-shadow:0 10px 30px rgba(21,42,82,.14);}
.lpdogcard{background:var(--card);border-radius:16px;max-width:340px;margin:14px auto 0;padding:18px;}
/* パターン・チュートリアル(スポットライト) */
#tutspot{position:fixed;z-index:150;pointer-events:none;border-radius:12px;box-shadow:0 0 0 9999px rgba(15,10,40,.62);transition:all .35s ease;}
#tutguide{position:fixed;z-index:151;left:12px;right:12px;bottom:12px;margin:0 auto;max-width:720px;background:var(--card);border-radius:18px;padding:18px 24px 16px;box-shadow:0 -6px 40px rgba(0,0,0,.4);max-height:78vh;overflow-y:auto;}
@media(min-width:900px){
  #tutguide{left:auto;right:0;top:0;bottom:0;margin:0;max-width:none;width:420px;border-radius:0;max-height:none;padding:24px 24px 20px;box-shadow:-8px 0 40px rgba(0,0,0,.25);border-left:1px solid var(--bd);}
  body.tuton #main{margin-right:430px;}
  body.tuton #tutspot{z-index:149;}
}
#tutguide .tg-row{margin:12px 0;font-size:14px;line-height:1.9;color:var(--tx);}
#tutguide .tg-tag{display:inline-block;background:var(--navy);color:#fff;border-radius:8px;padding:2px 11px;font-size:12px;font-weight:800;margin-right:9px;vertical-align:1px;white-space:nowrap;}
#tutguide .tg-act{background:#fff8e1;border-radius:11px;padding:11px 14px;}
body.dark #tutguide .tg-act{background:#453d1e;}
#tutguide .tg-say{font-size:14.5px;line-height:2;color:var(--tx);}
#tutguide .tg-say b{color:var(--blue);}
#tutguide .tg-sw{background:var(--lt);border-radius:8px;padding:3px 9px;font-size:12px;margin:3px 4px 3px 0;display:inline-block;font-weight:700;color:var(--navy);}
body.dark #tutguide .tg-sw{color:#dfe7f5;}
#tutguide .tg-swt{border-collapse:collapse;font-size:13px;margin:6px 0 3px;display:inline-table;vertical-align:middle;}
#tutguide .tg-swt th{background:var(--navy);color:#fff;font-weight:700;padding:3px 14px;font-size:12px;border:1px solid var(--navy);}
#tutguide .tg-swt td{border:1px solid var(--bd,#cbd5e1);padding:4px 14px;font-weight:700;color:var(--tx);}
#tutguide .tg-swt td.n{text-align:right;font-variant-numeric:tabular-nums;}
#tutguide .tg-cmp{border-collapse:collapse;font-size:12.5px;margin:8px 0 4px;width:100%;line-height:1.7;}
#tutguide .tg-cmp th{background:var(--lt);font-weight:800;padding:6px 8px;border:1px solid var(--bd,#cbd5e1);color:var(--tx);}
#tutguide .tg-cmp td{border:1px solid var(--bd,#cbd5e1);padding:9px 10px;color:var(--tx);vertical-align:middle;text-align:center;}
#tutguide .tg-cmp td.hl{background:#fff8e1;font-weight:700;}
body.dark #tutguide .tg-cmp td.hl{background:#453d1e;}
#tutguide .tg-swm{border-collapse:collapse;font-size:12.5px;display:inline-table;margin:2px 0;vertical-align:middle;}
#tutguide .tg-swm th{background:var(--navy);color:#fff;padding:2px 14px;font-size:11px;border:1px solid var(--navy);font-weight:700;}
#tutguide .tg-swm td{border:1px solid var(--bd,#cbd5e1);padding:4px 14px;font-weight:700;color:var(--tx);text-align:center;background:var(--card);}
#tutguide .tg-plus{font-weight:900;font-size:15px;color:#b45309;margin:2px 0;}
#tutguide .tg-only{font-size:11px;color:var(--tx2);margin-top:2px;}
#tutguide .tg-invwrap{margin:10px 0;padding:12px 14px;border:1.5px dashed var(--bd,#cbd5e1);border-radius:12px;}
#tutguide .tg-invlabel{font-size:12px;font-weight:800;color:var(--tx2);margin-bottom:7px;}
#tutguide .tg-lay{display:flex;gap:10px;align-items:center;border:1.5px solid var(--bd,#cbd5e1);border-radius:9px;padding:7px 13px;font-size:13.5px;font-weight:800;color:var(--tx);margin:5px 0;background:var(--card);}
#tutguide .tg-lay .a{color:var(--tx2);font-weight:600;font-size:12.5px;}
#tutguide .tg-lay .nt{margin-left:auto;font-size:12px;font-weight:800;color:var(--tx2);text-align:right;}
#tutguide .tg-lay.new{background:#fff8e1;border-color:#f59e0b;}
#tutguide .tg-lay.new .nt{color:#b45309;}
#tutguide .tg-lay.out{background:#fef2f2;border-color:#ef4444;}
#tutguide .tg-lay.out .q{text-decoration:line-through;color:#b91c1c;}
#tutguide .tg-lay.out .nt{color:#dc2626;}
#tutguide .tg-lay.half{background:#fff7ed;border-color:#fb923c;}
#tutguide .tg-lay.half .nt{color:#c2410c;}
body.dark #tutguide .tg-lay.new{background:#453d1e;}
body.dark #tutguide .tg-lay.out{background:#4a1d1d;}
body.dark #tutguide .tg-lay.out .q{color:#fca5a5;}
body.dark #tutguide .tg-lay.half{background:#452e1e;}
#tutguide .tg-loc{display:flex;gap:4px;flex-wrap:wrap;margin:2px 0 12px;}
#tutguide .tg-loc span{font-size:10.5px;font-weight:800;color:var(--tx2);background:var(--lt);border-radius:999px;padding:3px 10px;opacity:.55;}
#tutguide .tg-loc span.cur{background:var(--navy);color:#fff;opacity:1;}
#tutguide .tg-loc span.done{opacity:1;color:#16a34a;}
#tutguide .tg-why{margin:10px 0 4px;border:1.5px dashed var(--bd);border-radius:11px;padding:8px 12px;}
#tutguide .tg-why summary{cursor:pointer;font-size:12.5px;font-weight:800;color:var(--blue);list-style:none;}
#tutguide .tg-why summary::-webkit-details-marker{display:none;}
#tutguide .tg-why div{font-size:13px;line-height:1.9;color:var(--tx);margin-top:6px;}
#tutguide .tg-ex{margin:10px 0;background:#e9f7f1;border-radius:11px;padding:10px 13px;font-size:13px;line-height:1.9;color:var(--tx);}
body.dark #tutguide .tg-ex{background:#173a2e;}
#tutguide .tg-t{border-collapse:collapse;font-size:12.5px;width:100%;margin:8px 0 2px;}
#tutguide .tg-t th{background:var(--lt,#f1f5f9);color:var(--tx2);font-weight:800;padding:3px 8px;border:1px solid var(--bd,#cbd5e1);font-size:11px;}
#tutguide .tg-t td{border:1px solid var(--bd,#cbd5e1);padding:5px 9px;color:var(--tx);font-weight:700;}
#tutguide .tg-t td.n{text-align:right;font-variant-numeric:tabular-nums;}
#tutguide .tg-t td.cur{background:#fff3bf;color:#1c2230;}
body.dark #tutguide .tg-t th{background:#2b2f45;}
body.dark #tutguide .tg-t td.cur{background:var(--flame-tint,#2E2313);color:var(--g1,#FFC800);}
#tutguide .tg-twrap{overflow-x:auto;}
#tutguide .tg-big{font-size:15.5px;color:var(--blue);}
#tutguide .tg-mode{background:var(--blue);color:#fff;border-radius:7px;padding:1px 8px;font-size:10.5px;}
#tutguide .tg-hint{color:#b45309;font-size:12.5px;margin-top:6px;font-weight:700;}
#tutguide .tg-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px;font-size:11.5px;color:var(--tx2);}
.bk-fig{margin:12px 0 4px;}
.bk-fig svg{width:100%;height:auto;display:block;}
.bk-fig .bk-nl{font-size:12px;font-weight:800;fill:currentColor;text-anchor:middle;font-family:inherit;}
.bk-fig .bk-el{font-size:10.5px;font-weight:700;fill:var(--tx2,#8a84a3);text-anchor:middle;font-family:inherit;}
.bk-fig .bk-gl{font-size:10.5px;font-weight:800;fill:var(--tx2,#8a84a3);font-family:inherit;}
.bk-fig .bk-fl{font-size:11px;font-weight:700;fill:var(--tx2,#8a84a3);font-family:inherit;}
.bk-fig .bk-scroll{display:none;font-size:10.5px;color:var(--tx2);margin-top:2px;text-align:center;}
@media(max-width:620px){
  /* 縮めると文字が読めなくなるので、狭い画面では原寸のまま横スクロールさせる */
  .bk-fig{overflow-x:auto;-webkit-overflow-scrolling:touch;}
  .bk-fig svg{width:560px;max-width:none;}
  .bk-fig .bk-scroll{display:block;}
}
.bk-fig .bk-leg{display:flex;gap:12px;flex-wrap:wrap;font-size:10.5px;color:var(--tx2);margin-top:2px;}
.bk-fig .bk-leg i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:4px;vertical-align:-1px;}
.bk-fig .bk-cap{font-size:11.5px;color:var(--tx2);margin-top:6px;line-height:1.7;}
body.dark #tutguide .tg-tag{color:#0e1626;}
.tl-link{cursor:pointer;text-decoration:underline;font-size:12px;color:var(--blue);font-weight:700;}
.plearn{cursor:pointer;font-size:14px;padding:0 6px;opacity:.75;}
.plearn:hover{opacity:1;}
.tutrow-hl{background:#fff3bf!important;}
body.dark .tutrow-hl{background:var(--flame-tint,#2E2313)!important;}
.tuthl{background:#ffe08a;border-radius:4px;padding:0 3px;color:#1c2230;font-weight:800;}
.tuthl2{background:#ffd83d;border-radius:4px;padding:0 3px;color:#1c2230;font-weight:800;box-shadow:0 0 0 2px #f5a923,0 0 14px 3px rgba(255,214,61,.75);animation:hl2p 1.4s ease-in-out infinite;}
/* スポットライトの暗幕(#tutspot の box-shadow)より上に出す。
   下にいると黄色まで一緒に暗くなって「どこを見るのか」が読めなくなる */
body.tuton .tuthl,body.tuton .tuthl2,body.tuton .tutrow-hl{position:relative;z-index:151;}
body.dark .tuthl{background:#ffdf7a;}
body.dark .tuthl2{background:#ffd63b;}
@keyframes hl2p{0%,100%{box-shadow:0 0 0 2px #f5a92399;}50%{box-shadow:0 0 0 4px #f5a92355;}}
.tutshake{animation:tutshake .3s;}
@keyframes tutshake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.minichips{display:flex;gap:10px;justify-content:center;margin-top:12px;flex-wrap:wrap;}
.minichips>span{display:inline-flex;align-items:center;gap:7px;background:var(--lt);border-radius:999px;padding:8px 15px;font-size:12.5px;font-weight:700;color:var(--navy);}
.ctaflat{display:block;width:100%;max-width:430px;margin:16px auto 0;background:#e83a3a;color:#fff;border:none;border-radius:14px;padding:17px;font-size:18px;font-weight:900;font-family:inherit;cursor:pointer;box-shadow:0 4px 14px rgba(232,58,58,.35);animation:ctaBeat 2.6s ease-in-out infinite;}
@keyframes ctaBeat{0%,52%,100%{transform:scale(1)}60%{transform:scale(1.035)}68%{transform:scale(1)}74%{transform:scale(1.022)}80%{transform:scale(1)}}
.ctaflat:active{filter:brightness(.9);}
/* 初回体験フロー */
.ftimer{height:12px;background:rgba(120,130,160,.25);border-radius:999px;overflow:hidden;margin:2px 0 6px;}
#ftbar{height:100%;width:100%;background:linear-gradient(90deg,#39c26d,#7edc9f);border-radius:999px;transition:width 1s linear;}
#ftbar.hurry{background:linear-gradient(90deg,#e05656,#f08a5a);animation:ftpulse .45s infinite alternate;}
@keyframes ftpulse{from{opacity:1}to{opacity:.5}}
.ftehop{animation:ftehop .38s ease;}
@keyframes ftehop{0%{transform:translateY(0)}40%{transform:translateY(-16px)}100%{transform:translateY(0)}}
.fterw{display:flex;gap:12px;justify-content:center;align-items:center;margin:12px 0;}
.fteitem{background:var(--lt);border-radius:14px;padding:12px 18px;font-weight:800;color:var(--navy);display:flex;align-items:center;gap:8px;font-size:15px;}
@keyframes ftein{0%{transform:scale(.3);opacity:0}70%{transform:scale(1.12)}100%{transform:scale(1);opacity:1}}
.fteitem{animation:ftein .5s ease both;}
.fteitem:nth-child(2){animation-delay:.25s;}
/* 進化メーター(餌やり共通) */
.evometer{background:var(--lt);border-radius:8px;height:14px;overflow:hidden;}
.evofill{height:100%;width:0%;background:linear-gradient(90deg,#f59e0b,#e05656);border-radius:8px;transition:width .75s cubic-bezier(.2,1.5,.4,1);}
.evofill.chg{box-shadow:0 0 14px rgba(240,150,60,.95);}
@keyframes gunn{0%{transform:scale(1)}16%{transform:scale(1.05)}30%{transform:scale(1.02)}46%{transform:scale(1.09)}60%{transform:scale(1.04)}80%{transform:scale(1.14)}100%{transform:scale(1)}}
.gunn{animation:gunn .85s ease-out;transform-origin:50% 100%;}
body.dark .mokushi{border-color:var(--blue);}
.chip3{display:flex;align-items:center;gap:10px;background:var(--card);border:2px solid var(--bd);border-radius:12px;padding:9px 14px;font-size:13.5px;font-weight:700;color:var(--navy);box-shadow:0 3px 0 var(--bd);}
.chip3 .cnum{font-size:11px;color:#fff;border-radius:8px;padding:2px 7px;font-weight:800;flex:none;}
.bub{display:inline-block;background:var(--card);border:2.5px solid var(--navy);border-radius:14px;padding:7px 16px;font-size:14px;font-weight:800;color:var(--navy);position:relative;}
.bub:after{content:"";position:absolute;left:50%;bottom:-9px;transform:translateX(-50%);border:9px solid transparent;border-top-color:var(--navy);border-bottom:0;}
.evorow{display:flex;align-items:flex-end;justify-content:center;gap:2px;margin-top:6px;}
.evorow canvas{image-rendering:pixelated;}
.evarw{color:var(--blue);font-weight:900;font-size:15px;padding-bottom:10px;}
.evorow.big{gap:7px;margin:16px 0 4px;}
.evorow.big canvas{max-width:29vw;height:auto!important;}
.evorow.big .evarw{font-size:18px;padding-bottom:16px;}
.evsec{position:relative;display:inline-flex;align-items:flex-end;}
.evsec .q{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%);font-size:24px;font-weight:900;color:#fff;text-shadow:0 2px 6px rgba(0,0,0,.5);}
/* 進化シネマ(ポケモン風) */
.evwhite{filter:brightness(0) invert(1);}
.evpulse{animation:evpulse .42s ease-in-out infinite alternate;transform-origin:50% 100%;}
@keyframes evpulse{from{transform:scale(.86)}to{transform:scale(1.12)}}
.evring{position:absolute;left:50%;top:52%;width:20px;height:20px;border:4px solid #fff;border-radius:50%;transform:translate(-50%,-50%);animation:evring .55s ease-out forwards;pointer-events:none;}
@keyframes evring{from{opacity:.95;width:18px;height:18px;border-width:5px;}to{opacity:0;width:210px;height:210px;border-width:2px;}}
#evflash{position:fixed;inset:0;background:#fff;opacity:0;pointer-events:none;z-index:130;}
@keyframes evflash{0%{opacity:0}18%{opacity:1}100%{opacity:0}}
body.dark .chip3{box-shadow:0 3px 0 #0a111f;}
body.dark .bub{border-color:var(--lav);color:#dfe7f5;}
body.dark .bub:after{border-top-color:var(--lav);}
.qbtn{background:var(--card);color:var(--navy);border:2px solid var(--bd);border-radius:16px;padding:10px 22px;font-size:13.5px;font-weight:800;position:relative;box-shadow:0 4px 0 var(--bd);transition:.08s;cursor:pointer;}
.qbtn:hover{border-color:var(--blue);}
.qbtn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--bd);}
body.dark .qbtn{color:#dfe7f5;box-shadow:0 4px 0 #0a111f;}
.qbtn2{display:flex;align-items:center;gap:12px;width:100%;max-width:380px;text-align:left;background:linear-gradient(135deg,#ffb03a,#ff7847);color:#fff;border:none;border-radius:16px;padding:12px 16px;font-family:inherit;font-weight:800;position:relative;cursor:pointer;box-shadow:0 5px 0 #c75b28,0 8px 18px rgba(255,120,71,.35);transition:.08s;animation:qb2pulse 2.2s ease-in-out infinite;}
.qbtn2:active{transform:translateY(4px);box-shadow:0 1px 0 #c75b28;}
.qbtn2 .q2-ic{flex-shrink:0;background:rgba(255,255,255,.25);border-radius:12px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;}
.qbtn2 .q2-t{font-size:14.5px;letter-spacing:.02em;}
.qbtn2 .q2-sub{display:block;font-size:11.5px;font-weight:700;opacity:.95;margin-top:2px;}
.qbtn2 .q2-go{margin-left:auto;font-size:18px;flex-shrink:0;}
.qbtn2 .qbtn-dot{position:absolute;top:-5px;right:-5px;}
@keyframes qb2pulse{0%,100%{transform:scale(1);}50%{transform:scale(1.025);}}
@media(prefers-reduced-motion:reduce){.qbtn2{animation:none;}}
.qrow{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px dashed var(--bd);}
.qrow:last-child{border-bottom:none;}
.strk{position:relative;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;}
.strk b{position:absolute;left:50%;top:58%;transform:translate(-50%,-50%);color:#fff;font-size:10px;font-weight:900;text-shadow:0 0 2px #b33000,0 0 2px #b33000,0 1px 2px #b33000;pointer-events:none;}
.achb{display:inline-block;background:linear-gradient(135deg,#f7c948,#f59e0b);color:#7a4a00;border-radius:999px;padding:2px 10px;font-size:11px;font-weight:800;white-space:nowrap;cursor:pointer;}
.ftpick{border:2px solid var(--bd);border-radius:14px;padding:12px 14px;cursor:pointer;background:var(--card);transition:.12s;box-shadow:0 3px 0 var(--bd);min-width:104px;}
.ftpick:hover{border-color:var(--blue);transform:translateY(-2px);}
.ftpick:active{transform:translateY(1px);}
.hchips{display:flex;gap:8px;flex-wrap:wrap;margin:2px 0 10px;}
/* 今日のミッション(アイコンだけ) */
.qrow{margin-top:14px;}
.qrow-btn{position:relative;display:inline-flex;flex-direction:column;gap:5px;align-items:flex-start;background:var(--card);border:1px solid var(--bd);
  border-radius:14px;padding:8px 12px;cursor:pointer;font-family:inherit;transition:.12s;}
/* 受け取れる報酬があるときだけオレンジで主張する */
.qrow-btn.ready{background:var(--golds);border-color:var(--gold);box-shadow:0 3px 0 var(--goldd);}
/* きょうのやること(ホーム) */
.tdcard{margin-top:14px;background:#fff;border:2px solid var(--bd);border-radius:16px;padding:10px 12px;max-width:430px;box-shadow:0 3px 0 var(--bd);}
.tdhead{display:flex;align-items:center;gap:8px;cursor:pointer;padding:2px 2px 8px;flex-wrap:wrap;}
.tdhead b{font-size:13.5px;color:var(--navy);}
.tdpp{margin-left:auto;font-size:12px;font-weight:800;color:var(--goldd);}
.tdbar{flex:0 0 100%;height:5px;border-radius:99px;background:var(--lt);overflow:hidden;}
.tdbar>i{display:block;height:100%;background:linear-gradient(90deg,#f59e0b,#fbbf24);}
.tdrow{display:flex;align-items:center;gap:9px;padding:8px 6px;border-top:1.5px dashed var(--bd);cursor:pointer;font-size:13px;}
.tdrow b{color:var(--navy);font-size:12.5px;flex:1;text-align:left;}
.tdrow:hover{background:var(--lt);border-radius:10px;}
.tdrow .tdend{font-size:11.5px;font-weight:800;color:var(--goldd);white-space:nowrap;}
.tdrow.gold{background:var(--golds);border-radius:10px;border-top:none;margin-top:2px;}
.tdic{flex-shrink:0;display:flex;}
.tdmore{border-top:1.5px dashed var(--bd);padding:7px 6px 2px;font-size:11.5px;color:var(--tx2);cursor:pointer;text-align:right;}
/* 推定得点ゲージ・ロードマップ */
.ppg-bar{position:relative;height:12px;border-radius:99px;background:var(--lt);overflow:hidden;}
.ppg.big .ppg-bar{height:18px;}
.ppg-bar>i{display:block;height:100%;background:linear-gradient(90deg,#5b8def,#2563eb);border-radius:99px;transition:width .8s cubic-bezier(.2,.9,.3,1);}
.ppg-line{position:absolute;top:0;bottom:0;left:70%;width:2px;background:var(--gold);}
.ppg-lab{display:flex;justify-content:space-between;font-size:11.5px;color:var(--tx2);margin-top:5px;}
.ppg-lab b{font-size:15px;color:var(--blue);}
.ppg.big .ppg-lab b{font-size:22px;}
.rdrow{display:flex;align-items:center;gap:11px;padding:11px 8px;border-top:1.5px dashed var(--bd);cursor:pointer;text-align:left;}
.rdrow:first-child{border-top:none;}
.rdrow:hover{background:var(--lt);border-radius:12px;}
.rdpt{font-size:13px;font-weight:900;color:var(--goldd);white-space:nowrap;}
.rdpt i{font-style:normal;font-size:11px;color:var(--tx2);font-weight:700;}
.rdtoday{display:flex;align-items:center;gap:8px;margin-top:14px;font-size:12.5px;color:var(--tx2);flex-wrap:wrap;max-width:430px;}
.rdtoday b{font-size:16px;color:var(--goldd);}
.rdtbar{flex:0 0 100%;height:6px;border-radius:99px;background:var(--lt);overflow:hidden;}
.rdtbar>i{display:block;height:100%;background:linear-gradient(90deg,#f59e0b,#fbbf24);}
/* 合格ロード(バトルパス風トラック) */
.roadwrap{overflow:hidden;}
.roadbadge{display:inline-block;background:linear-gradient(135deg,#ffb03a,#ff7847);color:#fff;border-radius:999px;padding:2px 12px;font-size:11.5px;font-weight:800;margin-left:8px;vertical-align:2px;animation:qb2pulse 2.2s ease-in-out infinite;}
.roadtrack{display:flex;align-items:stretch;gap:0;overflow-x:auto;padding:8px 4px 14px;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;}
.rlink{flex:0 0 18px;height:5px;background:var(--bd);border-radius:99px;align-self:center;margin-top:14px;}
.rdrow.lk{opacity:.55;cursor:default;}
.rdrow.lk:hover{background:none;}
.rnode{position:relative;flex:0 0 118px;border:2px solid var(--bd);border-radius:16px;background:#fff;padding:26px 8px 10px;text-align:center;box-shadow:0 3px 0 var(--bd);}
.rnode .rn-pt{font-weight:900;font-size:15px;color:var(--navy);}
.rnode .rn-pt span{font-size:10px;color:var(--tx2);margin-left:1px;}
.rnode .rn-ic{font-size:26px;line-height:1.3;margin:2px 0;}
.rnode .rn-rw{font-size:11px;font-weight:800;color:var(--navy);min-height:15px;}
.rnode .rn-st{font-size:10px;color:var(--tx2);margin-top:4px;line-height:1.35;}
.rnode.lock{opacity:.62;background:var(--lt);}
.rnode.done{border-color:#bfe6cf;background:#f2fbf5;box-shadow:0 3px 0 #bfe6cf;}
.rnode.done .rn-st{color:#0e7a5f;font-weight:700;}
.rnode.ready{cursor:pointer;border-color:var(--gold);background:linear-gradient(180deg,#fffdf4,#fff3d8);box-shadow:0 4px 0 var(--goldd),0 6px 18px rgba(245,165,36,.35);animation:qb2pulse 2s ease-in-out infinite;}
.rnode.ready .rn-st{color:var(--goldd);font-weight:900;}
.rnode.ready:active{transform:translateY(3px);box-shadow:0 1px 0 var(--goldd);}
.rnode .rn-gate{position:absolute;top:-1px;left:50%;transform:translateX(-50%);background:var(--navy);color:#fff;font-size:9.5px;font-weight:800;border-radius:0 0 8px 8px;padding:2px 10px;white-space:nowrap;}
.rnode.gate{border-style:dashed;}
.rnode.lock{cursor:pointer;}
.rnode.sel{opacity:1;border-color:var(--blue);box-shadow:0 3px 0 var(--blue);background:#fff;}
.rnode.sel .rn-st{color:var(--blue);font-weight:800;}
.rn-tgt{position:absolute;top:-9px;right:-6px;background:var(--blue);color:#fff;font-size:9.5px;font-weight:900;border-radius:999px;padding:2px 8px;box-shadow:0 2px 6px rgba(37,99,235,.4);white-space:nowrap;}
.roadmore{margin-top:6px;}
.roadmore summary{cursor:pointer;color:var(--blue);font-size:12.5px;font-weight:700;padding:8px 4px;list-style:none;}
.roadmore summary::-webkit-details-marker{display:none;}
.roadmore summary::before{content:"▸ ";}
.roadmore[open] summary::before{content:"▾ ";}
/* 大問べつ得点プランのカード */
.gcard{border:2px solid var(--bd);border-radius:16px;background:var(--card,#fff);margin-top:10px;overflow:hidden;box-shadow:0 3px 0 var(--bd);}
.gcard summary{list-style:none;cursor:pointer;padding:13px 16px;}
.gcard summary::-webkit-details-marker{display:none;}
.gcard.ok{border-color:#8fd6ae;box-shadow:0 3px 0 #8fd6ae;background:linear-gradient(180deg,#f4fcf7,var(--card,#fff));}
.gcard.warn{border-color:var(--gold);box-shadow:0 3px 0 var(--gold);}
.gc-h{display:flex;justify-content:space-between;align-items:center;gap:8px;}
.gc-h b{color:var(--navy);font-size:14.5px;}
.gc-st{font-size:11.5px;font-weight:800;color:var(--goldd);white-space:nowrap;}
.gc-st.ok{color:#0e9f6e;}
.gc-gauge{position:relative;height:10px;border-radius:99px;background:var(--lt);margin-top:9px;}
.gc-gauge>i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#5b8def,#2563eb);transition:width .6s;}
.gcard.ok .gc-gauge>i{background:linear-gradient(90deg,#34d399,#0e9f6e);}
.gc-tgt{position:absolute;top:-3px;bottom:-3px;width:2.5px;background:var(--gold);border-radius:2px;}
.gc-nums{display:flex;justify-content:space-between;gap:8px;font-size:11.5px;color:var(--tx2);margin-top:6px;}
.gc-nums b{color:var(--navy);}
.gc-body{border-top:1.5px dashed var(--bd);padding:10px 16px 14px;}
.gq-plan{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--navy);padding:2px 0 8px;}
.gq-plan button{border:1.5px solid var(--bd);background:var(--lt);border-radius:8px;padding:3px 11px;font-weight:800;cursor:pointer;color:var(--navy);font-size:12.5px;}
.gqrow{display:flex;gap:10px;align-items:center;padding:9px 2px;border-top:1px dashed var(--bd);cursor:pointer;}
.gqrow .gq-ic{width:22px;text-align:center;font-weight:900;color:var(--blue);flex-shrink:0;}
.gqrow.done .gq-ic{color:#0e9f6e;}
.gqrow.done b{text-decoration:line-through;color:var(--tx2);font-weight:600;}
.gqrow.lk{opacity:.55;cursor:default;}
body.dark .gcard.ok{background:linear-gradient(180deg,#12291c,var(--card));border-color:#1f5c3c;box-shadow:0 3px 0 #1f5c3c;}
/* 合格プラン(ホーム): 横長カード・期間切替・タスクチップ */
.tdcard.wide{max-width:none;padding:12px 16px;margin-top:16px;}
.pch{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:0 2px 8px;}
.pch>b{color:var(--navy);font-size:14.5px;}
.pdtabs{margin-left:auto;display:flex;gap:3px;background:var(--lt);border-radius:999px;padding:3px;}
.pdtabs button{border:none;background:none;border-radius:999px;padding:4px 13px;font-size:11.5px;font-weight:700;color:var(--tx2);cursor:pointer;white-space:nowrap;}
.pdtabs button.act{background:var(--card,#fff);color:var(--navy);box-shadow:0 1px 3px rgba(0,0,0,.14);}
.pbar-row.big{padding:2px 2px 10px;}
.pbar-row.big .pbar{height:9px;}
/* きょうの学習記録 */
.msn .pch{flex-wrap:wrap;gap:8px;}
.msn-ok{font-size:12px;font-weight:800;color:#b45309;background:#fef3c7;border-radius:999px;padding:3px 10px;}
.msn-meter{margin:10px 0 4px;display:flex;flex-direction:column;gap:5px;}
.msn-mrow{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--tx2);}
.msn-mrow.af .msn-mn{color:var(--navy);font-weight:700;}
.msn-ml{width:44px;text-align:right;flex:none;}
.msn-mn{min-width:150px;}
.msn-bar{position:relative;flex:1;height:10px;background:var(--bd);border-radius:999px;overflow:hidden;}
.msn-bar i{position:absolute;top:0;bottom:0;background:var(--blue);border-radius:999px;opacity:.85;}
.msn-mrow.af .msn-bar i{background:#0e9f6e;}
.msn-bar u{position:absolute;top:-2px;bottom:-2px;width:2px;background:#f59e0b;}
.msn-up{color:#0e9f6e;font-weight:800;}
.msn-sub{font-size:10.5px;color:var(--tx2);font-weight:600;}
.msn-mn b{font-size:14px;color:var(--navy);}
.msn-bar em{position:absolute;top:-1px;width:8px;height:12px;margin-left:-4px;background:var(--navy);border-radius:3px;}
.msn-bg{display:inline-block;font-size:10px;font-weight:800;border-radius:6px;padding:1.5px 6px;vertical-align:1px;margin-right:2px;}
.msn-bg.new{background:#dbeafe;color:#1d4ed8;}
.msn-bg.rev{background:#fef3c7;color:#b45309;}
.msn-bg.fin{background:#ede9fe;color:#6d28d9;}
.msn-bg.mock{background:#dbeafe;color:#1d4ed8;}
.msn-bg.mid{background:#fee2e2;color:#b91c1c;}
.msn-sub2{margin-left:7px;font-size:10.5px;color:var(--tx2);font-weight:600;}
.msn-sec{display:inline-block;font-size:10px;font-weight:800;color:var(--tx2);border:1px solid var(--bd);border-radius:6px;padding:1.5px 6px;margin-right:4px;vertical-align:1px;}
.msn-bg.left{background:transparent;color:var(--tx2);font-weight:700;border:1px dashed var(--bd);}
.msn-ev.keep{color:#6d28d9;background:#ede9fe;}
.msn-claims{margin-top:10px;font-size:12.5px;color:var(--navy);background:#fffbeb;border:1.5px solid #fde68a;border-radius:10px;padding:7px 11px;}
.msn-claims a{color:#b45309;font-weight:800;cursor:pointer;text-decoration:underline;margin-left:6px;}
.msn-say{display:flex;gap:8px;align-items:flex-start;background:var(--bg,#f6f4fd);border-radius:12px;padding:9px 12px;font-size:13px;color:var(--navy);margin:8px 0 4px;line-height:1.6;}
.msn-dog{font-size:18px;flex:none;}
.msn-div{font-size:10.5px;color:var(--tx2);letter-spacing:.08em;margin:8px 0 2px;}
.msn-div.bonus{color:#b45309;}
.msn-row{display:flex;align-items:center;gap:9px;padding:9px 10px;border:2px solid var(--bd);border-radius:12px;margin-top:6px;cursor:pointer;background:var(--card,#fff);}
.msn-row:hover{border-color:var(--blue);}
.msn-row.done{opacity:.55;cursor:default;background:transparent;}
.msn-row.done .msn-lb{text-decoration:line-through;}
.msn-ck{font-size:15px;color:var(--blue);flex:none;width:18px;text-align:center;}
.msn-row.done .msn-ck{color:#0e9f6e;}
.msn-lb{font-size:13.5px;font-weight:700;color:var(--navy);min-width:0;}
.msn-ev{margin-left:auto;flex:none;font-size:12px;font-weight:800;color:#0e9f6e;background:#dcfce7;border-radius:999px;padding:2px 9px;}
.msn-ev.mock{color:#1d4ed8;background:#dbeafe;}
#pomochip{position:fixed;top:58px;right:12px;z-index:2500;width:62px;height:62px;border-radius:50%;background:var(--navy,#1e1b4b);color:#fff;box-shadow:0 6px 24px rgba(0,0,0,.3);cursor:pointer;overflow:hidden;transition:width .38s cubic-bezier(.34,1.56,.64,1),height .3s ease,border-radius .32s ease;}
#pomochip::before{content:"";position:absolute;inset:0;border-radius:50%;padding:3.5px;background:conic-gradient(#f43f5e var(--pm-p,100%),rgba(255,255,255,.16) 0);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;}
#pomochip .pm-core{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.15;}
#pomochip .pm-emo{font-size:14px;}
#pomochip .pm-time{font-size:12.5px;font-weight:800;font-variant-numeric:tabular-nums;}
#pomochip .pm-panel{display:none;}
#pomochip.open{width:272px;height:auto;border-radius:16px;cursor:default;}
#pomochip.open::before{display:none;}
#pomochip.open .pm-core{display:none;}
#pomochip.open .pm-panel{display:block;padding:12px 14px 10px;}
#pomochip .pm-ph{display:flex;align-items:center;justify-content:space-between;font-size:13.5px;margin-bottom:6px;}
#pomochip .pm-close{cursor:pointer;padding:0 6px;font-weight:800;opacity:.75;}
#pomochip .pm-row{padding:6px 2px;font-size:13px;border-bottom:1px dashed rgba(255,255,255,.18);cursor:pointer;}
#pomochip .pm-row.done{opacity:.5;text-decoration:line-through;cursor:default;}
#pomochip .pm-foot{display:flex;align-items:center;justify-content:space-between;margin-top:8px;font-size:12.5px;}
#pomochip .pm-time2{font-variant-numeric:tabular-nums;font-size:14px;}
#pomochip .pm-stop{cursor:pointer;color:#fda4af;text-decoration:underline;font-size:12px;}
#pomobreak{position:fixed;inset:0;z-index:2700;background:rgba(15,10,40,.94);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;gap:10px;}
#pomobreak .pb-t{font-size:64px;font-weight:800;font-variant-numeric:tabular-nums;}
#pomobreak .pb-e{font-size:52px;}
#pomobreak a{color:#c7c3e6;font-size:13px;text-decoration:underline;cursor:pointer;margin-top:14px;}
#pomochip b{font-size:16px;font-variant-numeric:tabular-nums;}
#pomochip .pm-ic{font-size:16px;}
#pomochip .pm-t{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;opacity:.85;}
#pomochip .pm-x{cursor:pointer;opacity:.7;margin-left:2px;}
.msn-ext{margin-top:8px;}
.msn-ext summary{cursor:pointer;font-size:12.5px;font-weight:800;color:var(--blue);padding:6px 2px;list-style:none;}
.msn-ext summary::-webkit-details-marker{display:none;}
.msn-calc{display:inline-block;margin-top:3px;font-size:11px;color:var(--tx2);}
.msn-more{margin-top:10px;font-size:13px;}
.msn-more a{color:var(--blue);font-weight:700;cursor:pointer;text-decoration:underline;}
.ptasks{display:flex;flex-wrap:wrap;gap:8px;padding:2px;}
.ptask{display:inline-flex;align-items:center;gap:7px;border:2px solid var(--bd);background:var(--card,#fff);box-shadow:0 2px 0 var(--bd);border-radius:12px;padding:8px 13px;font-size:12.5px;color:var(--navy);cursor:pointer;font-weight:600;font-family:inherit;}
.ptask b{font-weight:800;}
.ptask span{color:var(--goldd);font-size:11px;font-weight:800;}
.ptask:active{transform:translateY(2px);box-shadow:0 0 0 var(--bd);}
.ptask.gold{border-color:var(--gold);box-shadow:0 2px 0 var(--gold);background:var(--golds,#fff8e6);}
.ptask.done{border-style:dashed;box-shadow:none;color:var(--tx2);cursor:default;}
.pfoot{display:flex;justify-content:space-between;padding:9px 2px 0;font-size:11.5px;color:var(--tx2);}
.pfoot a{cursor:pointer;text-decoration:underline;}
/* スタンプ帳 */
.stampgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;}
.stampc.empty{border-style:dashed;background:transparent;box-shadow:none;opacity:.5;justify-content:center;}
.stampc.empty .stampi{opacity:.35;font-size:20px;color:var(--tx2);}
/* 庭(犬を置くだけ) */
#yard{position:relative;min-height:112px;border-radius:14px;background:linear-gradient(180deg,#cfe9ff 0%,#e2f4d2 45%,#b7dd9a 100%);border:2px solid var(--bd);display:flex;align-items:flex-end;justify-content:space-evenly;gap:6px;padding:10px 8px 6px;overflow:hidden;flex-wrap:wrap;}
.yarddog{display:flex;flex-direction:column;align-items:center;cursor:pointer;line-height:0;gap:2px;}
.ydnm{font-size:9.5px;line-height:1.2;color:#3c5a2e;font-weight:700;max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
body.dark #yard{background:linear-gradient(180deg,#16233c 0%,#1e3627 45%,#254528 100%);border-color:var(--bd);}
body.dark .ydnm{color:#a8caa0;}
.stampc{background:var(--card,#fff);border:2px dashed var(--bd);border-radius:13px;padding:8px 3px 6px;text-align:center;transform:rotate(var(--rot,0deg));display:flex;flex-direction:column;gap:2px;align-items:center;height:104px;overflow:hidden;justify-content:flex-start;}
.stampc .stampi{font-size:29px;line-height:1.2;display:flex;align-items:center;justify-content:center;min-height:36px;}
.stampc b{font-size:10px;color:var(--navy);line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.stampc .prog{font-size:9.5px;}
.stampc.ach{border-style:solid;border-color:var(--gold);background:linear-gradient(180deg,#fffdf4,var(--card,#fff));}
.stampc.dog{border-style:solid;border-color:#c9bef0;background:linear-gradient(180deg,#f6f3ff,var(--card,#fff));}
body.dark .stampc.ach{background:linear-gradient(180deg,#3a3115,var(--card));}
body.dark .stampc.dog{background:linear-gradient(180deg,#2a2542,var(--card));}
.stampc.sec{border-style:solid;border-color:#a855f7;background:linear-gradient(180deg,#faf5ff,var(--card,#fff));}
body.dark .stampc.sec{background:linear-gradient(180deg,#2d1f42,var(--card));}
#ghostbar{position:sticky;top:0;z-index:49;background:rgba(28,23,51,.88);color:#e8e4f5;font-size:12.5px;padding:6px 16px;text-align:center;backdrop-filter:blur(4px);}
#ghostbar b{color:#cfc4f5;}
.stampc.zomb{border-style:solid;border-color:#4b4560;background:linear-gradient(180deg,#2c2838,#3a3450);}
.stampc.zomb b,.stampc.zomb .prog{color:#cfc9e8;}
.stampgrid{border-radius:14px;padding:10px;}
.stampgrid.book-w{background:repeating-linear-gradient(0deg,#fbfbfb,#fbfbfb 26px,#f1f1f3 27px);border:2px solid #e2e2e6;}
.stampgrid.book-c{background:repeating-linear-gradient(0deg,#eef7fd,#eef7fd 26px,#dcedf9 27px);border:2px solid #b7dcf2;}
.stampgrid.book-b{background:repeating-linear-gradient(0deg,#e8eefc,#e8eefc 26px,#d4defa 27px);border:2px solid #8fa8e8;}
.stampgrid.book-g{background:repeating-linear-gradient(0deg,#fdf6e0,#fdf6e0 26px,#f7e9bd 27px);border:2px solid #e3c04c;box-shadow:0 0 14px rgba(227,192,76,.35) inset;}
body.dark .stampgrid.book-w{background:repeating-linear-gradient(0deg,#20242e,#20242e 26px,#272c38 27px);border-color:#343a48;}
body.dark .stampgrid.book-c{background:repeating-linear-gradient(0deg,#17293a,#17293a 26px,#1d3349 27px);border-color:#2c5578;}
body.dark .stampgrid.book-b{background:repeating-linear-gradient(0deg,#1a2240,#1a2240 26px,#212b52 27px);border-color:#3a4a88;}
body.dark .stampgrid.book-g{background:repeating-linear-gradient(0deg,#332b10,#332b10 26px,#3e3414 27px);border-color:#8a712c;}
/* 合格プラン(ホーム)のペースバーと学習ログ */
.pbar-row{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--tx2);padding:2px 6px;}
.pbl{width:40px;font-weight:700;flex-shrink:0;}
.pbar{flex:1;height:7px;border-radius:99px;background:var(--lt);overflow:hidden;}
.pbar>i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#5b8def,#2563eb);transition:width .5s;}
.pbar>i.full{background:linear-gradient(90deg,#34d399,#0e9f6e);}
.pbn{min-width:56px;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;}
#plog-ovl{position:fixed;inset:0;background:rgba(28,23,51,.55);z-index:120;display:flex;align-items:center;justify-content:center;padding:20px;}
#plog-box{background:var(--card,#fff);border-radius:18px;max-width:460px;width:100%;max-height:80vh;overflow-y:auto;padding:18px 18px 14px;}
.plog-day{border-top:1.5px dashed var(--bd);padding:10px 2px;}
.plog-day:first-of-type{border-top:none;}
.plog-day>b{color:var(--navy);font-size:13.5px;}
.plog-r{display:flex;gap:7px;align-items:center;font-size:12.5px;color:var(--navy);padding:3px 0;}
.plog-b{color:var(--blue);font-weight:800;font-style:normal;font-size:11.5px;white-space:nowrap;}
/* 初回アンケート(フルスクリーン) */
#wiz{position:fixed;inset:0;z-index:8500;background:var(--bg,#f6f7f8);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 20px;text-align:center;overflow-y:auto;}
.pladv{border:1.5px solid var(--blue);border-radius:12px;padding:9px 12px;margin-top:6px;font-size:13.5px;color:var(--navy);background:var(--card,#fff);}
.msn-counsel{display:flex;align-items:center;gap:10px;background:linear-gradient(135deg,#eef4ff,#e6fbf3);border:1.5px solid var(--blue);border-radius:14px;padding:11px 14px;margin:0 0 10px;cursor:pointer;font-size:13.5px;line-height:1.6;color:var(--navy);}
.msn-counsel:active{transform:translateY(1px);}
.msn-counsel .arw{font-weight:900;color:var(--blue);white-space:nowrap;}
body.dark .msn-counsel{background:linear-gradient(135deg,#1e2a44,#16302a);}
.wizdots{display:flex;gap:7px;justify-content:center;margin-bottom:20px;}
.wizdots i{width:8px;height:8px;border-radius:50%;background:var(--bd);}
.wizdots i.on{background:var(--blue);}
.wizq{font-size:clamp(21px,5.5vw,27px);font-weight:900;color:var(--navy);line-height:1.45;font-family:'Zen Kaku Gothic New',sans-serif;}
.wizsub{font-size:13px;color:var(--tx2);margin-top:8px;}
.wizopts{display:flex;flex-direction:column;gap:11px;margin-top:22px;width:100%;max-width:340px;}
.wizopt{background:var(--card,#fff);border:2px solid var(--bd);box-shadow:0 3px 0 var(--bd);border-radius:16px;padding:15px 18px;font-size:15.5px;font-weight:700;color:var(--navy);cursor:pointer;display:flex;align-items:center;gap:10px;transition:.1s;text-align:left;}
.wizopt:active{transform:translateY(3px);box-shadow:0 0 0 var(--bd);}
.wizskip{margin-top:20px;font-size:12px;color:#8a84a3;cursor:pointer;text-decoration:underline;}
.rnode.gate.done,.rnode.gate.ready{border-style:solid;}
.rrowi.mineR{background:var(--lt);border-radius:10px;padding:7px 10px;border-bottom:none;}
.rrowi.mineR b{color:var(--blue);}
#pushv{position:fixed;inset:0;background:rgba(28,26,58,.45);display:flex;align-items:center;justify-content:center;z-index:220;padding:20px;}
#pushv .box{background:var(--card,#fff);border-radius:22px;padding:26px 24px;box-shadow:0 20px 50px rgba(0,0,0,.3);}
.hchip.risk{border-color:#e05656;animation:riskPulse 1.6s ease-in-out infinite;}
.hchip .riskd{display:inline-block;width:7px;height:7px;border-radius:50%;background:#e05656;margin-left:4px;vertical-align:1px;}
@keyframes riskPulse{0%,100%{box-shadow:0 0 0 0 rgba(224,86,86,.35);}50%{box-shadow:0 0 0 5px rgba(224,86,86,0);}}
.qrow-btn.ready .qrow-h b{color:var(--goldd);}
.qrow-btn.ready .qrow-h .prog{color:var(--goldd);font-weight:800;}
.qrow-h{display:flex;align-items:baseline;gap:7px;}
.qrow-h b{font-size:12.5px;color:var(--navy);}
.qrow-h .prog{font-size:11px;}
.qrow-cells{display:flex;gap:9px;align-items:center;}
/* 主役のボタン。クエストよりはっきり大きく。配色は旧ミッションボタンのオレンジグラデ */
.btn.gobig{margin-top:16px;font-size:21px;padding:20px 52px;border-radius:20px;letter-spacing:.04em;
  background:linear-gradient(135deg,#ffb03a,#ff7847);color:#fff;
  box-shadow:0 5px 0 #c75b28,0 8px 18px rgba(255,120,71,.35);}
.btn.gobig:active{transform:translateY(4px);box-shadow:0 1px 0 #c75b28;}
@media(max-width:640px){
  .btn.gobig{font-size:18px;padding:16px 34px;width:100%;}
  .qrow-btn{width:100%;}
}
.qrow-btn:active{transform:translateY(3px);box-shadow:0 0 0 var(--bd);}
.qcell{display:flex;flex-direction:column;align-items:center;gap:4px;width:30px;opacity:.5;}
.qcell.done,.qcell.ready{opacity:1;}
.qcell .qbar{display:block;width:22px;height:4px;background:var(--bd);border-radius:999px;overflow:hidden;}
.qcell .qbar>b{display:block;height:100%;background:var(--blue);border-radius:999px;}
.qcell .qtick{font-style:normal;font-size:11px;font-weight:900;color:#16a34a;line-height:4px;}
.qcell .qdot{display:block;width:6px;height:6px;border-radius:50%;background:var(--gold);animation:qpulse 1.1s infinite;}
@keyframes qpulse{0%,100%{transform:scale(1);}50%{transform:scale(1.5);}}
.qrow-dot{position:absolute;top:-5px;right:-5px;width:12px;height:12px;border-radius:50%;background:#ef4444;border:2px solid #fff;}
/* 学習を始める シート */
#studyv,#staminfo{position:fixed;inset:0;z-index:9000;background:rgba(15,18,28,.55);display:flex;align-items:center;justify-content:center;padding:16px;animation:fadein .2s;}
#studyv .box,#staminfo .box{background:var(--card);border-radius:22px;padding:20px;max-width:440px;width:100%;max-height:88vh;overflow:auto;}
.stamhead{display:flex;align-items:center;gap:8px;background:var(--lt);border-radius:14px;padding:10px 14px;margin-bottom:14px;cursor:pointer;}
.stamhead b{font-size:17px;color:var(--navy);}
.stamhead .qmark{margin-left:auto;width:20px;height:20px;border-radius:50%;background:var(--bd);color:var(--tx2);font-size:12px;font-weight:800;display:grid;place-items:center;}
.stlist{display:flex;flex-direction:column;gap:9px;}
.strow{display:flex;align-items:center;gap:12px;background:#fff;border:2px solid var(--bd);box-shadow:0 3px 0 var(--bd);border-radius:16px;padding:12px 14px;cursor:pointer;transition:.1s;}
.strow:active{transform:translateY(3px);box-shadow:0 0 0 var(--bd);}
.strow.go{background:var(--golds);border-color:var(--gold);box-shadow:0 3px 0 var(--gold);}
.strow.lk{opacity:.5;cursor:default;box-shadow:none;}
.strow .stic{width:34px;display:grid;place-items:center;}
.strow .stmid{flex:1;min-width:0;display:flex;flex-direction:column;}
.strow .stmid b{font-size:16px;color:var(--navy);}
.strow .stmid .prog{font-size:11.5px;}
.strow .stend{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:2px;}
.strow .stend .prog{font-size:11.5px;}
.stnote{margin-top:12px;font-size:12px;text-align:center;}
.stnote a{color:var(--blue);text-decoration:underline;cursor:pointer;}
/* マイページ */
#mypv{position:fixed;inset:0;z-index:9000;background:rgba(15,18,28,.55);display:flex;align-items:center;justify-content:center;padding:16px;animation:fadein .2s;}
#mypv .box{background:var(--card);border-radius:22px;padding:20px;max-width:440px;width:100%;max-height:88vh;overflow:auto;}
.mypfhead{display:flex;gap:14px;align-items:center;}
.lvline{display:flex;align-items:center;gap:7px;margin-top:4px;}
.lvtag{font-size:12px;font-weight:900;color:#92400e;background:#fef3c7;border-radius:999px;padding:2px 9px;}
.lvbar{flex:1;height:7px;background:var(--bd);border-radius:999px;overflow:hidden;max-width:150px;}
.lvbar>i{display:block;height:100%;background:linear-gradient(90deg,#f59e0b,#fbbf24);}
.myprow{display:flex;align-items:center;gap:10px;padding:12px 4px;border-bottom:1px solid var(--bd);cursor:pointer;font-size:14.5px;color:var(--navy);font-weight:700;}
.myprow:hover{background:var(--lt);border-radius:10px;}
.myprow .arw{color:var(--tx2);font-weight:800;}
#hud .hud-i,#hud .hud-lv{cursor:pointer;}
/* アカウントボタンのレベル表示 */
.acct-lv{display:inline-flex;align-items:center;gap:5px;margin-left:8px;vertical-align:middle;}
.acct-lvn{font-size:11.5px;font-weight:900;color:#92400e;background:#fef3c7;border-radius:999px;padding:1px 7px;white-space:nowrap;}
.acct-bar{width:46px;height:6px;background:var(--bd);border-radius:999px;overflow:hidden;}
.acct-bar>i{display:block;height:100%;background:linear-gradient(90deg,#f59e0b,#fbbf24);}
@media(max-width:640px){.acct-bar{display:none;}}
body.dark .strow{background:var(--card);}
.hchip{display:inline-flex;align-items:center;gap:5px;background:var(--card);border:1.5px solid var(--bd);border-radius:999px;padding:4px 12px;font-size:12px;font-weight:800;color:var(--tx2);}
.hchip.on{border-color:#f59e0b;background:#fff8e1;color:#b45309;}
.hchip.gold{border-color:#e8b520;background:linear-gradient(135deg,#fff8e1,#ffe9a8);color:#8a6200;}
body.dark .hchip.on,body.dark .hchip.gold{background:#453d1e;}
@keyframes eggsh{0%,100%{transform:rotate(0);}25%{transform:rotate(-7deg);}75%{transform:rotate(7deg);}}
.eggwrap{display:inline-block;cursor:pointer;}
.eggwrap.sh{animation:eggsh .35s ease-in-out;}
@keyframes eggflash{0%{opacity:0;}30%{opacity:1;}100%{opacity:0;}}
#eggflash{position:fixed;inset:0;background:#fff;z-index:400;pointer-events:none;animation:eggflash .7s ease-out forwards;}
.qbar{flex:1;background:var(--lt);border-radius:6px;height:10px;overflow:hidden;min-width:60px;}
.qbar>div{height:100%;background:linear-gradient(90deg,#2b6cea,#7fa8e8);}
.mtoast{position:fixed;pointer-events:none;bottom:26px;left:50%;transform:translateX(-50%);background:#152a52;color:#fff;padding:12px 24px;border-radius:16px;z-index:140;display:flex;gap:10px;align-items:center;font-weight:700;box-shadow:0 4px 0 rgba(0,0,0,.35);animation:mtIn .3s ease-out;white-space:nowrap;}
.mtoast.out{opacity:0;transition:.45s;}
@keyframes mtIn{from{transform:translate(-50%,24px);opacity:0;}}
.sicon{margin-right:6px;vertical-align:-6px;}
#nav button{display:flex;align-items:center;}
.tcard h3{display:flex;align-items:center;gap:2px;}

/* ==== 日次メダル(チェックポイント) ==== */
html.sunset .nvnode.med .nvnode-f{font-size:26px;filter:grayscale(1);opacity:.55;}
html.sunset .nvnode.med.ready .nvnode-f{filter:none;opacity:1;
  border-color:rgba(251,185,49,.65);box-shadow:inset 0 1px 0 var(--ghi),0 0 26px rgba(248,143,34,.45);
  animation:medpulse 1.6s ease-in-out infinite;}
html.sunset .nvnode.med.got .nvnode-f{filter:none;opacity:1;border-color:rgba(251,185,49,.5);}
html.sunset .nvnode.goal.med.ready .nvnode-f{font-size:24px;}
@keyframes medpulse{0%,100%{transform:scale(1)}50%{transform:scale(1.07)}}
/* 草のメダル色 */
.stk-d.m1{background:var(--bronze,#C4703A);}
.stk-d.m2{background:var(--silver,#98A2B0);}
.stk-d.m3{background:var(--gold,#FFC947);}
/* 実績: 66パターンの丸 */
/* マイページ: メダルの棚 */
.mdshelf{margin:0 0 12px;}
.mdgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:6px 14px 14px;}
.mdc{height:26px;display:flex;align-items:center;justify-content:center;border-radius:8px;
  font-size:10.5px;font-weight:700;color:var(--dim);background:color-mix(in srgb,var(--navy) 6%,transparent);}
.mdc.fut{opacity:.35;background:none;}
.mdc.m1{background:var(--bronze,#C4703A);color:#fff;}
.mdc.m2{background:var(--silver,#98A2B0);color:#2E333B;}
.mdc.m3{background:var(--gold,#FFC947);color:#5C4300;}
/* 完了画面: きょうの伸びとレベルアップ */
.nvfin-day{margin:10px auto 0;font-size:13px;font-weight:700;color:var(--tx2);
  background:var(--card);border:2px solid var(--bd);
  border-radius:12px;padding:9px 16px;display:inline-block;}
.nvfin-day b{color:var(--blue);}
.nvfin-lvup{margin:0 auto 10px;font-size:14px;font-weight:800;color:#fff;
  background:var(--grad);border-radius:12px;padding:10px 18px;display:inline-block;
  animation:medpulse 1.2s ease-in-out 2;}

/* ==== ノードの輪っか全廃(2026-09-01): 現在地の丸だけ残し、他はアイコンが道に直接のる ==== */
html.sunset .nvnode:not(.done):not(.cur) .nvnode-f,
html.sunset .nvnode.done .nvnode-f,
html.sunset .nvnode.med .nvnode-f,
html.sunset .nvnode.med.ready .nvnode-f,
html.sunset .nvnode.med.got .nvnode-f,
html.sunset .nvnode.goal .nvnode-f{
  background:none;border:none;box-shadow:none;
  backdrop-filter:none;-webkit-backdrop-filter:none;
  font-size:31px;
  filter:drop-shadow(0 2px 4px rgba(40,25,5,.25));}
html.sunset .nvnode.med .nvnode-f{filter:grayscale(1) opacity(.5) drop-shadow(0 2px 3px rgba(40,25,5,.2));}
html.sunset .nvnode.med.ready .nvnode-f,
html.sunset .nvnode.med.got .nvnode-f{filter:drop-shadow(0 0 14px rgba(248,143,34,.55));}

/* ==== アイコン規約 v2: 精密ライン(タブバー) ==== */
.nvic{width:23px;height:23px;display:block;color:var(--dim);}
.nvic *{stroke:currentColor;stroke-width:1.5;fill:none;stroke-linecap:round;stroke-linejoin:round;}
#nvtab button .nvic{margin:0 auto;}
#nvtab button.on .nvic{color:var(--blue);}
html.sunset #nvtab button{opacity:1;}
/* ==== 訴求ボタン(受け取る/プレミアム): 通常規約の対象外。グラデ面+白アイコン ==== */
html.sunset .nvfl>span.nvfl-c{background:var(--blue);border:none;
  box-shadow:3px 3px 0 var(--navy);}
html.sunset .nvfl .nvic{width:24px;height:24px;color:#fff;}
html.sunset .nvfl .nvic *{stroke-width:1.7;}
html.sunset .nvfl>b{color:var(--tx2);}
html.sunset .nvfl.prem>span.nvfl-c{background:var(--gold);
  border:none;box-shadow:3px 3px 0 var(--navy);}
html.sunset .nvfl.prem .nvic{color:#5C4300;}

/* (v2: カードの影は主役カードのベタ影だけ。薄影レイヤーは廃止 2026-09-02) */

/* ===== A1 ホーム v2: 縦タイムライン (bokiinu2.pen 2026-09-02) =====================
   道のうねりをやめ、左レール+ノード+本文の縦並びに。主役は「いまの1件」のカードだけ */
.mono{font-family:ui-monospace,'SF Mono',Menlo,monospace;}
/* HUD */
.nvhome2 .nvbar{gap:10px;}
.nvp.lvp i{font-size:12px;font-weight:700;color:var(--dim);}
.nvp.lvp u{width:58px;height:6px;background:var(--bd);}
.nvp.lvp u b{background:var(--blue);}
.nvp.lvp em{font-style:normal;font-size:10.5px;font-weight:700;color:var(--dim);}
.nvp.lvp em s{text-decoration:none;color:var(--bd);}
.nvp.st-fire{background:var(--flame-tint);border-radius:8px;padding:5px 9px;gap:5px;font-size:13px;}
.nvp.st-fire b{color:var(--flame);font-size:12.5px;}
.nvhudb{width:32px;height:32px;border:2px solid var(--bd);border-radius:10px;background:var(--card);
  display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer;flex:none;}
.nvhudb .nvic{width:17px;height:17px;color:var(--dim);}
.nvhudb.gift .nvic{color:var(--gold);}
.nvhudb.gift .nvic *{stroke-width:1.9;}
.nvhudb.got .nvic{color:var(--bd);}
.nvhudb:active{transform:translateY(1px);}
/* きょうの作戦カード(プレーンカード) */
/* きょうカード(HD1): 左=きょうの伸び / 仕切り / 右=試験日の見通し */
.nvplan2{width:100%;height:76px;display:flex;align-items:center;gap:12px;background:var(--card);
  border:2px solid var(--bd);border-radius:14px;padding:0 14px;margin-top:2px;
  font-family:inherit;cursor:pointer;text-align:left;}
.nvplan2:active{transform:translateY(1px);}
.nvplan2 .ch{width:16px;height:16px;color:var(--dim);flex:none;}
.np-l{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;align-items:flex-start;
  justify-content:center;}
.np-l>i{font-style:normal;font-size:10px;font-weight:600;color:var(--dim);letter-spacing:.04em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.np-ln{display:flex;align-items:flex-end;gap:5px;}
.np-ln b{font-size:20px;font-weight:700;color:var(--dim);letter-spacing:-.8px;line-height:1;}
.np-ln em{font-style:normal;font-size:13px;color:var(--dim);padding-bottom:2px;}
.np-ln u{text-decoration:none;font-size:32px;font-weight:700;color:var(--blue);
  letter-spacing:-1.5px;line-height:1;}
.np-ln s{text-decoration:none;font-size:12px;font-weight:800;color:var(--navy);padding-bottom:2px;}
.np-div{flex:none;width:1.5px;height:42px;background:var(--bd);}
.np-r{flex:none;display:flex;flex-direction:column;gap:3px;align-items:flex-end;}
.np-r>i{font-style:normal;font-size:9.5px;font-weight:700;color:var(--dim);}
.np-rn{display:flex;align-items:flex-end;gap:3px;}
.np-rn b{font-size:20px;font-weight:700;color:var(--navy);letter-spacing:-.8px;line-height:1;}
.np-rn b.ng{color:var(--ng);}
.np-rn b.ok{color:var(--ok);}
.np-rn u{text-decoration:none;font-size:10px;font-weight:700;color:var(--dim);}
.np-r>s{text-decoration:none;font-size:9px;font-weight:700;color:var(--flame);}
.np-r.none>s{color:var(--dim);}
.np-r.none .np-rn b{font-size:15px;color:var(--dim);}
/* セグメント進捗バー(タスク=低め・メダル=高めの枠) */
.npb{padding:13px 0 2px;}
.npb-bar{display:flex;align-items:center;gap:3px;height:24px;}
.nps{flex:1;height:14px;border-radius:4px;background:var(--bd);}
.nps.done{background:var(--blue);}
.nps.cur{background:var(--bg);border:3px solid var(--blue);}
.npm{flex:1;height:24px;border-radius:6px;background:var(--bg);border:2px solid var(--bd);}
.npm.bz{border-color:var(--bronze);}
.npm.sv{border-color:var(--silver);}
.npm.gd{border-color:var(--gold);}
.npm.nx{border-width:3px;}
.npm.got.bz{background:var(--bronze);}
.npm.got.sv{background:var(--silver);}
.npm.got.gd{background:var(--gold);}
.npb-lg{display:flex;align-items:center;gap:10px;margin:9px 0 10px;}
.npb-now{flex:1;display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--tx2);}
.npb-now s{text-decoration:none;width:10px;height:10px;border-radius:5px;background:var(--blue);flex:none;}
.npb-goal{display:flex;align-items:center;gap:5px;background:var(--flame-tint);border-radius:8px;
  padding:4px 8px 4px 10px;font-size:11px;font-weight:800;color:var(--flame);}
.npb-goal b{font-size:11.5px;}
.npb-goal em{font-style:normal;font-size:16px;line-height:1;}
/* ヘッダーの下端 = 墨の太線(端から端まで) */
.nvsep{height:3px;background:var(--navy);margin:0 -16px;flex:none;}
html.v2 body.nvhomeon .nvstick{padding-bottom:0;}
html.v2 body.nvhomeon .nvstick::after{content:none;}
html.v2 body.nvhomeon .nvscroll{padding-top:0;padding-bottom:24px;}
/* タイムライン */
.nvtl{position:relative;display:flex;flex-direction:column;padding:12px 0 30px;}
.tlr{display:flex;gap:12px;border:none;background:none;padding:0;margin:0;text-align:left;
  font-family:inherit;cursor:pointer;align-items:stretch;width:100%;color:inherit;}
.tlrail{width:30px;flex:none;display:flex;flex-direction:column;align-items:center;}
.tlrail i{width:3px;border-radius:2px;background:var(--bd);}
.tlrail i.a{height:14px;flex:none;}
/* いちばん上の節には、上へ伸びる道が要らない。どこから来たのか分からない線になる。
   場所をずらさないよう、消すのではなく見えなくする */
.nvtl>.tlr:first-child .tlrail i.a{visibility:hidden;}
.tlrail i.b{flex:1;}
.tlrail i.p{background:var(--dim);}
.tln{display:flex;align-items:center;justify-content:center;flex:none;margin:2px 0;}
.tln.cur{width:30px;height:30px;border-radius:50%;background:var(--blue);border:3px solid var(--navy);}
.tln.cur .nvic{width:14px;height:14px;color:#fff;}
.tln.done{width:20px;height:20px;border-radius:50%;background:var(--dim);color:var(--card);
  font-size:11px;font-weight:800;}
.tln.lk{width:14px;height:14px;border-radius:50%;background:var(--bg);border:2.5px solid var(--bd);}
.tln.med{width:34px;height:34px;font-size:24px;line-height:1;}
.tlr.med.far .tln.med{filter:grayscale(1);opacity:.5;}
.tlr.med.ready .tln.med{animation:medpulse 1.6s ease-in-out infinite;}
.tldots{display:flex;flex-direction:column;gap:3px;margin:3px 0;}
.tldots s{width:4px;height:4px;border-radius:2px;background:var(--dim);}
.tlb{flex:1;min-width:0;display:flex;align-items:center;}
.tlfold{gap:8px;height:50px;}
.tlfold b{flex:1;font-size:12.5px;font-weight:600;color:var(--tx2);min-width:0;}
.tlfold i{font-style:normal;font-size:11.5px;font-weight:600;color:var(--dim);}
.tlfold .ch{width:16px;height:16px;color:var(--dim);transform:rotate(90deg);transition:transform .15s;}
.tlr.fold.open .tlfold .ch{transform:rotate(-90deg);}
.tlrow{gap:10px;height:48px;}
.tlrow .no{font-style:normal;font-size:11.5px;font-weight:600;color:var(--dim);}
.tlr.lk .tlrow .no{color:var(--bd);}
.tlrow b{flex:1;font-size:13px;font-weight:400;color:var(--tx2);min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tlr.past .tlrow b{font-weight:600;color:var(--navy);}
.lki{width:15px;height:15px;color:var(--bd);flex:none;}
/* NOW = 主役カード(墨3px+ベタ影) */
.tlr.now{cursor:default;}
.tlb .tlhero{width:100%;margin:6px 0 14px;background:var(--card);border:3px solid var(--navy);
  border-radius:16px;box-shadow:5px 5px 0 var(--navy);padding:16px;
  display:flex;flex-direction:column;gap:12px;}
.th-m{display:flex;align-items:center;gap:8px;}
.th-m s{text-decoration:none;background:var(--blue);color:#fff;border-radius:7px;
  padding:4px 9px;font-size:10.5px;font-weight:700;letter-spacing:.16em;}
.th-m i{font-style:normal;font-size:11px;font-weight:600;color:var(--dim);letter-spacing:.06em;}
.th-t{font-size:21px;font-weight:900;color:var(--navy);letter-spacing:-.02em;line-height:1.3;}
.th-cta{width:100%;height:56px;background:var(--blue);border:none;border-radius:12px;
  color:#fff;font-family:inherit;font-size:16px;font-weight:900;letter-spacing:.06em;
  display:flex;align-items:center;justify-content:center;gap:9px;cursor:pointer;}
.th-cta:active{transform:translateY(1px);}
.th-cta .nvic{width:20px;height:20px;color:#fff;}
/* メダル行(近い=金色チップ地 / 遠い=枠だけ / 取れる=点滅 / 取った=✓) */
.tlmed{width:100%;display:flex;align-items:center;gap:10px;border-radius:12px;padding:0 14px;
  height:46px;margin:8px 0;}
.tlmed i{font-style:normal;font-size:12px;font-weight:700;flex:none;}
.tlmed b{flex:1;font-size:13.5px;min-width:0;text-align:left;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;}
.tlmed u{text-decoration:none;font-size:12px;font-weight:700;flex:none;}
/* 光るのは「受け取れる」ときだけ(bokiinu2.pen CMP)。
   もうすぐ届くだけの段まで金地にすると、受け取れるものと見分けがつかない */
.tlmed.got{background:var(--flame-tint);}
.tlmed.near{background:none;border:2px solid var(--gold);}
.tlmed.near i,.tlmed.near u{color:#7A5200;}
.tlmed.near b{font-weight:800;color:var(--navy);}
.tlmed.got i,.tlmed.got u,.tlmed.got b{color:var(--flame);font-weight:800;}
.tlmed.far{background:none;border:2px solid var(--bd);}
.tlmed.far i{color:var(--bd);}
.tlmed.far b{font-weight:700;color:var(--dim);}
.tlmed.far u{color:var(--dim);}
/* マスコット犬 */
.nvdog2{position:absolute;right:4px;top:288px;pointer-events:none;}
.nvdog2 canvas{image-rendering:pixelated;width:92px!important;height:92px!important;}
/* 塗りつぶしアイコン(再生の三角) */
.nvic.icf *{fill:currentColor;stroke:none;}

/* ===== A2 学習 v2 ===== */
.sh-cta{margin-top:12px;height:42px;background:var(--blue-tint);border:none;border-radius:10px;
  color:var(--blue);font-family:inherit;font-size:13px;font-weight:800;cursor:pointer;
  display:inline-flex;align-items:center;gap:7px;padding:0 16px;}
.sh-cta:active{transform:translateY(1px);}
.sh-cta .nvic{width:16px;height:16px;color:var(--blue);}
html.sunset .stdy-hero .sh-v b{color:var(--navy);}
html.sunset .stdy-eta{background:var(--flame-tint);border:none;border-radius:12px;color:var(--flame);
  font-weight:700;}
html.sunset .stdy-eta span{color:var(--flame);}
html.sunset .stdy-eta span b{color:var(--navy);}

/* ===== A3 分析 v2 ===== */
.nvpg-t.ana-t{display:flex;align-items:center;gap:10px;}
.plusb{background:var(--gold);color:#5C4300;border-radius:7px;padding:4px 9px;
  font-size:10.5px;font-weight:700;letter-spacing:.13em;text-decoration:none;font-style:normal;}
.ana-tl{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.ana-tl i{font-style:normal;font-size:10.5px;font-weight:700;color:var(--blue);letter-spacing:.17em;
  font-family:ui-monospace,'SF Mono',Menlo,monospace;}
.ana-n{display:flex;align-items:baseline;gap:5px;}
.ana-n b{font-size:40px;font-weight:700;line-height:1;color:var(--navy);letter-spacing:-2px;}
.ana-n em{font-style:normal;font-size:13px;font-weight:600;color:var(--dim);}
.ana-tr{display:flex;flex-direction:column;gap:3px;align-items:flex-end;flex:none;}
.ana-tr i{font-style:normal;font-size:11px;font-weight:600;color:var(--dim);}
.ana-tr b{font-size:16px;font-weight:700;color:var(--flame);}
.ana-tr b.ok{color:var(--ok);}
.ana-ql{flex:none;width:52px;font-size:12.5px;font-weight:700;color:var(--navy);text-align:left;}
.ana-qsub{font-size:11px;font-weight:600;color:var(--dim);margin:2px 0 6px;}
html.sunset .ana-qh{padding:0;height:52px;}
html.sunset .ana-qbar{flex:1;height:8px;border-radius:4px;background:var(--bd);overflow:visible;}
html.sunset .ana-qbar i{display:block;height:100%;border-radius:4px;background:var(--blue);}
html.sunset .ana-qv{flex:none;font-size:11px;font-weight:600;color:var(--dim);}
html.sunset .ana-qv b{font-size:11px;font-weight:600;color:var(--dim);}
html.sunset .ana-q+.ana-q{border-top:1.5px solid var(--bd);}
.ana-plan{background:var(--flame-tint);border-radius:14px;padding:13px 14px;}
.ana-plan i{display:block;font-style:normal;font-size:10.5px;font-weight:700;color:var(--flame);
  letter-spacing:.15em;margin-bottom:5px;}
.ana-plan p{margin:0;font-size:12.5px;font-weight:700;color:var(--navy);line-height:1.6;}
.ana-plan p b{color:var(--blue);}

/* ===== A4 順位 v2 ===== */
.rk-head{display:flex;align-items:center;gap:10px;margin:2px 0 12px;}
.rk-seg{display:flex;gap:2px;background:var(--card);border:2px solid var(--bd);border-radius:10px;padding:3px;}
.rk-seg button{border:none;background:none;border-radius:8px;padding:6px 12px;
  font-family:inherit;font-size:12px;font-weight:800;color:var(--dim);cursor:pointer;}
.rk-seg button.on{background:var(--navy);color:var(--card);}
.rk-rem{margin-left:auto;font-style:normal;font-size:11px;font-weight:600;color:var(--dim);}
.rk-goal{background:var(--card);border:3px solid var(--navy);border-radius:16px;
  box-shadow:5px 5px 0 var(--navy);padding:14px 16px;margin-bottom:12px;}
.rk-gt{display:flex;align-items:flex-end;gap:8px;}
.rk-gt b{flex:1;font-size:17px;font-weight:900;color:var(--navy);letter-spacing:-.02em;}
.rk-gt i{font-style:normal;font-size:12px;font-weight:700;color:var(--dim);}
.rk-bar{margin-top:9px;height:10px;border-radius:5px;background:var(--bd);overflow:hidden;}
.rk-bar i{display:block;height:100%;border-radius:5px;background:var(--blue);}
.rk-list{background:var(--card);border:2px solid var(--bd);border-radius:16px;padding:2px 12px;}
.rk-list .rrow{background:none;border-radius:0;box-shadow:none;margin:0;padding:0 2px;height:58px;gap:11px;}
.rk-list .rrow+.rrow{border-top:1.5px solid var(--bd);}
.rk-list .rrow.me{outline:none;}
.rk-list .rnum2{min-width:22px;font-size:13px;font-weight:700;color:var(--dim);}
.rk-list .rrow.me .rnum2{color:var(--blue);}
.rk-list .ricon{width:32px;height:32px;border-radius:16px;background:var(--bg);
  border:2px solid var(--bd);}
.rk-list .rrow.me .ricon{background:var(--blue-tint);border-color:var(--blue);}
.rnm{flex:1;min-width:0;font-size:13.5px;font-weight:600;color:var(--navy);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rk-list .rrow.me .rnm{font-weight:900;}
.rgold{font-size:15px;flex:none;}
.rk-list .rv{font-size:12.5px;font-weight:700;color:var(--dim);}
.rk-list .rrow.me .rv{color:var(--blue);}

/* ===== A5 マイページ v2 / 行アイコンのタイル ===== */
.nvhub-ic{flex:none;width:38px;height:38px;border-radius:11px;background:var(--bg);
  display:flex;align-items:center;justify-content:center;}
.nvhub-ic .nvic{width:19px;height:19px;color:var(--navy);}
.nvmy-n em{font-style:normal;color:var(--blue);font-weight:700;}

/* ===== G1 試験日設定 v2 ===== */
html.sunset #cele-box{background:var(--card);border:3px solid var(--navy);border-radius:20px;
  box-shadow:8px 8px 0 rgba(20,22,26,.35);padding:26px 22px;}
.excfg-date{display:flex;align-items:center;gap:10px;justify-content:center;
  border:2px solid var(--navy);border-radius:12px;padding:12px 16px;background:var(--card);}
.excfg-date .nvic{width:20px;height:20px;color:var(--navy);flex:none;}
.excfg-date input{border:none;background:none;font-size:18px;font-weight:700;color:var(--navy);
  font-family:ui-monospace,'SF Mono',Menlo,monospace;}
.excfg-nums{display:flex;gap:9px;margin-top:12px;}
.excfg-n{flex:1;display:flex;flex-direction:column;gap:4px;border:2px solid var(--bd);
  border-radius:12px;padding:10px 8px;align-items:center;}
.excfg-n i{font-style:normal;font-size:11px;font-weight:700;color:var(--dim);}
.excfg-n span{display:flex;align-items:baseline;gap:2px;}
.excfg-n input{width:52px;border:none;background:none;font-size:18px;font-weight:700;
  color:var(--navy);text-align:right;font-family:ui-monospace,'SF Mono',Menlo,monospace;}
.excfg-n u{text-decoration:none;font-size:11px;font-weight:700;color:var(--dim);}
.excfg-btns{display:flex;gap:8px;justify-content:center;margin-top:16px;}
.excfg-btns .btn{flex:1;max-width:180px;}
#pickm .pickm-bdg{text-decoration:none;background:var(--blue);color:#fff;border-radius:6px;
  padding:2px 7px;font-size:9.5px;font-weight:800;margin-left:7px;vertical-align:2px;letter-spacing:.05em;}

/* ===== G2 ログイン v2 ===== */
.btn.acct-g{width:100%;background:var(--card);color:var(--navy);border:2px solid var(--bd);margin:6px 0;box-shadow:none;}
html.sunset #acct-box{background:var(--card);border:3px solid var(--navy);border-radius:20px;
  box-shadow:8px 8px 0 rgba(20,22,26,.35);}

/* v2: 画面タイトルのピクセル書体をやめ、通常の太字に統一 */
html.sunset .disp,html.sunset .disp2,html.sunset #cele-box h2,
html.sunset .gmach,html.sunset .rnum2,html.sunset .rrow .rv{font-family:inherit;}

/* ===== A2b 学習 v2「いまはこれ」 ===== */
.nvpg-t.stdy-hd{margin:2px 0 12px;}
.nvpg-t.stdy-hd i{display:block;font-style:normal;font-size:11.5px;font-weight:500;
  color:var(--dim);margin-top:3px;}
.stdy-hero2{background:var(--card);border:3px solid var(--navy);border-radius:18px;
  box-shadow:5px 5px 0 var(--navy);padding:15px 15px 14px;
  display:flex;flex-direction:column;gap:11px;margin-bottom:11px;}
.sh2-tag{display:flex;align-items:center;gap:8px;}
.sh2-tag s{text-decoration:none;flex:none;background:var(--blue);color:#fff;border-radius:7px;
  padding:4px 9px;font-size:10px;font-weight:800;}
.sh2-tag i{flex:1;min-width:0;font-style:normal;font-size:10.5px;font-weight:600;color:var(--dim);}
.sh2-ti{display:flex;align-items:flex-end;gap:10px;}
.sh2-ti b{flex:1;font-size:24px;font-weight:900;color:var(--navy);letter-spacing:-.04em;}
.sh2-ti i{font-style:normal;font-size:13px;font-weight:700;color:var(--blue);}
.stdy-grid{display:flex;flex-direction:column;gap:3px;}
.stdy-grid .sg-r{display:flex;gap:3px;}
.stdy-grid s{flex:1;height:7px;border-radius:3px;background:var(--bd);text-decoration:none;}
.stdy-grid s.on{background:var(--blue);}
.stdy-grid s.mid{background:var(--blue-tint);}
.sh2-cta{width:100%;height:54px;background:var(--blue);border:none;border-radius:13px;
  color:#fff;font-family:inherit;font-size:14.5px;font-weight:900;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:8px;}
.sh2-cta:active{transform:translateY(1px);}
.sh2-cta .nvic{width:19px;height:19px;color:#fff;flex:none;}
.stdy-tip{display:flex;align-items:center;gap:8px;background:var(--flame-tint);border-radius:12px;
  padding:11px 13px;font-size:11px;font-weight:700;color:var(--flame);margin-top:11px;}
.stdy-tip .nvic{width:15px;height:15px;color:var(--flame);flex:none;}
html.sunset .nvhub-i{height:70px;border-radius:14px;}
html.sunset .nvhub-i .nvhub-t i{font-size:10.5px;font-weight:500;}

/* ===== A5c マイページ 統合 ===== */
.nvmy2{padding-bottom:8px;}
.myprof{width:100%;height:74px;display:flex;align-items:center;gap:12px;padding:0 14px;
  background:var(--card);border:2px solid var(--bd);border-radius:16px;margin:6px 0 12px;
  font-family:inherit;text-align:left;cursor:pointer;}
.myprof:active{transform:translateY(1px);}
.myprof-av{flex:none;width:46px;height:46px;border-radius:14px;background:var(--bg);
  display:flex;align-items:center;justify-content:center;overflow:hidden;}
.myprof-av canvas{image-rendering:pixelated;}
.myprof-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;}
.myprof-n{display:flex;align-items:center;gap:7px;}
.myprof-n b{font-size:17px;font-weight:900;color:var(--navy);letter-spacing:-.02em;}
.myprof-n s{text-decoration:none;background:var(--blue-tint);color:var(--blue);border-radius:6px;
  padding:3px 7px;font-size:10px;font-weight:700;}
.myprof-t i{font-style:normal;font-size:11px;font-weight:600;color:var(--dim);}
.myprof .ma{width:18px;height:18px;color:var(--dim);flex:none;}
/* 未ログインの警告バナー(墨地) */
.mylogin{display:flex;align-items:center;gap:11px;height:62px;padding:0 14px;
  background:var(--navy);border-radius:14px;margin-bottom:14px;}
.mylogin>.nvic{width:19px;height:19px;color:var(--card);flex:none;}
.myl-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.myl-t b{font-size:12.5px;font-weight:800;color:var(--card);}
.myl-t i{font-style:normal;font-size:10.5px;font-weight:500;color:#9AA3B8;}
.myl-b{flex:none;background:var(--blue);color:#fff;border:none;border-radius:9px;padding:8px 13px;
  font-family:inherit;font-size:11.5px;font-weight:800;cursor:pointer;}
.myl-b:active{transform:translateY(1px);}
/* グループ */
.myg{margin-bottom:13px;}
.myg>em{display:block;font-style:normal;font-size:10px;font-weight:800;color:var(--dim);
  letter-spacing:.14em;margin-bottom:5px;}
.myg-c{background:var(--card);border:2px solid var(--bd);border-radius:14px;overflow:hidden;}
.myr{width:100%;height:46px;display:flex;align-items:center;gap:11px;padding:0 13px;
  background:none;border:none;border-top:1.5px solid var(--bd);
  font-family:inherit;text-align:left;cursor:pointer;}
.myr.first{border-top:none;}
.myr:active{background:var(--bg);}
.myr .mi{width:18px;height:18px;color:var(--navy);flex:none;}
.myr b{flex:1;min-width:0;font-size:13px;font-weight:700;color:var(--navy);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.myr i{font-style:normal;font-size:11.5px;font-weight:600;color:var(--dim);flex:none;
  max-width:44%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.myr .ma{width:17px;height:17px;color:var(--dim);flex:none;}
.myr .nvsw{margin-left:2px;}

/* ===== A3c 分析① 判定 ===== */
.nvpg-t.ana-hd{display:flex;align-items:flex-end;gap:10px;margin:2px 0 12px;}
.nvpg-t.ana-hd>i{font-style:normal;margin-left:auto;font-size:11px;font-weight:700;color:var(--dim);}
.nvpg-t.ana-hd2>b{font-size:19px;letter-spacing:-.03em;}
.av-hero{background:var(--card);border:3px solid var(--navy);border-radius:16px;
  box-shadow:5px 5px 0 var(--navy);padding:14px 14px 13px;
  display:flex;flex-direction:column;gap:11px;}
.av-r{display:flex;align-items:flex-end;gap:10px;}
.av-l{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.av-l>i{font-style:normal;font-size:11px;font-weight:700;color:var(--dim);}
.av-n{display:flex;align-items:flex-end;gap:5px;}
.av-n b{font-size:44px;font-weight:700;line-height:.95;letter-spacing:-2.5px;}
.av-n b.ng{color:var(--ng);}
.av-n b.ok{color:var(--ok);}
.av-n u{text-decoration:none;font-size:14px;font-weight:800;color:var(--navy);padding-bottom:4px;}
.av-d{flex:none;border-radius:9px;padding:7px 11px;font-size:15px;font-weight:700;color:#fff;}
.av-d.ng{background:var(--ng);}
.av-d.ok{background:var(--ok);}
/* ゲージ */
.av-g{position:relative;height:38px;}
.av-gt,.av-gp,.av-gc{position:absolute;left:0;top:0;height:14px;border-radius:7px;}
.av-gt{width:100%;background:var(--bg);border:1.5px solid var(--bd);box-sizing:border-box;}
.av-gp{background:#F6C9C4;}
.av-gp.ok{background:#BFE6D5;}
.av-gc{background:var(--blue);}
.av-gm{position:absolute;top:-1px;width:3px;height:30px;background:var(--navy);}
.av-g span{position:absolute;top:20px;font-size:9.5px;font-weight:700;white-space:nowrap;}
.av-l1{left:0;color:var(--blue);}
.av-l2{transform:translateX(-50%);color:var(--ng);}
.av-l2.ok{color:var(--ok);}
.av-l3{transform:translateX(-50%);color:var(--navy);}
/* 判定の帯 */
.av-v{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:11px;background:#FDECEA;}
.av-v.ok{background:#E8F6EF;}
.av-v .nvic{width:17px;height:17px;color:var(--ng);flex:none;}
.av-v.ok .nvic{color:var(--ok);}
.av-v b{font-size:13px;font-weight:900;color:var(--ng);}
.av-v.ok b{color:var(--ok);}
/* 見出し */
.av-s{font-size:14px;font-weight:900;color:var(--navy);letter-spacing:-.02em;margin:16px 0 9px;}
/* ①やりきる */
.av-a1{background:var(--card);border:2.5px solid var(--navy);border-radius:14px;padding:12px 13px;
  display:flex;flex-direction:column;gap:9px;margin-bottom:9px;}
.av-ah{display:flex;align-items:center;gap:9px;}
.av-ah s{text-decoration:none;flex:none;width:22px;height:22px;border-radius:7px;background:var(--navy);
  color:var(--card);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;}
.av-ah b{flex:1;font-size:13px;font-weight:900;color:var(--navy);}
.av-ah em{font-style:normal;background:var(--blue-tint);color:var(--blue);border-radius:7px;
  padding:4px 8px;font-size:11px;font-weight:700;}
.av-ap{display:flex;align-items:center;gap:9px;}
.av-apb{flex:1;height:8px;border-radius:4px;background:var(--bg);overflow:hidden;}
.av-apb i{display:block;height:100%;border-radius:4px;background:var(--gold);}
.av-ap u{text-decoration:none;font-size:10.5px;font-weight:700;color:var(--flame);white-space:nowrap;}
.av-ac{display:flex;gap:7px;}
.av-ac button{flex:1;height:38px;border:none;border-radius:10px;background:var(--blue-tint);
  color:var(--blue);font-family:inherit;font-size:11px;font-weight:800;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:6px;}
.av-ac button:active{transform:translateY(1px);}
.av-ac .nvic{width:15px;height:15px;color:var(--blue);}
/* ②③ */
.av-a{width:100%;height:62px;display:flex;align-items:center;gap:10px;padding:0 13px;margin-bottom:9px;
  background:var(--card);border:2px solid var(--bd);border-radius:14px;
  font-family:inherit;text-align:left;cursor:pointer;}
.av-a:active{transform:translateY(1px);}
.av-a>s{text-decoration:none;flex:none;width:22px;height:22px;border-radius:7px;background:var(--bg);
  color:var(--dim);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;}
.av-at{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
.av-at b{font-size:12.5px;font-weight:800;color:var(--navy);}
.av-at i{font-style:normal;font-size:10.5px;font-weight:600;color:var(--dim);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.av-a>em{font-style:normal;flex:none;background:var(--blue-tint);color:var(--blue);border-radius:7px;
  padding:4px 8px;font-size:11px;font-weight:700;}
.av-a .ma{width:16px;height:16px;color:var(--dim);flex:none;}
/* 順調のときの数字 */
.av-sts{display:flex;gap:9px;margin:16px 0 0;}
.av-st{flex:1;background:var(--card);border:2px solid var(--bd);border-radius:14px;
  padding:13px 6px;text-align:center;}
.av-st b{display:block;font-size:20px;font-weight:700;color:var(--navy);}
.av-st i{display:block;font-style:normal;font-size:10.5px;font-weight:700;color:var(--dim);margin-top:3px;}
/* 中身を見る */
.av-more{width:100%;height:50px;margin-top:14px;background:none;border:2px solid var(--bd);
  border-radius:12px;font-family:inherit;font-size:12.5px;font-weight:800;color:var(--dim);
  display:flex;align-items:center;justify-content:center;gap:7px;cursor:pointer;}
.av-more:active{transform:translateY(1px);}
.av-more .nvic{width:16px;height:16px;color:var(--dim);}
/* ===== A3d 分析② 中身 ===== */
.at-qc{background:var(--card);border:3px solid var(--navy);border-radius:16px;padding:2px 14px;}
.at-q{height:42px;display:flex;align-items:center;gap:9px;}
.at-q+.at-q{border-top:1.5px solid var(--bd);}
.at-q>b{flex:none;width:34px;font-size:11.5px;font-weight:800;color:var(--navy);}
.at-b{position:relative;flex:1;height:14px;display:flex;align-items:center;}
.at-b::before{content:"";position:absolute;left:0;right:0;height:7px;border-radius:4px;background:var(--bg);}
.at-b i{position:absolute;left:0;height:7px;border-radius:4px;}
.at-b i.g{background:var(--blue-tint);}
.at-b i.f{background:var(--blue);}
.at-b s{position:absolute;top:0;width:2px;height:14px;background:var(--navy);}
.at-q>em{flex:none;width:44px;font-style:normal;font-size:10px;font-weight:600;color:var(--dim);text-align:right;}
.at-q>u{flex:none;text-decoration:none;background:var(--blue-tint);color:var(--blue);border-radius:5px;
  padding:3px 6px;font-size:9.5px;font-weight:700;}
.at-q>u.on{background:var(--blue);color:#fff;}
.at-g{background:var(--card);border:2px solid var(--bd);border-radius:14px;padding:0 13px;margin-bottom:9px;}
.at-h{height:36px;display:flex;align-items:center;gap:8px;}
.at-h b{flex:1;font-size:12.5px;font-weight:900;color:var(--navy);}
.at-h s{text-decoration:none;background:var(--blue-tint);color:var(--blue);border-radius:5px;
  padding:3px 7px;font-size:9.5px;font-weight:800;}
.at-h s.on{background:var(--blue);color:#fff;}
.at-r{height:38px;display:flex;align-items:center;gap:9px;border-top:1.5px solid var(--bd);}
.at-r>i{flex:none;width:6px;height:6px;border-radius:3px;background:var(--blue);}
.at-r>b{flex:1;min-width:0;font-size:11.5px;font-weight:600;color:var(--navy);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.at-r>u{flex:none;text-decoration:none;font-size:11px;font-weight:700;color:var(--blue);}
.at-r>button{flex:none;background:var(--blue-tint);color:var(--blue);border:none;border-radius:7px;
  padding:5px 9px;font-family:inherit;font-size:10px;font-weight:800;cursor:pointer;}
.at-r>button:active{transform:translateY(1px);}
.at-sim{display:flex;align-items:center;gap:10px;background:var(--flame-tint);border-radius:14px;
  padding:12px 13px;margin-top:11px;}
.at-sim span{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.at-sim i{font-style:normal;font-size:11px;font-weight:800;color:var(--flame);}
.at-sim b{font-size:12.5px;font-weight:800;color:var(--navy);}
.at-sim>s{text-decoration:none;flex:none;background:var(--navy);color:var(--card);border-radius:8px;
  padding:6px 10px;font-size:15px;font-weight:700;}

/* 試験日が未設定のときの分析 */
.av-need{background:var(--card);border:3px solid var(--navy);border-radius:16px;
  box-shadow:5px 5px 0 var(--navy);padding:26px 20px;text-align:center;}
.av-need>.nvic{width:34px;height:34px;color:var(--blue);margin:0 auto 12px;}
.av-need b{display:block;font-size:17px;font-weight:900;color:var(--navy);letter-spacing:-.02em;}
.av-need i{display:block;font-style:normal;font-size:12.5px;font-weight:600;color:var(--dim);
  line-height:1.8;margin:8px 0 18px;}
.av-need .btn{width:100%;}

/* ===== A3d 分析② 単元別の中身 ===== */
.av-s2{font-size:14px;font-weight:900;color:var(--navy);letter-spacing:-.02em;margin:16px 0 9px;}
.av-s2:first-of-type{margin-top:2px;}
.at-q>em>u{text-decoration:none;color:var(--bd);}
/* 大問ごとのトグル */
.au-g{background:var(--card);border:2px solid var(--bd);border-radius:14px;
  margin-bottom:9px;overflow:hidden;}
.au-gh{width:100%;display:flex;align-items:center;gap:9px;padding:0 13px;height:52px;
  background:none;border:none;font-family:inherit;text-align:left;cursor:pointer;}
.au-gt{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
.au-gt b{font-size:13px;font-weight:900;color:var(--navy);}
.au-gt i{font-style:normal;font-size:10.5px;font-weight:600;color:var(--dim);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.au-gh>s{flex:none;text-decoration:none;background:var(--blue-tint);color:var(--blue);
  border-radius:6px;padding:4px 8px;font-size:10.5px;font-weight:800;}
.au-gh>s.on{background:var(--blue);color:#fff;}
.au-ar{flex:none;font-style:normal;font-size:15px;color:var(--dim);
  transform:rotate(90deg);transition:transform .15s;}
.au-g.cl .au-ar{transform:rotate(0deg);}
.au-g.cl .au-gb{display:none;}
.au-gb{padding:0 13px 13px;}
.au-sum{font-size:10.5px;font-weight:700;color:var(--dim);
  padding:6px 0 8px;border-top:1.5px solid var(--bd);}
/* 単元1行: 上に名前と状態、下に得点率・時間・多いミス */
.au-r{padding:8px 0;border-top:1.5px solid var(--bd);}
.au-h{display:flex;align-items:center;gap:8px;}
.au-h s{flex:none;text-decoration:none;width:8px;height:8px;border-radius:50%;background:var(--dim);}
.au-h s.ng{background:var(--ng);}
.au-h s.warn{background:var(--gold);}
.au-h s.ok{background:var(--ok);}
.au-h s.none{background:none;border:1.5px solid var(--bd);}
.au-h b{flex:1;min-width:0;font-size:12.5px;font-weight:700;color:var(--navy);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.au-st{flex:none;font-style:normal;font-size:10px;font-weight:800;border-radius:5px;padding:3px 7px;}
.au-st.ng{background:#FDECEA;color:var(--ng);}
.au-st.warn{background:var(--flame-tint);color:var(--flame);}
.au-st.ok{background:#E8F6EF;color:var(--ok);}
.au-st.none{background:var(--bg);color:var(--dim);}
.au-m{font-size:10.5px;font-weight:600;color:var(--dim);margin:4px 0 0 16px;line-height:1.6;}
.au-m b{font-weight:800;color:var(--navy);}
/* 大問ごとのミス内訳(既存部品)をトグルの中に馴染ませる */
.au-gb .ana-msw{margin-top:12px;padding-top:10px;border-top:1.5px solid var(--bd);}
html.sunset .au-gb .ana-msb{background:var(--bg);}
html.sunset .au-gb .ana-msb i{background:var(--blue);}
/* 未着手行はメトリクス無し。残りは「ほかN単元」で畳む */
.au-r.nw{padding:9px 0;}
.au-more.cl .au-more-b{display:none;}
.au-more>button{width:100%;display:flex;align-items:center;justify-content:center;gap:6px;
  border:none;border-top:1.5px solid var(--bd);background:none;padding:11px 0 2px;
  font-family:inherit;font-size:11px;font-weight:800;color:var(--dim);cursor:pointer;}
.au-more>button em{font-style:normal;font-size:14px;}
.au-more:not(.cl)>button{display:none;}

/* ===== S3 この計画の見通し(シート) ===== */
#planwhy{position:fixed;inset:0;z-index:9994;background:rgba(20,22,26,.45);
  display:flex;align-items:flex-end;justify-content:center;}
#planwhy .pw-box{width:100%;max-width:520px;max-height:88dvh;display:flex;flex-direction:column;
  background:var(--card);border:3px solid var(--navy);border-bottom:none;border-radius:26px 26px 0 0;}
#planwhy .pw-grip{display:flex;justify-content:center;padding-top:10px;}
#planwhy .pw-grip s{width:44px;height:5px;border-radius:3px;background:var(--bd);}
#planwhy .pw-h{display:flex;align-items:center;gap:10px;padding:10px 20px 12px;}
#planwhy .pw-h b{flex:1;font-size:19px;font-weight:900;color:var(--navy);letter-spacing:-.03em;}
#planwhy .pw-x2{width:32px;height:32px;border:2px solid var(--bd);border-radius:10px;background:none;
  font-size:15px;color:var(--navy);font-family:inherit;padding:0;cursor:pointer;
  display:flex;align-items:center;justify-content:center;}
#planwhy .pw-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:0 20px 10px;
  display:flex;flex-direction:column;gap:11px;}
/* 3つの数字 */
.pw-stats{display:flex;gap:8px;}
.pw-s{flex:1;height:66px;border:2px solid var(--bd);border-radius:13px;background:var(--bg);
  display:flex;flex-direction:column;gap:2px;align-items:center;justify-content:center;}
.pw-s i{font-style:normal;font-size:9.5px;font-weight:800;color:var(--dim);}
.pw-s span{display:flex;align-items:flex-end;gap:2px;}
.pw-s b{font-size:24px;font-weight:700;color:var(--navy);letter-spacing:-1px;line-height:1;}
.pw-s u{text-decoration:none;font-size:10px;font-weight:700;color:var(--dim);}
.pw-s.on{background:var(--blue-tint);border-color:var(--blue);border-width:2.5px;}
.pw-s.on i,.pw-s.on b{color:var(--blue);}
/* 推移の線 */
.pw-chart{border:2px solid var(--bd);border-radius:14px;padding:13px 14px 10px;
  display:flex;flex-direction:column;gap:6px;}
/* 合格ラインに届く日(曲線をやめてタイムラインに) */
.pr-hd{font-size:10.5px;font-weight:800;color:var(--dim);letter-spacing:.06em;}
.pr-big{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;margin-top:1px;}
.pr-big b{font-size:34px;font-weight:700;color:var(--navy);letter-spacing:-1.5px;line-height:1.1;}
.pr-big.ng b{color:var(--ng);}
.pr-big u{text-decoration:none;font-size:13px;font-weight:800;color:var(--navy);}
.pr-big i{font-style:normal;font-size:10.5px;font-weight:600;color:var(--dim);margin-left:auto;}
.pr-sub{font-size:12px;font-weight:600;color:var(--dim);line-height:1.75;margin-top:6px;}
/* 点がどう上がるか。線の形そのものが答えなので飽和も見せ、
   「どこで合格ラインを越えるか」を交点のマーカーと日付で読ませる */
.pr-cv{position:relative;height:118px;margin-top:12px;}
.pr-cv svg{display:block;width:100%;height:100%;}
.pr-rule{position:absolute;left:0;right:0;height:0;border-top:1.5px dashed var(--bd);}
.pr-pass{position:absolute;left:0;transform:translateY(3px);background:var(--flame-tint);
  color:var(--flame);border-radius:6px;padding:2px 7px;font-size:9px;font-weight:700;}
.pr-hitm{position:absolute;width:11px;height:11px;border-radius:50%;background:var(--blue);
  border:2.5px solid var(--card);box-shadow:0 0 0 1.5px var(--blue);
  transform:translate(-50%,-50%);}
.pr-hitm.ng{background:var(--ng);box-shadow:0 0 0 1.5px var(--ng);}
.pr-hitl{position:absolute;transform:translate(-50%,-190%);background:var(--navy);color:var(--card);
  border-radius:6px;padding:3px 8px;font-size:9.5px;font-weight:700;white-space:nowrap;}
.pr-hitl.ng{background:var(--ng);}
.pr-x{display:flex;margin-top:7px;}
.pr-x span{flex:1;font-size:9.5px;font-weight:700;color:var(--dim);}
.pr-x span:last-child{text-align:right;}
.pr-v{margin-top:9px;font-size:12.5px;font-weight:800;color:var(--ok);}
.pr-v b{font-size:14px;}
.pr-v.ng{color:var(--ng);}
.pr-real{display:flex;align-items:center;gap:7px;margin-top:9px;padding-top:9px;
  border-top:1.5px solid var(--bd);font-size:11px;font-weight:600;color:var(--dim);line-height:1.6;}
.pr-real b{color:var(--navy);font-weight:800;}
.pr-real s{flex:none;text-decoration:none;width:9px;height:9px;border-radius:50%;
  background:var(--card);border:2.5px solid var(--flame);}
.pr-real s.ng{border-color:var(--ng);}
.pr-real s.wait{border-color:var(--bd);}
/* どこで何点 */
.pw-qh{display:flex;align-items:flex-end;gap:8px;margin-top:3px;}
.pw-qh b{flex:1;font-size:14px;font-weight:900;color:var(--navy);letter-spacing:-.02em;}
.pw-qh i{font-style:normal;font-size:10.5px;font-weight:600;color:var(--dim);}
.at-qc.plain{border:2px solid var(--bd);}
.at-qc.plain .at-q{height:38px;}
/* フッター */
#planwhy .pw-foot{flex:none;display:flex;gap:10px;padding:12px 20px calc(16px + var(--sab,0px));
  border-top:2px solid var(--bd);background:var(--card);}
#planwhy .pw-b1{width:120px;height:52px;border:2px solid var(--bd);border-radius:13px;background:none;
  font-family:inherit;font-size:12.5px;font-weight:800;color:var(--dim);cursor:pointer;}
#planwhy .pw-b2{flex:1;height:52px;border:none;border-radius:13px;background:var(--blue);color:#fff;
  box-shadow:4px 4px 0 var(--navy);font-family:inherit;font-size:15px;font-weight:900;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:8px;}
#planwhy .pw-b2:active{transform:translateY(1px);box-shadow:3px 3px 0 var(--navy);}
#planwhy .pw-b2 .nvic{width:18px;height:18px;color:#fff;}
#planwhy .pw-b1:active{transform:translateY(1px);}

/* ===== S1/S2 計画の根拠(全画面) ===== */
.pbwrap{padding-bottom:88px;}
.pb-top{display:flex;align-items:center;gap:10px;margin:2px 0 12px;}
.pb-top b{flex:1;font-size:19px;font-weight:900;color:var(--navy);letter-spacing:-.03em;}
.pb-x{width:32px;height:32px;border:2px solid var(--bd);border-radius:10px;background:none;
  font-size:15px;color:var(--navy);font-family:inherit;padding:0;cursor:pointer;flex:none;
  display:flex;align-items:center;justify-content:center;}
.pb-pg{font-size:11px;font-weight:700;color:var(--dim);flex:none;}
.pb-lead{display:flex;flex-direction:column;gap:4px;margin-bottom:11px;}
.pb-lead b{font-size:20px;font-weight:900;color:var(--navy);letter-spacing:-.03em;line-height:1.4;}
.pb-lead i{font-style:normal;font-size:11px;font-weight:600;color:var(--dim);}
/* フッター(画面下に固定) */
/* タブバー(高さ約62px+安全余白)の上に置く。隠すとタブが戻らない事故があるため重ねない */
.pb-foot{position:fixed;left:0;right:0;bottom:calc(62px + var(--sab,0px));z-index:71;
  display:flex;gap:10px;padding:12px 16px;
  background:var(--card);border-top:2px solid var(--bd);}
.pb-b1{width:130px;height:52px;border:2px solid var(--bd);border-radius:13px;background:none;
  font-family:inherit;font-size:12.5px;font-weight:800;color:var(--dim);cursor:pointer;}
.pb-b2{flex:1;height:52px;border:none;border-radius:13px;background:var(--blue);color:#fff;
  box-shadow:4px 4px 0 var(--navy);font-family:inherit;font-size:15px;font-weight:900;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:8px;}
.pb-b2 .nvic{width:18px;height:18px;color:#fff;}
.pb-b1:active,.pb-b2:active{transform:translateY(1px);}
.pw-nt{display:flex;align-items:center;gap:10px;}
.pw-nt p{flex:1;min-width:0;margin:0;font-size:10px;font-weight:500;color:var(--dim);}
.pw-nt button{flex:none;border:none;background:none;font-family:inherit;font-size:11px;
  font-weight:800;color:var(--blue);cursor:pointer;padding:2px 0;}

/* ===== どこで何点を取るか: 大問ごとに1行 =====
   棒の全体はその大問の配点。濃い青=いま、淡い青=ここで伸ばす、縦線=目標。
   満点が大問ごとに違うので、行をまたいで長さを比べさせない。
   読ませたいのは右の「いま → 目標」と「+n」のほう。 */
.al{background:var(--card);border:2px solid var(--bd);border-radius:14px;padding:4px 14px 12px;}
.al-r{padding:12px 0;}
.al-r+.al-r{border-top:1.5px solid var(--bd);}
.al-h{display:flex;align-items:baseline;gap:7px;margin-bottom:9px;}
.al-h b{font-size:14.5px;font-weight:900;color:var(--navy);letter-spacing:-.02em;}
.al-h em{font-style:normal;font-size:10.5px;font-weight:700;color:var(--dim);}
.al-n{margin-left:auto;font-size:12.5px;font-weight:800;color:var(--navy);white-space:nowrap;}
.al-n s{text-decoration:none;color:var(--dim);font-weight:700;margin:0 1px;}
.al-h u{text-decoration:none;flex:none;font-size:11px;font-weight:800;color:var(--blue);
  background:var(--blue-tint);border-radius:6px;padding:3px 7px;}
.al-h u.on{background:var(--blue);color:#FFFFFF;}
.al-h u.z{background:none;color:var(--dim);padding-left:2px;padding-right:2px;}

.al-tr{position:relative;display:flex;height:9px;border-radius:5px;background:var(--bg);
  box-shadow:inset 0 0 0 1.5px var(--bd);overflow:visible;}
.al-tr i{display:block;height:100%;min-width:0;}
.al-tr i.al-cur{background:var(--blue);border-radius:5px 0 0 5px;}
.al-tr i.al-add{background:var(--blue-tint);}
.al-tr i.al-cur:only-child,.al-tr i.al-add:last-child{border-radius:5px;}
/* 目標の位置。棒より少し背を高くして、目盛りだと分かるようにする */
.al-goal{position:absolute;top:-4px;bottom:-4px;width:0;text-decoration:none;
  border-left:2px solid var(--navy);}

.al-lg{display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding-top:11px;border-top:1.5px solid var(--bd);}
.al-lg span{display:flex;align-items:center;gap:5px;font-size:10px;font-weight:800;color:var(--navy);}
.al-lg s{text-decoration:none;flex:none;width:10px;height:10px;border-radius:3px;}
.al-lg s.al-cur{background:var(--blue);}
.al-lg s.al-add{background:var(--blue-tint);}
.al-lg i{margin-left:auto;font-style:normal;font-size:9.5px;font-weight:700;color:var(--dim);}

/* ===== 連続記録の祝い(全画面)をv2に。ここだけ旧オレンジのままだった ===== */
html.sunset .nvst-top{background:none;padding:calc(28px + var(--sat,0px)) 20px 8px;
  align-items:flex-end;}
html.sunset .nvst-n b{font-size:74px;font-weight:700;color:var(--navy);line-height:1;
  text-shadow:none;letter-spacing:-4px;font-family:ui-monospace,'SF Mono',Menlo,monospace;}
html.sunset .nvst-n i{font-size:20px;font-weight:900;color:var(--navy);margin-top:2px;}
html.sunset .nvst-fire{font-size:60px;filter:none;}
html.sunset .nvst-body{padding:16px 20px 0;}
html.sunset .nvst-mon{font-size:14px;font-weight:900;color:var(--navy);}
html.sunset .nvst-wk span{font-size:10px;font-weight:800;color:var(--dim);}
html.sunset .nvst-cal span{font-size:12.5px;font-weight:700;color:var(--tx2);border-radius:10px;}
html.sunset .nvst-cal span.on{background:var(--gold);color:#5C4300;}
html.sunset .nvst-cal span.td{outline:2.5px solid var(--blue);outline-offset:-2.5px;}
/* ログイン日数(E2)も同じ地色に揃える */
html.sunset #lgv .lg-n b{font-family:ui-monospace,'SF Mono',Menlo,monospace;letter-spacing:-3px;}
html.sunset #lgv .lg-n i{color:var(--navy);}

/* ===== HUD v2: 囲みを外し、炎とプラスを立たせる ===== */
.nvp.lvp{gap:8px;}
.nvp.lvp i{font-size:12.5px;font-weight:700;color:var(--navy);}
.nvp.lvp u{width:52px;height:7px;border-radius:4px;background:var(--bd);}
.nvp.lvp em{font-size:12px;font-weight:700;color:var(--navy);}
.nvp.lvp em s{text-decoration:none;color:var(--dim);font-weight:600;}
/* 連続日数: 囲みなし。炎と数字だけで立たせる */
.nvstk{display:inline-flex;align-items:center;gap:3px;background:none;border:none;padding:2px 4px;
  font-family:inherit;cursor:pointer;flex:none;}
.nvstk em{font-style:normal;font-size:22px;line-height:1;}
.nvstk b{font-size:19px;font-weight:800;color:var(--streak,var(--flame));letter-spacing:-.02em;}
.nvstk:active{transform:scale(.94);}
.nvstk.warn{opacity:.5;}
/* ログインボーナス: 囲みなし。受け取れるときだけ出て、赤い点で気づかせる */
.nvgift{position:relative;background:none;border:none;padding:2px 4px;cursor:pointer;flex:none;
  display:inline-flex;align-items:center;}
.nvgift .nvic{width:23px;height:23px;color:var(--gold);}
.nvgift .nvic *{stroke-width:1.9;}
.nvgift s{position:absolute;top:0;right:1px;width:8px;height:8px;border-radius:50%;
  background:var(--ng);text-decoration:none;}
.nvgift:active{transform:scale(.94);}
/* プラス: いちばんアピールしたいので、囲みでなく金のピルにする */
/* ホログラムの王冠は金地だと右半分(黄)が沈むので、地は墨にして虹を立たせる */
.nvprem{display:inline-flex;align-items:center;gap:6px;flex:none;cursor:pointer;
  background:var(--navy);border:none;border-radius:999px;padding:6px 13px 6px 9px;font-family:inherit;}
.nvprem .bic{width:17px;height:17px;}
.nvprem b{font-size:12px;font-weight:900;color:#FFFFFF;letter-spacing:.02em;}
.nvprem:active{transform:translateY(1px);}
/* 加入済みには売り込まない。囲みを外して静かな状態表示にする */
.nvprem.on{background:none;border:2px solid var(--tx2);padding:4px 11px 4px 7px;}
.nvprem.on b{color:var(--navy);}

/* ===== 解答中の残り時間: 針が一周して制限時間 ===== */
.nsh-clock{flex:none;width:30px;height:30px;display:block;}
.nsh-clock svg{width:100%;height:100%;display:block;overflow:visible;}
.nsh-clock .tr{fill:none;stroke:var(--bd);stroke-width:3;}
.nsh-clock .fg{fill:none;stroke:var(--blue);stroke-width:3;stroke-linecap:round;
  transform:rotate(-90deg);transform-origin:50% 50%;transform-box:view-box;}
.nsh-clock .hand{stroke:var(--navy);stroke-width:2.2;stroke-linecap:round;
  transform-origin:50% 50%;transform-box:view-box;}
.nsh-clock .pin{fill:var(--navy);}
.nsh-clock.low .fg{stroke:var(--ng);}
.nsh-clock.low .hand,.nsh-clock.low .pin{stroke:var(--ng);fill:var(--ng);}
.nsh-clock.low{animation:nshTick 1s steps(2) infinite;}
@keyframes nshTick{50%{opacity:.55}}
@media (prefers-reduced-motion:reduce){.nsh-clock.low{animation:none;}}


/* S3 から きょうのならび(C5) へ降りる */
.pw-tasks{width:100%;height:46px;display:flex;align-items:center;gap:9px;padding:0 13px;
  background:var(--bg);border:2px solid var(--bd);border-radius:12px;
  font-family:inherit;text-align:left;cursor:pointer;}
.pw-tasks b{flex:1;min-width:0;font-size:12.5px;font-weight:800;color:var(--navy);}
.pw-tasks .nvic{width:17px;height:17px;color:var(--dim);flex:none;}
.pw-tasks:active{transform:translateY(1px);}

/* ===== ブランドの表情アイコン(.bic) =====================================
   .nvic は単色ライン専用(fill:none / stroke:currentColor を全要素に強制)なので
   色を持つ絵は乗らない。こちらはシンボル側の塗りをそのまま活かす別系統。 */
.bic{width:22px;height:22px;display:inline-block;vertical-align:-4px;flex:none;}
.bic.off{filter:grayscale(1);opacity:.35;}
/* 差し替え先ごとの大きさ */
.nvstk .bic{width:27px;height:27px;vertical-align:-6px;}
.npb-goal .bic{width:20px;height:20px;vertical-align:-5px;}
.tlmed .bic{width:15px;height:15px;vertical-align:-3px;margin-right:1px;}
.tln.med .bic{width:34px;height:34px;}
.mtoast .bic{width:18px;height:18px;vertical-align:-4px;margin-right:3px;}
.stk-fire .bic,.nvst-fire .bic{width:56px;height:56px;vertical-align:0;}
#nvsolvehead .nsh-heart{width:20px;height:20px;vertical-align:-4px;}
.btlives .bth{width:15px;height:15px;margin-right:1px;}

/* ===== 誤りの報告・要望 ==========================================
   利用者の声が届く唯一の経路。フッターとマイページの両方から開く。
   下から出すシートにして、書きかけでも閉じやすくしている */
.fb-ovl{position:fixed;inset:0;z-index:9997;background:rgba(20,22,26,.45);
  display:flex;align-items:flex-end;justify-content:center;
  animation:fbin .18s ease-out;}
@keyframes fbin{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.fb-ovl,.fb-card{animation:none!important}}
.fb-card{width:100%;max-width:520px;background:var(--card,#fff);
  border:3px solid var(--navy,#14161A);border-radius:22px 22px 0 0;
  padding:16px 18px calc(18px + env(safe-area-inset-bottom,0px));
  display:flex;flex-direction:column;gap:12px;
  max-height:86vh;overflow-y:auto;-webkit-overflow-scrolling:touch;
  animation:fbup .22s cubic-bezier(.2,.9,.3,1);}
@keyframes fbup{from{transform:translateY(24px)}to{transform:translateY(0)}}
.fb-head{display:flex;align-items:center;gap:10px;}
.fb-head b{flex:1;font-size:17px;font-weight:900;color:var(--navy);letter-spacing:-.02em;}
.fb-x{width:34px;height:34px;flex:none;border:2px solid var(--bd);border-radius:10px;
  background:none;font-size:16px;line-height:1;color:var(--navy);}
.fb-x:active{opacity:.5;}
.fb-kinds{display:flex;flex-wrap:wrap;gap:7px;}
.fb-k{flex:1 1 auto;min-width:calc(50% - 4px);padding:9px 10px;
  border:2px solid var(--bd);border-radius:11px;background:var(--card);
  font-size:12.5px;font-weight:700;color:var(--tx2);text-align:center;}
.fb-k.on{border-color:var(--blue);color:var(--blue);background:var(--lt);}
.fb-k:active{transform:translateY(1px);}
.fb-body{width:100%;min-height:118px;resize:vertical;font-family:inherit;
  font-size:14.5px;line-height:1.7;color:var(--navy);background:var(--lt);
  border:2px solid var(--bd);border-radius:12px;padding:11px 12px;}
.fb-body:focus{outline:none;border-color:var(--blue);}
.fb-note{font-size:11px;line-height:1.7;color:var(--dim);}
.fb-send{width:100%;padding:14px;border:none;border-radius:13px;
  background:var(--blue);color:#fff;font-size:15px;font-weight:900;font-family:inherit;}
.fb-send:active{transform:translateY(1px);}
.fb-send:disabled{opacity:.55;}

/* 契約の管理シート（誤りの報告と同じ器を使う） */
.mgr-row{display:flex;align-items:baseline;gap:10px;padding:11px 2px;
  border-bottom:1px solid var(--bd);font-size:14px;}
.mgr-row:last-of-type{border-bottom:none;}
.mgr-row span{flex:1;color:var(--tx2);font-size:13px;}
.mgr-row b{font-weight:800;color:var(--navy);}

/* LP の先頭。すでに使っている人がブックマークで来たときの戻り道 */
.lp-resume{display:flex;align-items:center;gap:12px;margin:0 auto 14px;max-width:560px;
  background:var(--card,#fff);border:3px solid var(--navy);border-radius:16px;
  box-shadow:4px 4px 0 var(--navy);padding:13px 16px;text-decoration:none;color:var(--navy);}
.lp-resume b{font-size:15px;font-weight:900;}
.lp-resume span{flex:1;font-size:11.5px;color:var(--tx2);line-height:1.5;}
.lp-resume i{font-style:normal;font-size:19px;font-weight:900;color:var(--blue);}
.lp-resume:active{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--navy);}

/* LP の副導線。いきなり解き始めたくない人の行き場。
   最初は下線テキストにしていたが、上の主CTAが大きいぶん見落とす。
   押せると分かる大きさと形にした */
.lp-sub{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  margin-top:11px;min-height:46px;padding:0 22px;border-radius:12px;
  background:var(--card,#fff);border:2px solid var(--bd);
  font-size:14px;font-weight:800;color:var(--navy);text-decoration:none;cursor:pointer;}
.lp-sub::after{content:"→";font-weight:900;color:var(--tx2);}
.lp-sub:hover{border-color:var(--blue);color:var(--blue);}
.lp-sub:hover::after{color:var(--blue);}
.lp-sub:active{transform:translateY(1px);}

/* ミス種別のアイコン。文字と同じ行に並ぶので、行の高さに合わせる */
.nvic.mic{width:15px;height:15px;vertical-align:-3px;margin-right:5px;flex:none;}
/* 順位1位のメダル */
.rgold .bic{width:19px;height:19px;vertical-align:-4px;}
/* 電卓ボタンの中身 */
.calcbtn .nvic{width:22px;height:22px;color:currentColor;}

/* 到達予測の一言。状態は色で言い分ける（正=緑 / 注意=赤 / それ以外=青） */
.stdy-eta .nvic{width:19px;height:19px;flex:none;color:var(--blue);}
.stdy-eta.ok .nvic{color:var(--ok);}
.stdy-eta.ng .nvic{color:var(--ng);}
/* 分析ロックの見出しアイコン */
.nvsoon-i .nvic{width:34px;height:34px;color:var(--dim);}

/* ===== お知らせの帯 =====================================
   障害の告知やアップデートの案内。閉じたものは二度と出さない
   （出しっぱなしにすると、次のお知らせに気づかなくなる） */
.news-bar{position:fixed;left:0;right:0;top:0;z-index:9200;
  display:flex;align-items:flex-start;gap:11px;
  padding:calc(11px + var(--sat,env(safe-area-inset-top,0px))) 14px 12px;
  background:var(--navy);color:#fff;
  box-shadow:0 3px 14px rgba(0,0,0,.18);
  animation:newsin .22s cubic-bezier(.2,.9,.3,1);}
@keyframes newsin{from{transform:translateY(-100%)}to{transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.news-bar{animation:none}}
.news-bar.warn{background:#8A4A00;}
.news-bar.maint{background:var(--ng);}
.news-ic{flex:none;padding-top:1px;}
.news-ic .nvic{width:19px;height:19px;color:#fff;}
.news-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.news-tx b{font-size:13.5px;font-weight:800;line-height:1.5;}
.news-tx i{font-style:normal;font-size:11.5px;line-height:1.6;color:rgba(255,255,255,.78);}
.news-x{flex:none;width:28px;height:28px;border:none;background:none;
  color:rgba(255,255,255,.7);font-size:15px;line-height:1;cursor:pointer;font-family:inherit;}
.news-x:active{opacity:.5;}
/* 広い画面ではサイドバーを避けて、本文の幅に収める */
@media(min-width:1000px){
  html.v2:not(.lp) body .news-bar{left:var(--sbw,216px);}
}

/* ===== 実績 =====
   数えているものごとに1本の道。中を4段(銅・銀・金・虹)で刻む。
   どの道にも「次の段まであと◯」が必ず出るようにしてある */
.ach{display:flex;flex-direction:column;gap:10px;}
.ach-sum{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;
  background:var(--card);border:2px solid var(--bd);border-radius:14px;padding:13px 15px;}
.ach-sum b{font-size:26px;font-weight:900;color:var(--navy);letter-spacing:-.03em;}
.ach-sum i{font-style:normal;font-size:12px;font-weight:700;color:var(--dim);}
.ach-sum span{flex-basis:100%;font-size:11px;font-weight:600;color:var(--dim);line-height:1.7;}
.ach-r{display:flex;gap:12px;background:var(--card);border:2px solid var(--bd);
  border-radius:14px;padding:13px 15px;}
.ach-r.done{border-color:var(--gold);}
.ach-ic{flex:none;width:38px;height:38px;border-radius:12px;background:var(--bg);
  display:flex;align-items:center;justify-content:center;}
.ach-ic .nvic{width:19px;height:19px;color:var(--blue);}
.ach-r.done .ach-ic{background:var(--flame-tint);}
.ach-r.done .ach-ic .nvic{color:#7A5200;}
.ach-b{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px;}
.ach-h{display:flex;align-items:center;gap:9px;}
.ach-h b{flex:1;min-width:0;font-size:14px;font-weight:900;color:var(--navy);}
.ach-d{flex:none;display:flex;gap:4px;}
.ach-d s{text-decoration:none;width:9px;height:9px;border-radius:3px;background:var(--bd);}
.ach-d s.t0{background:#B06A2C;} .ach-d s.t1{background:#A7ADB8;}
.ach-d s.t2{background:var(--gold);} .ach-d s.t3{background:var(--blue);}
.ach-b>i{font-style:normal;font-size:11px;font-weight:600;color:var(--dim);line-height:1.6;}
.ach-bar{display:block;height:8px;border-radius:4px;background:var(--bg);
  box-shadow:inset 0 0 0 1.5px var(--bd);overflow:hidden;}
.ach-bar u{display:block;height:100%;border-radius:4px;background:var(--blue);text-decoration:none;}
.ach-r.done .ach-bar u{background:var(--gold);}
.ach-b>em{font-style:normal;font-size:10.5px;font-weight:700;color:var(--navy);}
.rk-seg2{margin-bottom:12px;}
.av-need2{margin-top:14px;}
/* 日付を入れる選択肢。中身を入れ替えても札と字の並びを保つ */
.ob-opt.ob-date .ob-ot input{width:100%;border:none;background:none;font-family:inherit;
  font-size:15px;font-weight:800;color:var(--navy);padding:0;}

/* 腕だめし(オンボーディング内)の正誤 */
.ob-opt.ok{border-color:var(--ok);box-shadow:0 3px 0 var(--ok);background:rgba(23,122,87,.08);}
.ob-opt.ng{border-color:var(--ng);box-shadow:0 3px 0 var(--ng);background:rgba(192,57,43,.07);}
.ob-opt[disabled]{cursor:default;}
.ob-otag.ok{background:var(--ok);}
.ob-exp{margin-top:14px;background:var(--card);border:2px solid var(--bd);border-radius:14px;
  padding:13px 15px;font-size:12.5px;font-weight:600;color:var(--navy);line-height:1.85;}
/* 無料とプラスの見くらべ */
.ob-cmp{margin-top:18px;background:var(--card);border:2px solid var(--bd);border-radius:16px;
  padding:4px 14px;}
.ob-cmph,.ob-cmpr{display:flex;align-items:center;gap:10px;padding:10px 0;}
.ob-cmpr+.ob-cmpr,.ob-cmph+.ob-cmpr{border-top:1.5px solid var(--bd);}
.ob-cmph span,.ob-cmpr span{flex:1;min-width:0;font-size:12.5px;font-weight:700;color:var(--navy);}
.ob-cmph i,.ob-cmpr i,.ob-cmph u,.ob-cmpr u{flex:none;width:66px;text-align:center;
  font-style:normal;text-decoration:none;font-size:11.5px;font-weight:700;color:var(--dim);}
.ob-cmph i,.ob-cmph u{font-size:10.5px;font-weight:800;}
.ob-cmph u,.ob-cmpr u{color:var(--blue);font-weight:800;}

/* ===== オンボーディング F1〜F10 (bokiinu2.pen) ===================== */
.ob-body.top{justify-content:flex-start;padding-top:14px;}
/* 進み。しつもんは4分割、1問目は細い帯 */
.ob-qbar{flex:1;display:flex;gap:5px;}
.ob-qbar s{flex:1;text-decoration:none;height:6px;border-radius:3px;background:var(--bd);
  transition:background .25s ease;}
.ob-qbar s.on{background:var(--navy);}
.ob-bar2{flex:1;height:6px;border-radius:3px;background:var(--bd);overflow:hidden;}
.ob-bar2 i{display:block;height:100%;border-radius:3px;background:var(--blue);}
.ob-hd em{font-style:normal;font-size:11px;font-weight:700;color:var(--dim);flex:none;}
/* 見出し */
.ob-logo{display:flex;align-items:center;gap:6px;justify-content:center;
  font-size:12px;font-weight:700;color:var(--dim);margin-bottom:10px;}
.ob-logo s{text-decoration:none;width:10px;height:10px;border-radius:4px;background:var(--gold);}
.ob-h2{font-size:28px;font-weight:900;color:var(--navy);letter-spacing:-.03em;
  line-height:1.35;margin:0;}
.ob-lead2{font-size:12.5px;font-weight:600;color:var(--dim);margin:8px 0 0;line-height:1.7;}
.ob-qn{font-size:11px;font-weight:700;color:var(--dim);margin-bottom:8px;}
/* F2 1問だけ */
.ob-qcard{background:var(--card);border:3px solid var(--navy);border-radius:20px;
  padding:20px;margin-top:18px;text-align:center;}
.ob-qcard i{display:block;font-style:normal;font-size:12px;font-weight:700;color:var(--dim);}
.ob-qcard b{display:block;font-size:34px;font-weight:900;color:var(--navy);
  letter-spacing:-.03em;margin-top:6px;line-height:1.25;}
.ob-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px;}
.ob-g{height:56px;border:2px solid var(--bd);border-radius:14px;background:var(--card);
  font-family:inherit;font-size:15px;font-weight:800;color:var(--navy);cursor:pointer;}
.ob-g:last-child{grid-column:1 / -1;}
.ob-g.ok{border-color:var(--ok);background:rgba(23,122,87,.08);color:var(--ok);}
.ob-g.ng{border-color:var(--ng);background:rgba(192,57,43,.07);color:var(--ng);}
.ob-g[disabled]{cursor:default;}
.ob-skip{text-align:center;padding-top:10px;}
.ob-skip a{font-size:12.5px;font-weight:700;color:var(--dim);cursor:pointer;text-decoration:underline;}
/* 選ぶ札 */
.ob-o{display:flex;align-items:center;gap:12px;width:100%;text-align:left;
  background:var(--card);border:2px solid var(--bd);border-radius:18px;
  padding:14px;font-family:inherit;cursor:pointer;}
.ob-o.on{border-color:var(--navy);border-width:3px;padding:13px;}
.ob-o .ob-oi{flex:none;width:44px;height:44px;border-radius:14px;background:var(--bg);
  display:flex;align-items:center;justify-content:center;font-size:20px;line-height:1;}
.ob-o .ob-oi.on{background:var(--blue-tint);}
.ob-o .ob-oi .nvic{width:20px;height:20px;color:var(--navy);}
.ob-o .ob-oi.on .nvic{color:var(--blue);}
.ob-or{flex:none;width:24px;height:24px;border-radius:12px;border:2px solid var(--bd);
  display:flex;align-items:center;justify-content:center;}
.ob-or.on{background:var(--blue);border-color:var(--blue);}
.ob-or .nvic{width:14px;height:14px;color:#FFFFFF;}
.ob-onote{margin:6px 0 0 14px;font-size:11.5px;font-weight:600;color:var(--dim);}
.ob-opts.tight{gap:8px;}
.ob-opts.tight .ob-o{border-radius:14px;padding:12px 14px;}
.ob-opts.tight .ob-o.on{padding:11px 13px;}
.ob-opts.tight .ob-oi{width:34px;height:34px;border-radius:11px;font-size:17px;}
/* F4a 日付 */
.ob-dt{background:var(--card);border:3px solid var(--navy);border-radius:18px;
  padding:16px;margin-top:16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.ob-dt b{flex:1;min-width:0;font-size:22px;font-weight:700;color:var(--navy);
  letter-spacing:-.02em;white-space:nowrap;}
.ob-dt span{flex:none;background:var(--blue-tint);border-radius:10px;padding:6px 10px;
  font-size:12px;font-weight:800;color:var(--blue);}
.ob-cal{background:var(--card);border:2px solid var(--bd);border-radius:16px;
  padding:12px;margin-top:11px;}
.ob-calh{display:flex;align-items:center;gap:10px;padding-bottom:8px;}
.ob-calh b{flex:1;text-align:center;font-size:13.5px;font-weight:900;color:var(--navy);}
.ob-calh button{border:none;background:none;cursor:pointer;padding:4px;display:flex;color:var(--dim);}
.ob-calh button .nvic{width:18px;height:18px;color:currentColor;}
.ob-calh button:first-child .nvic{transform:rotate(180deg);}
.ob-calw,.ob-calg{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;}
.ob-calw i{font-style:normal;text-align:center;font-size:9.5px;font-weight:700;color:var(--dim);
  padding-bottom:4px;}
.ob-calg button,.ob-calg s{height:36px;border:none;background:none;border-radius:11px;
  font-family:inherit;font-size:11.5px;font-weight:600;color:var(--navy);cursor:pointer;}
.ob-calg s{text-decoration:none;display:block;}
.ob-calg button.off{color:var(--bd);cursor:default;}
.ob-calg button.on{background:var(--blue);color:#FFFFFF;font-weight:800;}
/* F4b 時間 */
.ob-sl{background:var(--card);border:2px solid var(--bd);border-radius:16px;
  padding:14px 15px;margin-top:12px;}
.ob-slh{display:flex;align-items:flex-end;gap:10px;}
.ob-slh>span:first-child{flex:1;display:flex;flex-direction:column;}
.ob-slh b{font-size:14px;font-weight:900;color:var(--navy);}
.ob-slh i{font-style:normal;font-size:10.5px;font-weight:600;color:var(--dim);}
.ob-slv{display:flex;align-items:baseline;gap:3px;}
.ob-slv b{font-size:28px;font-weight:700;color:var(--blue);letter-spacing:-.02em;}
.ob-slv u{text-decoration:none;font-size:12.5px;font-weight:800;color:var(--navy);}
.ob-sl input[type=range]{width:100%;margin:12px 0 4px;accent-color:var(--blue);}
.ob-slt{display:flex;justify-content:space-between;}
.ob-slt i{font-style:normal;font-size:9.5px;font-weight:700;color:var(--bd);}
.ob-prev{background:var(--blue-tint);border-radius:16px;padding:13px 15px;margin-top:12px;
  display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;}
.ob-prev b{flex-basis:100%;font-size:10.5px;font-weight:800;color:var(--blue);}
.ob-prev span{font-size:10px;font-weight:700;color:var(--blue);}
.ob-prev i{font-style:normal;font-size:18px;font-weight:700;color:var(--navy);margin-right:3px;}
.ob-prev em{flex-basis:100%;font-style:normal;font-size:10.5px;font-weight:600;color:var(--blue);}
/* F5 目標点 */
.ob-go2{display:flex;align-items:center;gap:12px;width:100%;text-align:left;
  background:var(--card);border:2px solid var(--bd);border-radius:16px;
  padding:12px 14px;font-family:inherit;cursor:pointer;}
.ob-go2.on{border-color:var(--navy);border-width:3px;padding:11px 13px;}
.ob-gn{flex:none;width:56px;display:flex;align-items:baseline;gap:2px;}
.ob-gn b{font-size:30px;font-weight:700;color:var(--navy);letter-spacing:-.03em;}
.ob-go2.on .ob-gn b{color:var(--blue);}
.ob-gn u{text-decoration:none;font-size:11px;font-weight:800;color:var(--dim);}
.ob-rec{text-decoration:none;background:var(--blue);border-radius:6px;padding:2px 6px;
  font-size:9.5px;font-weight:800;color:#FFFFFF;margin-left:6px;vertical-align:2px;}
/* F7 計画 */
.ob-sug{display:flex;align-items:center;gap:12px;background:var(--flame-tint);
  border:2px solid var(--gold);border-radius:16px;padding:13px 14px;margin-top:16px;}
.ob-sugi{flex:none;font-size:20px;line-height:1;}
.ob-sug .ob-ot b{color:#7A5200;font-size:10.5px;font-weight:800;}
.ob-sug .ob-ot i{color:#14161A;font-size:16px;font-weight:700;}
.ob-sug button{flex:none;border:none;border-radius:10px;background:#14161A;padding:9px 12px;
  font-family:inherit;font-size:12px;font-weight:800;color:#FFFFFF;cursor:pointer;}
.ob-sug button.off{opacity:.35;pointer-events:none;}
.ob-pc{background:var(--card);border:3px solid var(--navy);border-radius:18px;
  padding:15px;margin-top:12px;}
.ob-pch{display:flex;align-items:flex-end;gap:10px;}
.ob-pch i{flex:1;font-style:normal;font-size:11px;font-weight:700;color:var(--dim);}
.ob-pch b{font-size:30px;font-weight:700;color:var(--blue);letter-spacing:-.03em;}
.ob-pch u{text-decoration:none;font-size:12px;font-weight:800;color:var(--navy);margin-left:2px;}
.ob-pcb{position:relative;display:block;height:14px;border-radius:7px;background:var(--bg);
  box-shadow:inset 0 0 0 1.5px var(--bd);overflow:hidden;margin-top:12px;}
.ob-pcb i{display:block;height:100%;border-radius:7px;background:var(--blue);}
.ob-pcb s{position:absolute;top:0;bottom:0;width:0;text-decoration:none;
  border-left:2px dashed var(--navy);opacity:.45;}
.ob-pcl{display:flex;justify-content:space-between;margin-top:5px;}
.ob-pcl i{font-style:normal;font-size:9.5px;font-weight:700;color:var(--dim);}
.ob-st3{display:flex;gap:9px;margin-top:12px;}
.ob-st3 span{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;
  background:var(--card);border:2px solid var(--bd);border-radius:14px;padding:12px 4px;}
.ob-st3 b{font-size:19px;font-weight:700;color:var(--navy);}
.ob-st3 i{font-style:normal;font-size:10px;font-weight:700;color:var(--dim);}
/* F8 通知 */
.ob-why{background:var(--card);border:3px solid var(--navy);border-radius:16px;
  padding:14px 15px;margin-top:16px;}
.ob-why b{display:block;font-size:14px;font-weight:800;color:var(--navy);line-height:1.7;}
.ob-why i{display:block;font-style:normal;font-size:12px;font-weight:600;color:var(--dim);
  line-height:1.8;margin-top:4px;}
.ob-hl{margin-top:14px;}
.ob-hl>span{display:block;font-size:10px;font-weight:800;color:var(--dim);margin-bottom:7px;}
.ob-hl>div{display:flex;gap:8px;}
.ob-hl button{flex:1;height:44px;border:2px solid var(--bd);border-radius:13px;
  background:var(--card);font-family:inherit;font-size:13px;font-weight:700;
  color:var(--dim);cursor:pointer;}
.ob-hl button.on{background:var(--navy);border-color:var(--navy);color:var(--card);}
.ob-note{display:flex;align-items:center;gap:8px;background:var(--blue-tint);border-radius:14px;
  padding:12px 14px;margin-top:12px;font-size:11.5px;font-weight:800;color:var(--blue);}
.ob-note .nvic{width:17px;height:17px;color:currentColor;flex:none;}
/* F9 アカウント */
.ob-acts{display:flex;flex-direction:column;gap:10px;margin-top:16px;}
#onb .ac-vis{display:flex;align-items:center;gap:10px;margin-top:18px;}
#onb .ac-v{flex:1;min-width:0;height:52px;border-radius:14px;background:var(--card);
  border:2px solid var(--bd);display:flex;align-items:center;justify-content:center;gap:8px;
  font-size:11.5px;font-weight:700;color:var(--dim);}
#onb .ac-v .nvic{width:17px;height:17px;color:currentColor;}
#onb .ac-v.on{background:var(--blue-tint);border-color:var(--blue);color:var(--blue);font-weight:800;}
#onb .ac-ar{flex:none;width:20px;height:20px;color:var(--navy);}
#onb .ac-g{height:56px;border:3px solid var(--navy);border-radius:14px;background:var(--card);
  font-family:inherit;font-size:15px;font-weight:900;color:var(--navy);cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:10px;}
#onb .ac-g s{text-decoration:none;width:20px;height:20px;border-radius:10px;
  background:conic-gradient(#EA4335 0 25%,#FBBC05 0 50%,#34A853 0 75%,#4285F4 0);}
.ob-mail{height:52px;border:2px solid var(--bd);border-radius:14px;background:var(--card);
  font-family:inherit;font-size:13.5px;font-weight:800;color:var(--navy);cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:8px;}
.ob-mail .nvic{width:17px;height:17px;color:var(--dim);}
.ob-restore{height:44px;border:none;border-top:1.5px solid var(--bd);border-radius:0;
  background:none;font-family:inherit;font-size:12.5px;font-weight:700;color:var(--dim);
  cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:4px;}
.ob-restore .nvic{width:16px;height:16px;color:currentColor;}
.ob-sub2 a{cursor:pointer;}

/* ===== オンボーディング G1〜G10 (bokiinu2.pen) =====================
   ボタンの中の見出しは、地の色を継ぐ */
#onb .ob-ot b{color:var(--navy);}
#onb .ob-ot i{color:var(--dim);}
   ふきだしは犬の上、しっぽは左下。犬が言っているように見せる */
#onb .ob-say{display:flex;flex-direction:column;align-items:flex-start;gap:0;}
#onb .ob-bub{border:3px solid var(--navy);border-radius:20px 20px 20px 6px;
  padding:18px 20px;font-size:19px;font-weight:900;line-height:1.65;color:var(--navy);
  align-self:flex-start;}
#onb .ob-bub.big{font-size:19px;}
#onb .ob-bub::after{display:none;}
#onb .ob-dog{align-self:flex-start;margin:-2px 0 0 6px;}
#onb .ob-hero{text-align:left;}
#onb .ob-hero .ob-h1,#onb .ob-hero .ob-lead{text-align:left;}
#onb .ob-hero .ob-dog.big{justify-content:flex-start;margin-bottom:14px;}
.ob-dots{display:flex;gap:6px;margin-top:20px;}
.ob-dots s{text-decoration:none;width:22px;height:6px;border-radius:3px;background:var(--bd);}
.ob-dots s.on{background:var(--blue);}
/* 選んだ答えの控え */
.ob-ans{display:flex;align-items:center;gap:8px;background:var(--card);
  border:2px solid var(--bd);border-radius:10px;padding:9px 12px;margin-bottom:18px;}
.ob-ans .nvic{width:16px;height:16px;color:var(--blue);flex:none;}
.ob-ans i{font-style:normal;font-size:10.5px;font-weight:700;color:var(--dim);}
.ob-ans b{font-size:11.5px;font-weight:900;color:var(--navy);}
/* 流入元。2列 */
.ob-sgrid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:16px;}
.ob-s{display:flex;align-items:center;gap:8px;height:52px;padding:0 12px;
  background:var(--card);border:2px solid var(--bd);border-radius:14px;
  font-family:inherit;font-size:11.5px;font-weight:800;color:var(--navy);cursor:pointer;
  text-align:left;}
.ob-s .nvic{width:17px;height:17px;color:var(--navy);flex:none;}
.ob-s.on{border-color:var(--navy);border-width:3px;padding:0 11px;}
.ob-s.on .nvic{color:var(--blue);}
/* 通知の見本 */
.ob-push{display:flex;gap:11px;background:var(--card);border:3px solid var(--navy);
  border-radius:18px;padding:14px;margin-top:16px;}
.ob-pi{flex:none;width:40px;height:40px;border-radius:12px;background:var(--blue);
  display:flex;align-items:center;justify-content:center;}
.ob-pi .nvic{width:20px;height:20px;color:#FFFFFF;}
.ob-pt{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;}
.ob-ph{display:flex;align-items:baseline;gap:8px;}
.ob-ph b{font-size:12px;font-weight:900;color:var(--navy);}
.ob-ph i{font-style:normal;font-size:10px;font-weight:600;color:var(--bd);}
.ob-pt em{font-style:normal;font-size:12px;font-weight:600;color:var(--navy);line-height:1.6;}
/* 1か月でここまで */
.ob-mc{background:var(--card);border:3px solid var(--navy);border-radius:18px;
  padding:15px;margin-top:16px;}
.ob-mg{position:relative;height:92px;}
.ob-mg svg{width:100%;height:92px;overflow:visible;}
.ob-mg .ln{fill:none;stroke:var(--blue);stroke-width:3;stroke-linejoin:round;stroke-linecap:round;
  vector-effect:non-scaling-stroke;}
.ob-mg .pl{stroke:var(--bd);stroke-width:2;stroke-dasharray:5 4;vector-effect:non-scaling-stroke;}
.ob-mp{position:absolute;right:0;top:0;font-size:9.5px;font-weight:700;color:var(--dim);}
.ob-ml{display:flex;gap:16px;margin-top:10px;}
.ob-ml i{font-style:normal;font-size:10.5px;font-weight:700;color:var(--dim);}
.ob-ml b{font-size:17px;font-weight:700;color:var(--navy);margin-left:4px;}
.ob-lis{display:flex;flex-direction:column;gap:8px;margin-top:12px;}
.ob-li{display:flex;align-items:center;gap:9px;background:var(--card);border:2px solid var(--bd);
  border-radius:13px;padding:12px 14px;font-size:13px;font-weight:700;color:var(--navy);}
.ob-li .nvic{width:17px;height:17px;color:var(--blue);flex:none;}
/* 課金 */
.ob-phero{display:flex;flex-direction:column;align-items:flex-start;gap:8px;}
.ob-phero .ob-dog{margin-bottom:2px;}
.ob-pbadge{background:var(--flame-tint);border-radius:9px;padding:5px 10px;
  font-size:11.5px;font-weight:900;color:#7A5200;}
.ob-pf{display:flex;flex-direction:column;gap:8px;margin-top:16px;}
.ob-pp{display:flex;align-items:baseline;gap:4px;justify-content:center;margin-top:16px;}
.ob-pp b{font-size:30px;font-weight:700;color:var(--navy);letter-spacing:-.02em;}
.ob-pp u{text-decoration:none;font-size:12px;font-weight:700;color:var(--dim);}

/* オンボーディング: 問題のあとの AI 体験 */
.ob-score{display:flex;align-items:baseline;gap:5px;margin-bottom:10px;}
.ob-score b{font-size:26px;font-weight:700;color:var(--navy);letter-spacing:-.02em;}
.ob-score i{font-style:normal;font-size:11.5px;font-weight:700;color:var(--dim);}
.ob-qref{background:var(--card);border:2px solid var(--bd);border-radius:14px;
  padding:12px 14px;margin-top:16px;}
.ob-qref i{display:block;font-style:normal;font-size:10.5px;font-weight:800;color:var(--blue);}
.ob-qref span{display:block;font-size:12px;font-weight:600;color:var(--navy);
  line-height:1.7;margin-top:3px;}
.ob-chips{display:flex;flex-direction:column;gap:9px;margin-top:14px;}
.ob-chips button{height:52px;border:2px solid var(--bd);border-radius:14px;background:var(--card);
  font-family:inherit;font-size:13.5px;font-weight:800;color:var(--navy);cursor:pointer;
  text-align:left;padding:0 15px;}
.ob-chips button:active{transform:translateY(1px);}
.ob-wait{display:flex;align-items:center;gap:7px;margin-top:20px;
  font-size:12.5px;font-weight:700;color:var(--dim);}
.ob-dot{width:7px;height:7px;border-radius:4px;background:var(--blue);
  animation:obdot 1s ease-in-out infinite;}
.ob-dot:nth-child(2){animation-delay:.15s;} .ob-dot:nth-child(3){animation-delay:.3s;}
@keyframes obdot{0%,60%,100%{opacity:.25}30%{opacity:1}}
@media(prefers-reduced-motion:reduce){.ob-dot{animation:none;opacity:.6}}
#onb .ob-bub.big{font-size:14.5px;font-weight:700;line-height:1.9;}

/* 試験日の設定: 統一試験の日をそのまま押せるように */
.excfg-quick{margin:12px 0 4px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.excfg-quick i{flex-basis:100%;font-style:normal;font-size:10.5px;font-weight:800;color:var(--dim);}
.excfg-quick button{display:flex;align-items:baseline;gap:6px;border:2px solid var(--bd);
  border-radius:12px;background:var(--card);padding:9px 13px;font-family:inherit;
  font-size:14px;font-weight:800;color:var(--navy);cursor:pointer;}
.excfg-quick button u{text-decoration:none;font-size:10px;font-weight:700;color:var(--dim);}
.excfg-quick button.on{border-color:var(--blue);background:var(--blue-tint);color:var(--blue);}
.excfg-quick button.on u{color:var(--blue);}
.excfg-quick s{flex-basis:100%;text-decoration:none;font-size:10.5px;font-weight:600;color:var(--dim);}

/* 予測点のブレ幅。1点の数字だけ見せると楽観的に読まれる */
.av-band,.np-band{font-style:normal;font-size:12px;font-weight:700;color:var(--dim);
  margin-left:5px;letter-spacing:-.01em;}
.np-band{font-size:10.5px;margin-left:3px;}

/* 分析: 計画どおり vs いまの実行(pen A3c-1) */
.ad{background:var(--card);border:2px solid var(--bd);border-radius:14px;
  padding:13px 14px;margin-top:11px;}
.ad-r{display:flex;align-items:center;gap:9px;}
.ad-r+.ad-r{margin-top:9px;}
.ad-r i{flex:none;width:88px;font-style:normal;font-size:10.5px;font-weight:700;color:var(--dim);}
.ad-b{flex:1;min-width:0;height:8px;border-radius:4px;background:var(--bg);
  box-shadow:inset 0 0 0 1.5px var(--bd);overflow:hidden;}
.ad-b u{display:block;height:100%;border-radius:4px;text-decoration:none;background:var(--blue);}
.ad-b u.ng{background:var(--ng);}
.ad-r b{flex:none;width:44px;text-align:right;font-size:11.5px;font-weight:700;color:var(--navy);}
.ad-r s{flex:none;width:38px;text-align:right;text-decoration:none;
  font-size:10px;font-weight:600;color:var(--dim);}
.ad p{margin:10px 0 0;font-size:12px;font-weight:800;color:var(--navy);line-height:1.7;}
/* 分析: 二択して作り直す(pen A3c-2) */
.av-two{display:flex;flex-direction:column;gap:10px;}
.av-p{display:flex;align-items:center;gap:11px;width:100%;text-align:left;
  background:var(--card);border:2px solid var(--bd);border-radius:16px;
  padding:14px;font-family:inherit;cursor:pointer;color:var(--navy);}
.av-p.on{border-color:var(--navy);border-width:3px;padding:13px;}
.av-pr{flex:none;width:22px;height:22px;border-radius:11px;border:2px solid var(--bd);
  display:flex;align-items:center;justify-content:center;}
.av-pr.on{background:var(--blue);border-color:var(--blue);}
.av-pr .nvic{width:13px;height:13px;color:#FFFFFF;}
.av-pi{flex:none;width:19px;height:19px;color:var(--navy);}
.av-pt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.av-pt b{font-size:14px;font-weight:900;}
.av-pt i{font-style:normal;font-size:10.5px;font-weight:600;color:var(--dim);}
.av-p em{flex:none;font-style:normal;font-size:12px;font-weight:700;color:var(--blue);}
.av-go{height:52px;border:none;border-radius:13px;background:var(--blue);
  font-family:inherit;font-size:15px;font-weight:900;color:#FFFFFF;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:8px;}
.av-go .nvic{width:18px;height:18px;color:currentColor;}
.av-go.off{opacity:.4;pointer-events:none;}
.av-skip{display:block;text-align:center;font-size:11px;font-weight:700;color:var(--dim);
  cursor:pointer;text-decoration:underline;padding:4px 0;}

/* 非公式である旨。フッターは native-ios では出さないので、マイページに置く。
   公式と誤認させると App Store 5.2.1 で弾かれうる */
.my-unof{margin:18px 2px 4px;font-size:10.5px;font-weight:500;color:var(--dim);line-height:1.85;}
.my-unof b{font-weight:800;color:var(--tx2);}

/* 分析②の単元行から、きょうの計画に刺す */
.au-pin{display:inline-flex;align-items:center;gap:6px;margin-top:8px;
  border:2px solid var(--bd);border-radius:10px;background:var(--card);
  padding:7px 11px;font-family:inherit;font-size:11px;font-weight:800;
  color:var(--blue);cursor:pointer;}
.au-pin .nvic{width:14px;height:14px;color:currentColor;}
.au-pin.on{background:var(--blue);border-color:var(--blue);color:#FFFFFF;}

/* ===== 受け取れる報酬 (bokiinu2.pen CMP/クエスト報酬ボタン) ==========
   HUD の小さなプレゼント箱は廃止した。隅に置くと気づかれず、
   押しても何が入っているのか分からなかった。
   受け取れるときだけ、きょうの分より前に割り込ませて、金地で光らせる。
   光るのは「受け取れる」ときだけ。まだ／受け取り済みは光らせない */
.rw{display:flex;align-items:center;gap:12px;width:100%;
  border-radius:14px;padding:0 14px;height:58px;box-sizing:border-box;}
.rw.ready{background:var(--flame-tint);}
.rw-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.rw-t b{font-size:13.5px;font-weight:900;color:#14161A;}
.rw-t i{font-style:normal;font-size:10.5px;font-weight:700;color:#7A5200;}
.rw-b{flex:none;display:flex;align-items:center;justify-content:center;
  height:42px;padding:0 14px;border-radius:10.5px;
  background:var(--gold);border:3px solid var(--navy);
  font-size:13px;font-weight:900;color:#3A2A00;}
.tlr.claim{cursor:pointer;}
.tlr.claim .tln.claim{width:34px;height:34px;font-size:24px;line-height:1;}
.tlr.claim .tlb{display:flex;align-items:center;padding:8px 0;}
.tlr.med.ready .tlb{display:flex;align-items:center;padding:8px 0;}
/* 受け取れるものが出ているあいだは、先生の丸ボタンを光らせない
   （1画面で光るものは1つだけ） */
body.has-claim .aifab{box-shadow:none;}
body.dark .rw.ready{background:#2C2510;}
body.dark .rw-t b{color:var(--navy);}
body.dark .rw-t i{color:var(--gold);}

/* ===== 先生の設定と記憶 =================================================
   器は .fb-ovl / .fb-card を借りる。web.css が「下から出るスタイル」を
   広い画面で中央モーダルに組み替える対象に .fb-ovl を入れてあるので、
   別のクラスを作るとWebだけ下から出てデザインがブレる。 */
.tt-lead{font-size:12.5px;color:var(--dim);line-height:1.7;margin:0;}
.tt-l{font-size:12px;font-weight:800;color:var(--navy);margin-top:2px;}
.tt-l b{font-size:13px;color:var(--blue);}
.tt-in{width:100%;font-family:inherit;font-size:15px;color:var(--navy);
  background:var(--bg);border:2px solid var(--bd);border-radius:12px;padding:10px 12px;}
.tt-in:focus{outline:none;border-color:var(--blue);background:var(--card);}
.tt-chips{display:flex;flex-wrap:wrap;gap:6px;}
.tt-chip{font-family:inherit;font-size:12px;font-weight:700;color:var(--tx2);
  background:var(--card);border:2px solid var(--bd);border-radius:99px;padding:5px 11px;}
.tt-chip:hover{border-color:var(--blue);color:var(--blue);}
.tt-range{width:100%;accent-color:var(--blue);}
.tt-sd{margin:-4px 0 2px;font-size:12px;font-weight:700;color:var(--blue);}
.tt-motive{background:var(--flame-tint);border:2px solid var(--gold);border-radius:12px;
  padding:10px 12px;display:flex;flex-direction:column;gap:3px;}
.tt-motive i{font-style:normal;font-size:10.5px;font-weight:800;color:#7A5200;}
.tt-motive b{font-size:14px;font-weight:800;color:var(--navy);}
.tt-mem{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px;}
.tt-mem li{display:flex;align-items:center;gap:8px;background:var(--bg);
  border:2px solid var(--bd);border-radius:12px;padding:9px 10px 9px 12px;}
.tt-mem li span{flex:1;font-size:13px;color:var(--navy);line-height:1.55;}
.tt-mem li button{flex:none;width:26px;height:26px;border-radius:13px;border:none;
  background:none;color:var(--dim);font-size:14px;font-family:inherit;}
.tt-mem li button:hover{background:var(--bd);color:var(--ng);}
.tt-danger{font-family:inherit;font-size:12.5px;font-weight:800;color:var(--ng);
  background:none;border:2px solid var(--bd);border-radius:12px;padding:9px;}
.tt-danger:hover{border-color:var(--ng);}
.ob-tt{display:flex;flex-direction:column;gap:7px;margin-top:14px;text-align:left;}
.ob-tt .tt-l{margin-top:4px;}

/* ===== 先生と話す(タブ) bokiinu2.pen CH1/CH2 ============================
   高さを 100dvh から引く作りにしたら、iOS のセーフエリアとシェルの余白を
   吸収しきれず入力欄が画面外に落ちた。入力側を下に固定して本文は普通に流す */
.tc{display:flex;flex-direction:column;gap:12px;max-width:640px;margin:0 auto;
  padding-bottom:calc(126px + var(--sab,0px));}

/* ---- ヘッダ ---- */
.tc-hd{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:10px;flex:none;
  padding:8px 0 11px;background:var(--bg);border-bottom:1px solid var(--bd);}
.tc-dog{flex:none;line-height:0;display:block;}
.tc-dog canvas{image-rendering:pixelated;display:block;}
.tc-hn{flex:1;display:flex;flex-direction:column;gap:1px;min-width:0;}
.tc-hn b{font-size:16px;font-weight:900;color:var(--navy);letter-spacing:-.02em;}
.tc-hn i{font-style:normal;font-size:11px;font-weight:700;color:var(--dim);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tc-cfg{flex:none;width:34px;height:34px;border-radius:17px;border:2px solid var(--bd);
  background:var(--card);display:flex;align-items:center;justify-content:center;}
.tc-cfg .nvic{width:16px;height:16px;color:var(--dim);}
.tc-cfg:hover{border-color:var(--blue);}
.tc-cfg:hover .nvic{color:var(--blue);}
.tc-left{flex:none;display:flex;align-items:center;gap:3px;height:30px;padding:0 11px;
  border-radius:15px;background:var(--flame-tint);}
.tc-left .nvic{width:14px;height:14px;color:#7A5200;}
.tc-left b{font-size:13px;font-weight:800;color:#3A2A00;}

/* ---- ゼロステート(CH1) ---- */
.tc-log{display:flex;flex-direction:column;gap:10px;min-height:34vh;}
.tc-zero{display:flex;flex-direction:column;gap:12px;}
.tc-hello{display:flex;align-items:flex-start;gap:9px;}
.tc-bub{flex:1;background:var(--card);border:3px solid var(--navy);border-radius:16px;
  padding:12px 14px;font-size:14.5px;font-weight:800;color:var(--navy);line-height:1.65;}
.tc-lb{font-style:normal;font-size:11.5px;font-weight:800;color:var(--dim);margin-top:2px;}
.tc-acts{display:flex;flex-direction:column;gap:9px;}
.tc-act{display:flex;align-items:center;gap:12px;text-align:left;width:100%;
  background:var(--card);border:2px solid var(--bd);border-radius:16px;padding:13px 14px;}
.tc-act.hot{border:3px solid var(--navy);}
.tc-act:active{transform:translateY(1px);}
.tc-ai2{flex:none;width:38px;height:38px;border-radius:12px;background:var(--bg);
  display:flex;align-items:center;justify-content:center;}
.tc-act.hot .tc-ai2{background:var(--blue-tint,#EAF2FF);}
.tc-ai2 .nvic{width:19px;height:19px;color:var(--navy);}
.tc-act.hot .tc-ai2 .nvic{color:var(--blue);}
.tc-at{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0;}
.tc-at b{font-size:14.5px;font-weight:900;color:var(--navy);letter-spacing:-.01em;}
.tc-at i{font-style:normal;font-size:11.5px;font-weight:700;color:var(--dim);}
.tc-ac{flex:none;width:15px;height:15px;color:var(--bd);}
.tc-login{display:flex;align-items:center;gap:10px;background:var(--navy);
  border-radius:16px;padding:12px 13px;margin-top:2px;}
.tc-login > .nvic{flex:none;width:19px;height:19px;color:#fff;}
.tc-lt{flex:1;display:flex;flex-direction:column;gap:1px;min-width:0;}
.tc-lt b{font-size:13.5px;font-weight:900;color:#fff;}
.tc-lt i{font-style:normal;font-size:11px;font-weight:700;color:rgba(255,255,255,.62);}
.tc-login button{flex:none;font-family:inherit;font-size:13px;font-weight:900;color:#fff;
  background:var(--blue);border:none;border-radius:10px;padding:9px 15px;}

/* ---- 会話(CH2) ---- */
.tc-day{display:flex;justify-content:center;margin:2px 0 4px;}
.tc-day span{font-size:10.5px;font-weight:800;color:var(--dim);
  background:var(--bd);border-radius:99px;padding:3px 12px;}
.tc-r{display:flex;align-items:flex-start;gap:8px;}
.tc-dog.sm{margin-top:2px;}
.tc-me{align-self:flex-end;max-width:82%;background:var(--blue);color:#fff;
  border-radius:16px 16px 4px 16px;padding:11px 14px;font-size:14px;line-height:1.6;
  white-space:pre-wrap;word-break:break-word;}
.tc-ai{flex:1;min-width:0;background:var(--card);color:var(--navy);
  border:2px solid var(--bd);border-radius:4px 16px 16px 16px;padding:11px 14px;
  font-size:14px;line-height:1.75;word-break:break-word;}
/* 提案を持つ返事だけ枠を濃くする。押せるものが一目で分かる */
.tc-ai.hot{border:3px solid var(--navy);}
.tc-ai.wait{flex:0 0 auto;display:flex;gap:5px;align-items:center;padding:14px 15px;}
.tc-ai.wait span{width:6px;height:6px;border-radius:3px;background:var(--dim);
  animation:tcdot 1s infinite ease-in-out;}
.tc-ai.wait span:nth-child(2){animation-delay:.16s}
.tc-ai.wait span:nth-child(3){animation-delay:.32s}
@keyframes tcdot{0%,60%,100%{opacity:.28;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
@media(prefers-reduced-motion:reduce){.tc-ai.wait span{animation:none;opacity:.5}}
/* 先生の提案カード。押すと本当に計画が変わる */
.tc-card{display:flex;align-items:center;gap:10px;margin-top:9px;
  background:var(--bg);border-radius:12px;padding:9px 10px 9px 12px;}
.tc-ct{flex:1;display:flex;flex-direction:column;gap:1px;min-width:0;}
.tc-ct i{font-style:normal;font-size:10.5px;font-weight:800;color:var(--dim);}
.tc-ct b{font-size:13.5px;font-weight:800;color:var(--dim);}
.tc-ct u{text-decoration:none;font-size:15px;font-weight:900;color:var(--navy);}
.tc-card button{flex:none;font-family:inherit;font-size:12.5px;font-weight:900;color:#fff;
  background:var(--navy);border:none;border-radius:10px;padding:9px 14px;}
.tc-card button:disabled{background:var(--bd);color:var(--dim);}

/* ---- 入力(下に固定) ---- */
.tc-foot{position:fixed;left:0;right:0;bottom:calc(var(--sbh,74px) + var(--sab,0px));
  z-index:64;background:var(--bg);border-top:1px solid var(--bd);
  padding:9px 16px 11px;display:flex;flex-direction:column;gap:8px;}
.tc-chips{flex:none;display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;}
.tc-chips button{flex:none;display:flex;align-items:center;gap:5px;font-family:inherit;
  font-size:12.5px;font-weight:700;color:var(--tx2);background:var(--card);
  border:2px solid var(--bd);border-radius:99px;padding:7px 13px;white-space:nowrap;}
.tc-chips .nvic{width:14px;height:14px;color:var(--dim);}
.tc-chips button:hover{border-color:var(--blue);color:var(--blue);}
.tc-chips button:hover .nvic{color:var(--blue);}
.tc-in{flex:none;display:flex;gap:8px;align-items:center;}
.tc-cam{flex:none;width:44px;height:44px;border-radius:22px;border:2px solid var(--bd);
  background:var(--card);display:flex;align-items:center;justify-content:center;}
.tc-cam .nvic{width:19px;height:19px;color:var(--navy);}
.tc-cam:hover{border-color:var(--blue);}
.tc-field{flex:1;min-width:0;display:flex;align-items:center;gap:4px;
  background:var(--card);border:2px solid var(--bd);border-radius:99px;padding:0 6px 0 16px;}
.tc-field:focus-within{border-color:var(--blue);}
.tc-field input{flex:1;min-width:0;font-family:inherit;font-size:15px;color:var(--navy);
  background:none;border:none;padding:11px 0;}
.tc-field input:focus{outline:none;}
.tc-mic{flex:none;width:34px;height:34px;border-radius:17px;border:none;background:none;
  display:flex;align-items:center;justify-content:center;}
.tc-mic .nvic{width:17px;height:17px;color:var(--dim);}
.tc-mic.on{background:var(--ng);}
.tc-mic.on .nvic{color:#fff;}
.tc-go{flex:none;width:44px;height:44px;border-radius:22px;border:none;
  background:var(--blue);display:flex;align-items:center;justify-content:center;}
.tc-go .nvic{width:20px;height:20px;color:#fff;transform:rotate(-90deg);}
.tc-go:active{transform:translateY(1px);}
body.dark .tc-ai,body.dark .tc-bub,body.dark .tc-act{background:#1B1D22;}

/* 完了画面で先生がかける言葉 */
.nvfin-say{display:flex;align-items:center;gap:10px;margin:2px 0 6px;text-align:left;
  background:var(--card);border:2px solid var(--bd);border-radius:14px;padding:11px 13px;}
/* 既存の .nvfin-dog(大きい犬)と同じクラスにすると、あちらの寸法に負ける */
.nvfin-sd{flex:none;width:34px;height:34px;line-height:0;overflow:hidden;display:block;}
.nvfin-sd canvas{image-rendering:pixelated;display:block;}
.nvfin-say p{margin:0;flex:1;font-size:13px;font-weight:700;color:var(--navy);line-height:1.6;text-align:left;}
.nvfin-say.wait p{color:var(--dim);font-weight:600;}

/* ===== 先生にきく（右下の丸ボタン）bokiinu2.pen CMP =================
   犬だけだと飾りに見えて押されない。左上に吹き出しを重ねて
   「これは会話ボタン」と分からせ、右上に のこり回数を出す。
   置き方は pen の指示どおり: 右下・端から20px・下のバーの上に16px。 */
.aifab{position:fixed;right:20px;bottom:calc(var(--sbh,74px) + 16px + var(--sab,0px));
  width:64px;height:64px;border-radius:32px;z-index:62;
  background:var(--card);border:3px solid var(--navy);padding:0;
  box-shadow:0 6px 18px rgba(20,22,26,.18);
  display:flex;align-items:center;justify-content:center;}
.aifab-d{line-height:0;display:flex;align-items:center;justify-content:center;
  width:52px;height:52px;overflow:hidden;}
.aifab-d canvas{image-rendering:pixelated;}
/* 左上の吹き出し=これは会話ボタン */
.aifab-c{position:absolute;left:-4px;top:-4px;width:26px;height:26px;border-radius:13px;
  background:var(--blue);border:2.5px solid var(--card);
  display:flex;align-items:center;justify-content:center;}
.aifab-c .nvic{width:14px;height:14px;color:#FFFFFF;}
/* 右上は のこり回数 */
.aifab-n{position:absolute;right:-4px;top:-4px;min-width:26px;height:26px;border-radius:13px;
  background:var(--gold);border:2.5px solid var(--card);
  display:flex;align-items:center;justify-content:center;
  font-style:normal;font-size:11px;font-weight:700;color:#3A2A00;padding:0 4px;}
.aifab-n[hidden]{display:none;}
.aifab.off{opacity:.5;}
.aifab.off .aifab-n{background:var(--bd);color:var(--dim);}
.aifab:active{transform:translateY(1px);}
/* 入力中は薄くする。解答欄にかぶせない */
body.solving input:focus~.aifab{opacity:.4;}
/* 電卓の丸ボタンとは重ねない。電卓は先生の上に置く */
/* 電卓は先生の丸ボタンの上。右端は先生とそろえる */
html.v2 body.solving .calcbtn{right:20px;bottom:calc(var(--sbh,74px) + 92px + var(--sab,0px));}
@media(min-width:1000px){
  html.v2:not(.lp) body .aifab{display:none;}
}
