:root{--bg: #f3f0ea;--card: #ffffff;--well: #f3f6f5;--line: #dce2df;--ink: #18292c;--muted: #5a6a6b;--brand: #007084;--frost: #007084;--act: #e2703a;--act-ink: #ffffff;--mint: #5fb3a6;--good: #2c8f62;--good-bg: #e4f3eb;--bad: #c24a35;--bad-bg: #fbe8e3;--hint: #b57c12;--hint-bg: #fcf1da;--hot: #e4572e;--warm: #f2a541;--cold: #3e9fd6}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:DM Sans,system-ui,Arial,sans-serif;background-image:radial-gradient(#e1dcd2 1px,transparent 1px);background-size:22px 22px}button{font:inherit;cursor:pointer}button:focus-visible{outline:3px solid var(--frost);outline-offset:2px}.app{height:100%;display:grid;grid-template-columns:96px 1fr 400px;grid-template-rows:auto 1fr auto;gap:14px;padding:14px 18px;padding-top:max(14px,env(safe-area-inset-top))}.top{grid-column:1 / 4;display:flex;align-items:center;gap:18px}.logo{width:60px;height:60px;border-radius:18px;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:30px;font-weight:700}.title{margin:0;font-family:Barlow Semi Condensed,Arial,sans-serif;font-weight:800;font-size:44px;line-height:1}.title span{color:var(--frost)}.tag{margin:6px 0 0;letter-spacing:.4em;font-size:14px;color:var(--muted);font-weight:600}.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:18px 20px;box-shadow:0 1px 2px #18292c0a,0 6px 18px #18292c0d}.progress{margin-left:auto;width:400px;padding:14px 18px}.row{display:flex;justify-content:space-between;align-items:center;gap:10px}.gap{gap:10px;justify-content:flex-start;flex-wrap:wrap}.bar{height:8px;border-radius:4px;background:var(--line);margin-top:8px}.bar i{display:block;height:100%;border-radius:4px;background:var(--frost)}.rail{display:flex;flex-direction:column;gap:6px}.rail span{padding:14px 6px;border-radius:14px;text-align:center;font-size:13px;color:var(--muted)}.rail span.on{background:var(--card);border:1px solid var(--line);color:var(--frost);font-weight:700}.stage{position:relative;border:1px solid var(--line);border-radius:22px;overflow:hidden;min-height:420px}.tools{position:absolute;left:50%;bottom:14px;transform:translate(-50%);display:flex;gap:4px;padding:6px;background:var(--card);border:1px solid var(--line);border-radius:14px;flex-wrap:nowrap;justify-content:center;max-width:calc(100% - 20px);overflow:visible}.tools button{white-space:nowrap;min-height:40px;padding:0 12px;border-radius:10px;border:0;background:transparent;color:var(--ink);font-size:14px;font-weight:600}.tools button[aria-pressed=true]{background:#e1f0f2;color:var(--frost)}.badge .short{display:none}.badge{position:absolute;left:14px;top:14px;font-size:12px;padding:6px 10px;border-radius:999px;background:var(--hint-bg);color:#7a5410;border:1px solid #ead3a0}.loading{padding:10px 14px;border-radius:10px;background:var(--card);border:1px solid var(--line);white-space:nowrap}.panel{display:flex;flex-direction:column;gap:14px;min-height:0;overflow:auto}.tabs{display:flex;gap:20px;border-bottom:1px solid var(--line);margin:-4px 0 14px}.tabs button{border:0;background:none;color:var(--muted);font-family:Barlow Semi Condensed,Arial,sans-serif;font-weight:700;font-size:16px;letter-spacing:.06em;padding:8px 0 10px}.tabs button[aria-selected=true]{color:var(--ink);border-bottom:3px solid var(--frost)}.h{margin:0;font-family:Barlow Semi Condensed,Arial,sans-serif;font-size:21px;letter-spacing:.04em}.big{margin:0 0 10px;font-family:Barlow Semi Condensed,Arial,sans-serif;font-size:32px;line-height:1}.muted{color:var(--muted);line-height:1.55}.small{font-size:13px}.keys{margin:12px 0 0;padding-left:18px;line-height:1.9}.parts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.parts button{width:100%;text-align:left;background:var(--well);border:1px solid var(--line);border-radius:12px;padding:12px;color:var(--ink);display:flex;flex-direction:column;gap:4px}.parts span{color:var(--muted);font-size:14px}.task{display:flex;flex-direction:column;gap:10px}.steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.steps li{display:flex;align-items:center;gap:10px;color:var(--ink)}.steps li.done{color:var(--muted)}.steps li.now{font-weight:700}.steps i{width:22px;height:22px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;font-style:normal;font-size:12px;flex-shrink:0}.steps li.done i{background:var(--good);border-color:var(--good);color:#fff}.steps li.now i{background:var(--frost);border-color:var(--frost);color:#fff}.msg{margin:4px 0 0;padding:10px 12px 10px 14px;border-radius:10px;background:var(--well);line-height:1.45;border-left:4px solid var(--line)}.msg.good{background:var(--good-bg);border-left-color:var(--good)}.msg.bad{background:var(--bad-bg);border-left-color:var(--bad)}.btn{min-height:48px;border-radius:12px;padding:0 18px;font-weight:700;font-size:16px;border:2px solid transparent}.btn.primary{background:var(--act);color:var(--act-ink);box-shadow:0 3px #b9551f}.btn.primary:active{transform:translateY(2px);box-shadow:0 1px #b9551f}.btn.primary:disabled{opacity:.55;cursor:default}.btn.ghost{background:#fff;color:var(--ink);border-color:var(--line)}.btn.ghost:hover{border-color:var(--brand);color:var(--brand)}.lessons{grid-column:2 / 4;display:flex;gap:12px;overflow-x:auto}.lessons span{flex:0 0 auto;padding:16px 18px;border-radius:14px;background:var(--card);border:1px solid var(--line);font-family:Barlow Semi Condensed,Arial,sans-serif;font-weight:700;font-size:17px}.lessons .now{border:2px solid var(--frost)}.lessons .done:after{content:" ✓";color:var(--good)}.lbl{position:relative;width:0;height:0}.lbl-dot{position:absolute;left:-6px;top:-6px;width:12px;height:12px;border-radius:50%;background:#fff;border:3px solid var(--c)}.lbl-line{position:absolute;left:0;top:0;overflow:visible}.lbl-line path{stroke:var(--c);stroke-width:2;stroke-dasharray:5 5;fill:none}.lbl-card{pointer-events:auto;position:absolute;width:210px;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;color:var(--ink);display:flex;flex-direction:column;gap:3px;box-shadow:0 8px 20px #18292c24;border-left:5px solid var(--c)}.lbl-card b{font-family:Barlow Semi Condensed,Arial,sans-serif;font-size:17px;letter-spacing:.03em;text-transform:uppercase}.lbl-card span{font-size:13px;color:var(--muted);line-height:1.4}.lbl-card.sel{border-color:var(--c)}.review{position:absolute;top:56px;right:18px;width:min(460px,calc(100% - 36px));background:var(--card);border:1px solid var(--frost);border-radius:18px;padding:20px;box-shadow:0 18px 40px #18292c2e}.review .kicker{color:var(--frost);font-weight:700;letter-spacing:.14em;font-size:13px}.review ul{padding-left:0;list-style:none;line-height:1.55;display:flex;flex-direction:column;gap:6px}.nogl{max-width:520px;margin:12vh auto;text-align:center;line-height:1.6}@media (max-width: 1000px){.app{grid-template-columns:1fr;grid-template-rows:auto auto auto auto;height:auto;min-height:100%;padding:8px;gap:10px}.top{grid-column:1;flex-wrap:wrap;gap:10px}.logo{width:42px;height:42px;border-radius:12px;font-size:22px}.title{font-size:26px}.tag{letter-spacing:.18em;font-size:11px;margin-top:4px}.progress{width:100%;margin-left:0;padding:10px 14px}.rail{display:none}.stage{height:58vh;min-height:340px;border-radius:16px}.panel{overflow:visible}.panel .task{order:-1}.card{padding:14px 16px;border-radius:16px}.big{font-size:26px}.tabs{gap:16px}.tools{bottom:8px;left:8px;right:8px;transform:none;max-width:none;justify-content:flex-start;gap:2px;padding:4px}.tools button{min-height:36px;padding:0 9px;font-size:13px}.badge{left:8px;top:8px;right:auto;font-size:10px;padding:4px 8px;border-radius:8px}.badge .long{display:none}.badge .short{display:inline}.lbl{transform:scale(.62);transform-origin:0 0}.lbl-card{width:170px}.lbl-card span{display:none}.lbl-card b{font-size:18px}.tgt{font-size:12px;padding:5px 8px}.review{top:auto;bottom:52px;left:8px;right:8px;width:auto;max-height:calc(100% - 70px);overflow:auto;padding:16px}.lessons{grid-column:1;padding-bottom:max(6px,env(safe-area-inset-bottom))}.lessons button,.lessons span{padding:12px 14px;font-size:15px}.acts .btn{min-height:52px}.hold .btn{min-height:60px;font-size:17px}.steps{gap:6px}.steps li{font-size:14px}.steps li.far{display:none}}@media (max-width: 1000px) and (orientation: landscape) and (max-height: 500px){.stage{height:82vh}}@media (prefers-reduced-motion: reduce){*{scroll-behavior:auto}}.acts{display:flex;flex-direction:column;gap:8px}.lessons button{flex:0 0 auto;padding:16px 18px;border-radius:14px;background:var(--card);border:1px solid var(--line);color:var(--ink);font-family:Barlow Semi Condensed,Arial,sans-serif;font-weight:700;font-size:17px}.lessons button.now{border:2px solid var(--frost)}.lessons .soon{opacity:.5}.tgt{white-space:nowrap;padding:6px 10px;border-radius:999px;border:2px solid var(--brand);background:#fff;color:var(--ink);font-size:13px;font-weight:700;box-shadow:0 4px 12px #18292c26}.q{margin:2px 0;font-weight:700;line-height:1.4}.btn.choice{text-align:left;padding:10px 14px;min-height:48px;font-size:15px;line-height:1.3}.hold{display:flex;flex-direction:column;gap:8px}.meter{position:relative;height:14px;border-radius:7px;background:var(--well);border:1px solid var(--line);overflow:hidden}.meter s{position:absolute;top:0;bottom:0;background:#bfe3cf}.meter i{position:absolute;left:0;top:0;bottom:0;background:var(--frost);opacity:.85}.hold .btn{user-select:none;-webkit-user-select:none;touch-action:none}.kits{display:flex;gap:6px;margin-bottom:8px}.kits button{flex:1;min-height:34px;border-radius:10px;border:1px solid var(--line);background:transparent;color:var(--muted);font-weight:700;font-size:13px}.kits button[aria-checked=true]{background:#e1f0f2;color:var(--frost);border-color:var(--frost)}.tourcard{position:absolute;top:56px;right:18px;width:min(420px,calc(100% - 36px));background:var(--card);border:1px solid var(--frost);border-radius:16px;padding:14px 16px;display:flex;flex-direction:column;gap:8px;box-shadow:0 18px 40px #18292c2e}.tourcard .btn{min-height:40px;font-size:14px;padding:0 12px}@media (max-width: 1000px){.tourcard{top:auto;bottom:52px;left:8px;right:8px;width:auto}}.man-link{align-self:flex-start;border:0;background:none;color:var(--frost);font-weight:700;text-decoration:underline;padding:4px 0;min-height:36px}.manual{display:flex;flex-direction:column;gap:8px}.mpage{max-height:440px;overflow:auto;border-radius:10px;border:1px solid var(--line);background:#fff}.mwrap{position:relative}.mwrap img{display:block;width:100%}.hl{position:absolute;left:2%;right:2%;border:3px solid #e9c46a;background:#e9c46a38;border-radius:6px;pointer-events:none}.parts li.sel>button{border-color:var(--frost)}.shop{display:inline-block;margin:6px 0 0 4px;color:var(--frost);font-weight:700;font-size:14px}@media (max-width: 1000px){.mpage{max-height:60vh}}.dial{margin:0;display:flex;flex-direction:column;align-items:center}.dial svg{max-width:240px}.dial figcaption{display:flex;flex-direction:column;align-items:center;gap:2px;margin-top:-6px;text-align:center}.dial figcaption b{font-family:Barlow Semi Condensed,Arial,sans-serif;font-size:26px}.dial figcaption span{font-size:12px;color:var(--muted)}.dials{display:grid;grid-template-columns:1fr 1fr;gap:6px}.term{border:0;background:none;padding:0;color:inherit;font:inherit;text-decoration:underline dotted var(--frost);text-underline-offset:3px;cursor:help;display:inline}.gloss{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:50;width:min(420px,calc(100% - 24px));background:var(--card);border:1px solid var(--frost);border-radius:14px;padding:12px 40px 12px 14px;display:flex;flex-direction:column;gap:4px;box-shadow:0 14px 34px #00000080}.gloss b{color:var(--frost)}.gloss span{line-height:1.45}.gloss button{position:absolute;right:6px;top:4px;border:0;background:none;color:var(--muted);font-size:22px;min-width:36px;min-height:36px}.minibtn{display:none;margin-left:8px;border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:8px;font-size:12px;min-height:30px;padding:0 8px}.ts{display:flex;flex-direction:column;gap:10px}.checks{display:grid;grid-template-columns:1fr 1fr;gap:6px}.checks .btn{min-height:44px;font-size:14px;padding:0 10px}.checks .btn.done{border-color:var(--good);color:var(--muted)}.finds{margin:0;padding-left:18px;line-height:1.5;font-size:14px}.tsdone{display:flex;flex-direction:column;gap:8px}.tsdone b{color:#e9c46a;font-size:18px}@media (max-width: 1000px){.minibtn{display:inline-block}.task.mini .steps,.task.mini .man-link,.task.mini>.small{display:none}.tools button{white-space:nowrap}}.rail button{padding:14px 6px;border-radius:14px;text-align:center;font-size:13px;color:var(--muted);background:transparent;border:1px solid transparent}.rail button.on{background:var(--card);border-color:var(--line);color:var(--frost);font-weight:700}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:35;background:#18292c73;display:flex;justify-content:center;align-items:flex-start;padding:24px 12px;overflow:auto}.sheet-in{width:min(860px,100%);background:var(--card);border:1px solid var(--line);border-radius:18px;padding:20px;display:flex;flex-direction:column;gap:12px}.kitlist ol{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:6px}.kitlist li button{width:100%;display:flex;align-items:center;gap:10px;text-align:left;min-height:44px;padding:8px 12px;border-radius:10px;border:1px solid var(--line);background:var(--well);color:var(--ink)}.kitlist li button.cur{border-color:var(--frost)}.kitlist li button span{margin-left:auto}.kitlist i{font-style:normal;color:var(--frost);width:16px}.seg{display:flex;gap:6px}.seg button{flex:1;min-height:40px;border-radius:10px;border:1px solid var(--line);background:transparent;color:var(--muted);font-weight:700}.seg button[aria-checked=true]{background:#e1f0f2;color:var(--frost);border-color:var(--frost)}.catalog{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px}.catalog li{background:var(--well);border:1px solid var(--line);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:4px;font-size:14px;line-height:1.4}.pages{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.pages figure{margin:0;background:#fff;border-radius:8px;overflow:hidden}.pages img{display:block;width:100%}.pages figcaption{padding:6px 8px;color:var(--ink);font-weight:700;font-size:13px}.calc{display:flex;flex-direction:column;gap:8px}.loads{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.loads li{display:flex;justify-content:space-between;gap:8px;padding:6px 8px;border-radius:8px;background:var(--well);font-size:14px}.loads li.fixed{border:1px solid var(--frost)}.loads label{display:flex;gap:8px;align-items:center}.calc select{min-height:44px;border-radius:10px;background:var(--well);color:var(--ink);border:1px solid var(--line);padding:0 10px;font:inherit}.tot{font-size:22px;color:var(--frost)}.tourpill{position:absolute;top:56px;right:18px;width:min(470px,calc(100% - 36px));background:#fffffff2;border:1px solid var(--line);border-radius:14px;box-shadow:0 10px 26px #18292c1f;padding:10px 12px;display:flex;flex-direction:column;gap:6px}.tourpill .btn{min-height:36px;font-size:13px;padding:0 10px}.app.clean{grid-template-columns:1fr;grid-template-rows:1fr}.app.clean>.top,.app.clean>.rail,.app.clean>.panel,.app.clean>.lessons{display:none}.app.clean>.stage{grid-column:1;height:calc(100vh - 28px)}@media (max-width: 1000px){.tourpill{top:auto;bottom:52px;left:8px;right:8px;width:auto}.app.clean>.stage{height:calc(100vh - 16px)}}.board{position:absolute;top:46px;right:12px;bottom:60px;left:12px;z-index:12;background:#fffffff7;border:1px solid var(--frost);border-radius:16px;padding:12px 14px;display:flex;flex-direction:column;gap:6px;overflow:auto}.board .row{gap:10px;flex-wrap:wrap}.board .row .muted{margin-right:auto}.board .btn{min-height:36px;font-size:13px;padding:0 12px}.wnow{margin:0;display:flex;align-items:center;gap:8px;font-size:15px}.wnow i{width:28px;height:8px;border-radius:4px;display:inline-block;border:1px solid var(--ink)}.term-g{cursor:pointer}.term-g:hover circle:first-child,.term-g:focus circle:first-child{fill:#fbd9c6}.term-g:focus{outline:none}.pulse{animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{50%{stroke-opacity:.25}}@media (prefers-reduced-motion: reduce){.pulse{animation:none}}.boardbtn{position:absolute;top:52px;left:50%;transform:translate(-50%);z-index:12;width:auto;padding:0 18px}@media (max-width: 1000px){.board{top:44px;right:6px;bottom:52px;left:6px;padding:10px}}.pillmin{position:absolute;top:56px;right:18px;min-height:38px;font-size:13px;padding:0 14px;background:#fffffff2}.minibtn2{border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:8px;min-width:34px;min-height:30px;font-size:18px;line-height:1}@media (max-width: 1000px){.pillmin{top:auto;bottom:52px;right:8px}}.acbtn{min-height:44px!important;font-size:15px!important}.legend{margin:0;font-size:13px;line-height:1.6;color:var(--muted)}.legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin:0 6px 0 4px;vertical-align:middle}.lessons button.lcard{display:flex;align-items:center;gap:10px;padding:8px 14px 8px 8px;min-height:64px;position:relative;background:var(--card)}.lcard img{width:64px;height:48px;object-fit:cover;border-radius:10px;background:var(--well)}.lcard .tick{position:absolute;top:-7px;right:-7px;width:22px;height:22px;border-radius:50%;background:var(--good);color:#fff;font-size:13px;display:grid;place-items:center}.lcard .lnum{font-size:12px;color:var(--muted);display:block;font-weight:600}.lcard .ltxt{display:flex;flex-direction:column;align-items:flex-start;text-align:left}.lessons button.lcard.now{border:2px solid var(--act);box-shadow:0 0 0 4px #fbe3d6}.minimap{position:absolute;left:14px;bottom:62px;z-index:6;width:230px;background:#fffffff2;border:1px solid var(--line);border-radius:14px;padding:8px 10px;box-shadow:0 8px 20px #18292c1a}.minimap .row{font-size:11px;letter-spacing:.14em;font-weight:700;color:var(--muted)}.minimap button{border:0;background:none;color:var(--muted);font-size:16px;min-width:28px;min-height:28px}.mmbtn{position:absolute;left:14px;bottom:62px;z-index:6;min-height:34px;font-size:12px;padding:0 10px}.conn{width:100%;border-collapse:collapse;font-size:14px}.conn th{text-align:left;font-size:11px;letter-spacing:.12em;color:var(--muted);padding:6px 4px;border-bottom:1px solid var(--line)}.conn td{padding:9px 4px;border-bottom:1px solid var(--line);vertical-align:top;line-height:1.4}.conn td:first-child{font-weight:700;white-space:nowrap}.conn i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px}.gate{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#18292c73;display:grid;place-items:center;padding:16px}.gate-in{width:min(560px,100%);max-height:calc(100vh - 32px);overflow:auto;background:var(--card);border-radius:18px;padding:22px;display:flex;flex-direction:column;gap:12px;box-shadow:0 24px 60px #18292c4d}.gate details{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--well)}.gate summary{cursor:pointer;font-weight:700;color:var(--brand)}.gate .legal{font-size:13px;line-height:1.55;color:var(--muted)}.gate .legal h4{margin:12px 0 4px;color:var(--ink);font-size:13px}.gate label{display:flex;gap:10px;align-items:flex-start;line-height:1.45}.gate input{width:22px;height:22px;accent-color:var(--brand);margin-top:1px}.footnote{position:absolute;right:14px;bottom:62px;z-index:5;font-size:11px;color:var(--muted);background:#ffffffd9;padding:3px 8px;border-radius:6px}@media (max-width: 1000px){.minimap,.mmbtn,.footnote{display:none}.lcard img{width:48px;height:36px}}.lessons .lcard span{padding:0;border:0;background:none;border-radius:0;font-size:inherit;opacity:1}.lessons .lcard .lnum{font-size:11px}.lessons .lcard .tick{border-radius:50%;background:var(--good);width:22px;height:22px}.logo img{width:44px;height:44px;object-fit:contain}.logo{background:#fff;border:1px solid var(--line)}.minimap.schem{width:300px;background:#fffdf9}.minimap.schem .small{font-size:10px}.camwrap{position:relative}.cammenu{position:absolute;bottom:calc(100% + 8px);left:0;z-index:20;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:6px;display:flex;flex-direction:column;min-width:170px;box-shadow:0 12px 28px #18292c29}.cammenu button{text-align:left;min-height:40px;padding:0 12px;border-radius:8px;border:0;background:transparent;color:var(--ink);font-weight:600}.cammenu button:hover,.cammenu button[aria-checked=true]{background:#e1f0f2;color:var(--brand)}.tools{z-index:9}.buildchip{width:100%;margin-bottom:8px;min-height:36px;border-radius:10px;border:1px dashed var(--brand);background:#e1f0f2;color:var(--brand);font-weight:700;font-size:13px;text-align:left;padding:0 10px}
