:root {
  --ink:#17324d;
  --muted:#64758a;
  --paper:#fffdfa;
  --blue:#2776d8;
  --blue-soft:#dfeeff;
  --orange:#f2794b;
  --orange-soft:#ffeadf;
  --violet:#7a55c7;
  --violet-soft:#eee6ff;
  --green:#23a875;
  --green-soft:#e1f7ee;
  --gold:#f4bd3c;
  --red:#c94b57;
  --line:#d7e2ec;
  --shadow:0 22px 70px rgba(38,71,105,.15);
}

.math {
  direction:ltr;
  font-family:Arial,sans-serif;
  unicode-bidi:isolate;
}

*{box-sizing:border-box}
html{min-height:100%}
body{
  min-height:100vh;margin:0;color:var(--ink);
  background:
    radial-gradient(circle at 8% 12%,rgba(244,189,60,.25),transparent 27rem),
    radial-gradient(circle at 92% 18%,rgba(39,118,216,.18),transparent 25rem),
    linear-gradient(155deg,#fffbeb 0%,#f4fbff 48%,#fff4ee 100%);
  font-family:Tahoma,Arial,"Segoe UI",sans-serif;line-height:1.65;overflow-x:hidden;
}
button,input{font:inherit}button{color:inherit}[hidden]{display:none!important}
.city-grid{position:fixed;inset:0;z-index:-1;opacity:.28;background-image:linear-gradient(rgba(39,118,216,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(39,118,216,.07) 1px,transparent 1px);background-size:48px 48px;mask-image:linear-gradient(to bottom,black,transparent 78%)}
.topbar{width:min(1160px,calc(100% - 26px));min-height:78px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:16px}
.brand{display:flex;align-items:center;gap:11px;padding:0;border:0;background:transparent;text-align:right;cursor:pointer}
.brand-mark{display:grid;width:47px;height:47px;place-items:center;color:white;background:linear-gradient(145deg,var(--violet),var(--blue));border:4px solid white;border-radius:16px;box-shadow:0 9px 24px rgba(85,75,165,.25);font-size:1.45rem;font-weight:900;transform:rotate(-5deg)}
.brand strong,.brand small{display:block}.brand strong{font-size:1.08rem}.brand small{color:var(--muted);font-size:.72rem}
.top-actions{display:flex;gap:8px}.round-btn{display:grid;width:43px;height:43px;place-items:center;border:1px solid rgba(23,50,77,.1);border-radius:50%;background:rgba(255,255,255,.85);box-shadow:0 8px 20px rgba(38,71,105,.09);cursor:pointer;font-weight:900}
.app-shell{width:min(1160px,calc(100% - 26px));min-height:calc(100vh - 140px);margin:0 auto;padding:16px 0 34px}
.screen{animation:rise .42s ease both}

.start-screen{display:grid;grid-template-columns:1.04fr .96fr;align-items:center;gap:28px;min-height:690px}
.cover-copy{padding:clamp(24px,5vw,56px)}
.eyebrow,.chapter-tag,.scene-label{display:inline-flex;padding:6px 12px;color:#6b4a00;background:#fff2c8;border-radius:999px;font-size:.8rem;font-weight:900}
.cover-copy h1{margin:15px 0 10px;font-size:clamp(3rem,8vw,6.2rem);line-height:1;letter-spacing:-.05em}
.cover-copy h1 span{display:block;margin-top:13px;color:var(--violet);font-size:clamp(1.15rem,2.6vw,1.8rem);letter-spacing:0}
.cover-copy>p{max-width:570px;margin:0 0 24px;color:var(--muted);font-size:1.05rem}
.name-box{max-width:500px;padding:18px;border:1px solid rgba(23,50,77,.08);border-radius:21px;background:rgba(255,255,255,.82);box-shadow:0 12px 35px rgba(38,71,105,.1)}
.name-box label{display:block;margin-bottom:7px;font-weight:900}.name-row{display:flex;gap:9px}.name-row input{min-width:0;flex:1;min-height:52px;padding:9px 14px;border:2px solid var(--line);border-radius:15px;outline:0;background:white}.name-row input:focus{border-color:var(--violet);box-shadow:0 0 0 4px rgba(122,85,199,.1)}
.primary-btn,.secondary-btn{min-height:50px;padding:11px 20px;border-radius:15px;font-weight:900;cursor:pointer;transition:transform .16s ease,box-shadow .16s ease}
.primary-btn{border:0;color:white;background:linear-gradient(135deg,var(--violet),var(--blue));box-shadow:0 10px 25px rgba(91,85,190,.25)}
.secondary-btn{border:2px solid var(--line);background:white}.primary-btn:hover,.secondary-btn:hover{transform:translateY(-2px)}.primary-btn:disabled{opacity:.48;cursor:not-allowed;transform:none;box-shadow:none}
.field-error{min-height:24px;margin:5px 0 0;color:var(--red);font-size:.85rem}
.family-stage{position:relative;min-height:560px;border:1px solid rgba(23,50,77,.08);border-radius:44px 18px 44px 44px;background:rgba(255,255,255,.72);box-shadow:var(--shadow);overflow:hidden}
.family-stage::before{content:"";position:absolute;right:9%;left:9%;bottom:50px;height:160px;border-radius:50% 50% 18px 18px;background:linear-gradient(180deg,#dff2ff,#bfe2f5);box-shadow:0 -12px 0 #f5c867 inset}
.family-img{position:absolute;z-index:2;bottom:64px;width:57%;max-height:420px;object-fit:contain;filter:drop-shadow(0 14px 18px rgba(38,71,105,.18))}.family-img.blue{right:-3%}.family-img.orange{left:-5%;transform:scale(.88)}
.location-pin{position:absolute;z-index:3;top:38px;right:50%;padding:9px 14px;border-radius:14px;color:white;background:var(--green);font-weight:900;box-shadow:0 8px 22px rgba(35,168,117,.25);transform:translateX(50%) rotate(-2deg)}

.novel-shell{max-width:960px;margin:18px auto}.novel-card{position:relative;display:grid;grid-template-columns:.9fr 1.1fr;min-height:590px;border:1px solid rgba(23,50,77,.08);border-radius:36px 15px 36px 36px;background:rgba(255,255,255,.9);box-shadow:var(--shadow);overflow:hidden}
.scene-art{position:relative;display:grid;place-items:center;padding:28px;background:linear-gradient(160deg,var(--blue-soft),#f9fbff)}.scene-art.orange{background:linear-gradient(160deg,var(--orange-soft),#fffafa)}.scene-art.both{background:linear-gradient(160deg,var(--blue-soft),var(--orange-soft))}
.scene-art img{width:min(100%,430px);height:390px;object-fit:contain;filter:drop-shadow(0 14px 18px rgba(38,71,105,.16))}.scene-symbol{display:grid;width:190px;height:190px;place-items:center;border:8px solid white;border-radius:48px;color:white;background:linear-gradient(145deg,var(--violet),var(--blue));box-shadow:0 20px 45px rgba(91,85,190,.25);font-family:Arial,sans-serif;font-size:4rem;font-weight:900;direction:ltr}.scene-symbol.fence{border-radius:50%;background:linear-gradient(145deg,var(--orange),var(--gold))}
.scene-copy{display:flex;flex-direction:column;justify-content:center;padding:clamp(28px,6vw,64px)}.scene-copy h2{margin:12px 0 10px;font-size:clamp(1.8rem,4vw,3rem);line-height:1.3}.scene-copy p{margin:0;color:var(--muted);font-size:1.08rem}.scene-quote{margin:22px 0!important;padding:17px 20px;border-right:5px solid var(--gold);border-radius:15px;color:var(--ink)!important;background:#fff8df;font-weight:800}
.novel-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:28px}.scene-dots{display:flex;gap:5px;direction:ltr}.scene-dots span{width:8px;height:8px;border-radius:999px;background:var(--line)}.scene-dots span.active{width:24px;background:var(--violet)}

.map-screen{max-width:1030px;margin:8px auto}.map-head{display:flex;align-items:end;justify-content:space-between;gap:22px;margin-bottom:22px;padding:24px 28px;border-radius:24px;color:white;background:linear-gradient(135deg,#274f7b,#533f97);box-shadow:var(--shadow)}.map-head h1{margin:4px 0 0;font-size:clamp(1.7rem,4vw,2.6rem)}.map-head p{margin:0;color:#dfe8ff}.map-progress{min-width:160px;text-align:left}.map-progress strong{display:block;font-size:1.5rem}.progress-track{height:9px;margin-top:6px;border-radius:999px;background:rgba(255,255,255,.18);overflow:hidden}.progress-track span{display:block;height:100%;border-radius:inherit;background:var(--gold);transition:width .35s ease}
.chapter-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.chapter-card{position:relative;min-height:180px;padding:22px;border:2px solid transparent;border-radius:24px;text-align:right;background:rgba(255,255,255,.88);box-shadow:0 12px 33px rgba(38,71,105,.1);cursor:pointer;overflow:hidden;transition:.18s ease}.chapter-card:hover,.chapter-card:focus-visible{transform:translateY(-3px);border-color:var(--violet);outline:0}.chapter-card.locked{opacity:.55;filter:grayscale(.25);cursor:not-allowed}.chapter-card.done{border-color:rgba(35,168,117,.5);background:#f5fffb}.chapter-card .chapter-number{display:grid;width:40px;height:40px;place-items:center;border-radius:13px;color:white;background:var(--violet);font-weight:900}.chapter-card.no-solution .chapter-number{background:var(--orange)}.chapter-card.vertices .chapter-number{background:var(--green)}.chapter-card h2{margin:13px 0 3px;font-size:1.25rem}.chapter-card p{margin:0;color:var(--muted);font-size:.88rem}.chapter-card .source-tag{position:absolute;left:16px;bottom:14px;color:var(--muted);font-size:.75rem}.chapter-card .lock-mark{position:absolute;top:18px;left:18px}.chapter-card .done-mark{position:absolute;top:17px;left:17px;display:grid;width:30px;height:30px;place-items:center;border-radius:50%;color:white;background:var(--green)}

.mission-shell{max-width:1020px;margin:6px auto}.mission-top{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:14px}.back-btn{padding:7px 0;border:0;color:var(--violet);background:transparent;font-weight:900;cursor:pointer}.mission-progress{display:flex;align-items:center;gap:7px}.mission-progress span{width:11px;height:11px;border-radius:50%;background:var(--line)}.mission-progress span.done,.mission-progress span.active{background:var(--violet)}.mission-progress span.active{box-shadow:0 0 0 5px rgba(122,85,199,.13)}
.mission-card{padding:clamp(20px,4vw,38px);border:1px solid rgba(23,50,77,.08);border-radius:32px 14px 32px 32px;background:rgba(255,255,255,.92);box-shadow:var(--shadow)}
.mission-title{display:flex;align-items:start;justify-content:space-between;gap:18px;padding-bottom:18px;border-bottom:1px solid var(--line)}.mission-title h1{margin:3px 0;font-size:clamp(1.55rem,4vw,2.35rem)}.mission-title p{margin:0;color:var(--muted)}.mission-icon{display:grid;flex:0 0 auto;width:60px;height:60px;place-items:center;border-radius:20px;color:white;background:linear-gradient(145deg,var(--violet),var(--blue));font-size:1.7rem;font-weight:900;transform:rotate(-4deg)}
.system-card{display:flex;direction:ltr;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;margin:23px 0;padding:17px;border:2px dashed rgba(122,85,199,.25);border-radius:20px;background:#faf8ff;font-family:Arial,sans-serif;font-size:clamp(1.15rem,3.2vw,1.55rem);font-weight:900}.system-card .brace{font-size:3.2rem;font-weight:400}.system-lines{display:grid;gap:5px}
.story-strip{display:flex;align-items:center;gap:15px;margin:18px 0;padding:15px 17px;border-radius:18px;background:#f3f8fd}.story-strip.orange{background:#fff1e9}.story-avatar{width:82px;height:82px;object-fit:contain}.story-strip strong,.story-strip p{display:block;margin:0}.story-strip p{color:var(--muted);font-size:.9rem}
.rule-feedback{margin:10px 0 0;color:#176847;font-size:.82rem;font-weight:800}
.equation-stage{max-width:720px;margin:24px auto}.equation-card{display:grid;gap:7px;padding:20px;border:2px solid var(--line);border-radius:20px;background:white;text-align:center}.equation-card span{color:var(--muted);font-weight:900}.equation-card strong{direction:ltr;font-family:Arial,sans-serif;font-size:clamp(1.65rem,5vw,2.35rem)}.equation-card small{font-size:.88rem}.inequality-card{border-color:#cfdcff;background:#f4f7ff}.boundary-equation{border-color:#b9e6d1;background:#f3fff9}.story-arrow{display:block;margin:8px auto;color:var(--violet);font-size:2rem;font-weight:900;text-align:center;animation:arrowPulse 1.05s ease-in-out infinite}.equation-question{text-align:center}.choice-row.centered{justify-content:center}.symbol-choice{display:grid;width:86px;height:62px;place-items:center;border:3px solid var(--line);border-radius:18px;background:white;font-family:Arial,sans-serif;font-size:1.8rem;font-weight:900;cursor:pointer}.symbol-choice:hover,.symbol-choice:focus-visible{border-color:var(--violet);outline:0;transform:translateY(-2px)}.symbol-choice.correct{color:white;border-color:var(--green);background:var(--green)}
.plotting-layout{display:grid;grid-template-columns:minmax(330px,1.12fr) minmax(330px,.88fr);gap:20px;align-items:start}.point-panel{display:grid;gap:12px}.break-alert{margin:18px 0;padding:14px 17px;border:2px solid #f0cf75;border-radius:17px;color:#6e5208;background:#fff8df;font-weight:900}.table-wrap{max-width:100%;overflow-x:auto;border:1px solid var(--line);border-radius:17px;background:white}.point-table{width:100%;min-width:500px;border-collapse:collapse;text-align:center}.point-table th{padding:11px 8px;color:#445aa0;background:#f0f3ff;font-size:.86rem}.point-table td{padding:12px 8px;border-top:1px solid var(--line);font-family:Arial,sans-serif;direction:ltr;font-weight:800}.point-table tr.done td{color:#176847;background:#f4fff9}.point-table tr.active-row td{color:#6b4a00;background:#fff3bd;animation:cellPulse 1.05s ease-in-out infinite}.tap-map{padding:11px;border:2px dashed rgba(122,85,199,.35);border-radius:14px;color:var(--violet);background:#faf8ff;text-align:center;font-weight:900;animation:cellPulse 1.05s ease-in-out infinite}.plotted-pin circle{fill:var(--blue);stroke:white;stroke-width:4;filter:drop-shadow(0 4px 5px rgba(38,71,105,.25))}.plotted-pin.orange circle{fill:var(--orange)}.plotted-pin text{fill:#17324d;stroke:white;stroke-width:4;paint-order:stroke;stroke-linejoin:round;font-family:Arial,sans-serif;font-size:13px;font-weight:900;pointer-events:none}.certificate-intro{margin-bottom:0!important;color:var(--violet)!important;font-weight:900}
.table-mission{max-width:820px;margin:18px auto}.learning-table .moving-part{outline:3px solid rgba(244,189,60,.8);outline-offset:-5px}.blank-cell{display:inline-grid;min-width:42px;min-height:36px;place-items:center;border:2px dashed #d19b16;border-radius:10px;background:white;font-size:1.25rem}.table-answer{display:grid;gap:12px;margin-top:18px;padding:18px;border-radius:18px;background:#f7f9fc;text-align:center}.table-answer h3{margin:0}.number-choice{min-width:82px;font-family:Arial,sans-serif;font-size:1.12rem;direction:ltr}
.survey-layout,.combine-layout{display:grid;grid-template-columns:minmax(320px,1.2fr) minmax(240px,.8fr);gap:20px;align-items:start}.choice-panel{display:grid;gap:15px}.question-box{padding:17px;border-radius:18px;background:#f7f9fc}.question-box h3{margin:0 0 10px;font-size:1rem}.choice-row{display:flex;flex-wrap:wrap;gap:8px}.choice-btn{min-height:47px;padding:9px 14px;border:2px solid var(--line);border-radius:14px;background:white;font-weight:900;cursor:pointer}.choice-btn:hover,.choice-btn:focus-visible{border-color:var(--violet);outline:0}.choice-btn.correct{color:white;border-color:var(--green);background:var(--green)}.choice-btn.wrong{color:var(--red);border-color:var(--red);background:#fff2f3;animation:shake .28s ease}
.coordinate-wrap{position:relative;padding:9px;border:1px solid var(--line);border-radius:23px;background:white;box-shadow:inset 0 0 0 6px #f6f9fc}.coordinate-svg{display:block;width:100%;height:auto;aspect-ratio:1;border-radius:16px;touch-action:manipulation;cursor:crosshair}.grid-line{stroke:#dce5ec;stroke-width:1}.axis-line{stroke:#38536d;stroke-width:2.3}.tick-label,.axis-label{fill:#526a80;font-family:Arial,sans-serif;font-size:12px;pointer-events:none}.axis-label{font-size:17px;font-weight:900}.boundary-blue,.boundary-orange,.boundary-neutral{fill:none;stroke-width:4.6;stroke-linecap:round;stroke-linejoin:round}.boundary-blue{stroke:var(--blue)}.boundary-orange{stroke:var(--orange)}.boundary-neutral{stroke:#314d69}.dashed{stroke-dasharray:11 9}.shade-blue{fill:rgba(39,118,216,.22)}.shade-orange{fill:rgba(242,121,75,.22)}.shade-common{fill:rgba(122,85,199,.34);stroke:rgba(122,85,199,.8);stroke-width:2}.selected-point{fill:var(--gold);stroke:white;stroke-width:4;filter:drop-shadow(0 4px 5px rgba(80,60,0,.25))}
.feedback{margin-top:16px;padding:13px 16px;border-radius:14px;font-weight:800}.feedback.success{color:#176847;border:1px solid #b9e6d1;background:var(--green-soft)}.feedback.error{color:#943844;border:1px solid #efc6cb;background:#fff1f2}.feedback.info{color:#445aa0;border:1px solid #cdd8fb;background:#f0f3ff}
.action-row{display:flex;justify-content:center;flex-wrap:wrap;gap:9px;margin-top:20px}
.overlap-question{padding:18px;border-radius:19px;background:#fff8df;text-align:center}.overlap-question h3{margin:0 0 11px}.selected-address{margin-top:12px;padding:12px;border-radius:13px;color:#5a4300;background:#fff0bb;text-align:center;font-family:Arial,sans-serif;font-weight:900;direction:ltr}
.gate-list{display:grid;gap:11px;margin-top:20px}.gate-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:14px;border:2px solid var(--line);border-radius:17px;background:white}.gate-card.open{border-color:var(--green);background:#f4fff9}.gate-icon{display:grid;width:43px;height:43px;place-items:center;border-radius:13px;color:white;background:var(--violet);font-size:1.25rem;font-weight:900}.gate-card:nth-child(2) .gate-icon{background:var(--orange)}.gate-card .math{font-family:Arial,sans-serif;direction:ltr;font-weight:800}.gate-result{color:var(--green);font-weight:900}
.vertex-layout{display:grid;grid-template-columns:1.1fr .9fr;gap:20px}.vertex-options{display:grid;gap:10px}.vertex-option{padding:14px;border:2px solid var(--line);border-radius:15px;background:white;font-family:Arial,sans-serif;font-size:1.02rem;font-weight:900;direction:ltr;cursor:pointer}.vertex-option.selected{color:white;border-color:var(--violet);background:var(--violet)}.vertex-option.wrong{border-color:var(--red);animation:shake .28s ease}.vertex-explain{margin-top:15px;padding:15px;border-right:5px solid var(--gold);border-radius:14px;background:#fff8df}.vertex-explain ul{margin:7px 0 0;padding-right:20px}

.mission-result,.final-screen{max-width:760px;margin:36px auto;padding:clamp(28px,6vw,58px);border:1px solid rgba(23,50,77,.08);border-radius:38px 16px 38px 38px;background:rgba(255,255,255,.93);box-shadow:var(--shadow);text-align:center}.result-seal{display:grid;width:90px;height:90px;margin:0 auto 15px;place-items:center;border:8px solid #fff1bf;border-radius:29px;color:#775200;background:var(--gold);font-size:2.2rem;transform:rotate(-6deg);animation:pop .65s ease both}.mission-result h1,.final-screen h1{margin:8px 0;font-size:clamp(1.8rem,5vw,3rem)}.mission-result p,.final-screen p{color:var(--muted)}.stamp-row{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin:20px 0}.stamp{padding:8px 12px;border-radius:999px;color:#176847;background:var(--green-soft);font-size:.86rem;font-weight:900}.final-families{display:flex;justify-content:center;height:190px;margin:6px 0}.final-families img{width:45%;object-fit:contain;filter:drop-shadow(0 10px 15px rgba(38,71,105,.13))}

.story-dialog{width:min(520px,calc(100% - 24px));padding:30px;border:0;border-radius:28px;color:var(--ink);background:var(--paper);box-shadow:0 28px 90px rgba(23,50,77,.28);text-align:center}.story-dialog::backdrop{background:rgba(24,42,65,.55);backdrop-filter:blur(4px)}.dialog-close{position:absolute;top:10px;left:12px;width:36px;height:36px;border:0;border-radius:50%;background:#eef2f6;cursor:pointer}.story-dialog h2{margin:6px 0}.story-dialog p{color:var(--muted)}
footer{padding:12px 0 25px;text-align:center;color:var(--muted);font-size:.8rem}

@keyframes rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes pop{from{opacity:0;transform:scale(.35) rotate(-30deg)}70%{transform:scale(1.12) rotate(4deg)}to{opacity:1;transform:scale(1) rotate(-6deg)}}
@keyframes shake{25%{transform:translateX(5px)}50%{transform:translateX(-5px)}75%{transform:translateX(3px)}}
@keyframes arrowPulse{50%{opacity:.45;transform:translateY(5px)}}
@keyframes cellPulse{50%{box-shadow:inset 0 0 0 3px rgba(244,189,60,.7)}}

@media(max-width:850px){.start-screen,.novel-card,.survey-layout,.combine-layout,.vertex-layout,.plotting-layout{grid-template-columns:1fr}.start-screen{min-height:0}.family-stage{min-height:430px}.scene-art{min-height:340px}.scene-art img{height:300px}.scene-copy{padding:30px}.map-head{align-items:start}.map-progress{text-align:right}.chapter-grid{grid-template-columns:1fr}.coordinate-wrap{max-width:590px;margin:auto}}
@media(max-width:560px){.app-shell,.topbar{width:min(100% - 16px,1160px)}.topbar{min-height:68px}.cover-copy{padding:18px 4px}.cover-copy h1{font-size:3.4rem}.name-row{display:grid}.family-stage{min-height:350px}.family-img{bottom:55px;width:64%}.novel-card{min-height:0}.scene-art{min-height:280px}.scene-art img{height:245px}.scene-symbol{width:145px;height:145px;font-size:3rem}.scene-copy{padding:24px}.map-head{display:block;padding:20px}.map-progress{margin-top:14px}.mission-card{padding:18px}.mission-title{gap:8px}.mission-icon{width:49px;height:49px;border-radius:16px}.system-card{font-size:1.06rem}.gate-card{grid-template-columns:auto 1fr}.gate-card .gate-result{grid-column:1/-1;text-align:center}.final-families{height:140px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
