:root{font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:#25392f;background:#ffffff;font-synthesis:none;--green:#285f4f;--muted:#6d776e}*{box-sizing:border-box}body{margin:0}button,select{font:inherit}button,select,a,input{touch-action:manipulation}button{cursor:pointer;border:1px solid #d7ded4;background:white;border-radius:7px;padding:9px 13px;color:inherit}button:hover{background:#edf2e9}button:disabled{cursor:not-allowed;opacity:.5}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #b2823b;outline-offset:3px}header{height:74px;border-bottom:1px solid #dce1d7;display:flex;align-items:center;justify-content:space-between;padding:0 30px;background:#ffffff}.brand{display:flex;gap:11px;align-items:center;text-decoration:none;color:#285f4f;font-size:28px}.brand strong{font-size:22px;letter-spacing:-.7px}.brand span{font-size:14px;color:var(--muted);margin-left:12px}.badge{font-size:13px;border:1px solid #dbe1d5;border-radius:20px;padding:6px 12px;color:var(--muted)}main{display:grid;grid-template-columns:minmax(0,1fr) 360px;max-width:1800px;margin:auto;min-height:calc(100vh - 74px)}.workspace{padding:28px;min-width:0}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px}.eyebrow{font-size:13px;color:var(--muted);margin:0 0 6px;letter-spacing:2px}h1{font-size:28px;letter-spacing:-1px;margin:0;font-weight:650}.goal-label{font-size:13px;color:var(--muted);display:grid;gap:6px}select{border:1px solid #c7d1c4;background:#ffffff;padding:10px;border-radius:6px;color:#25392f;min-width:210px}.route-summary{font-size:14px;margin:22px 0;min-height:22px}.route-summary strong{color:var(--green)}.map-toolbar{display:flex;justify-content:space-between;align-items:center;font-size:14px;border:1px solid #d8dfd3;border-bottom:0;padding:12px 15px;border-radius:10px 10px 0 0;background:#ffffff}.map-toolbar small{margin-left:12px;color:var(--muted);font-size:12px}.map-toolbar button{padding:4px 9px}.map-toolbar output{font-size:12px;display:inline-block;text-align:center;min-width:48px}.map-scroll{height:445px;overflow:auto;border:1px solid #d8dfd3;background-color:#ffffff;background-image:radial-gradient(#dce2d7 .8px,transparent .8px);background-size:18px 18px;cursor:grab}.map-scroll:active{cursor:grabbing}#map{position:relative;width:1320px;height:650px;transform-origin:0 0}#map svg{position:absolute;width:1320px;height:650px;pointer-events:none}.region{position:absolute;left:0;width:1320px;height:170px;pointer-events:none;border-top:1px solid #dde3d8}.region span{position:absolute;left:24px;top:15px;font-size:14px;letter-spacing:2px;font-weight:600}.node{position:absolute;width:202px;height:70px;text-align:left;padding:11px 13px;background:#ffffff;box-shadow:0 2px 4px #24302108;border-left:4px solid var(--region);transition:opacity .15s}.node small{display:block;font-size:12px;color:var(--muted);margin-top:7px}.node strong{font-size:14px;font-weight:600}.node.dim{opacity:.4}.node.selected{outline:2px solid #25392f;outline-offset:3px}.node.ready{background:#f1f5e9}.node.mastered{background:#e8f1e8}.legend{display:flex;flex-wrap:wrap;gap:18px;font-size:12px;color:var(--muted);padding:14px 0}.section-heading{display:flex;justify-content:space-between;align-items:center;margin:16px 0 12px}.section-heading h2{font-size:17px;margin:0}.section-heading span{font-size:13px;color:var(--muted)}#next-list{display:flex;flex-wrap:wrap;gap:10px}#next-list button{text-align:left;min-width:185px;flex:1;padding:15px}#next-list button span{float:right;color:#4b775a}footer{font-size:12px;color:var(--muted);line-height:1.8;margin-top:24px}aside{border-left:1px solid #dce1d7;background:#ffffff;padding:30px 25px;overflow-wrap:anywhere}aside h2{font-size:25px;line-height:1.4;margin:12px 0}aside h3{font-size:14px;margin:26px 0 10px}aside p{font-size:14px;color:#626f64;line-height:1.8}aside .purpose{font-size:16px}aside .tag{font-size:12px;letter-spacing:1px;color:var(--region)}.links{display:flex;gap:7px;flex-wrap:wrap}.links button{font-size:12px;padding:6px 9px}.checks{display:grid;gap:12px}.checks label{display:flex;align-items:start;gap:9px;font-size:14px;line-height:1.5}.checks input{accent-color:var(--green);margin-top:4px}.criterion{border-left:3px solid #a5b78d;background:#f0f3e9;padding:12px;font-size:14px;line-height:1.7}.task{font-size:14px;line-height:1.8;background:#f3f4ef;padding:15px;border-radius:7px}.primary{background:var(--green);color:#fff;border-color:var(--green);width:100%;margin-top:18px}.primary:hover{background:#123c62}.secondary{width:100%;font-size:13px;margin-top:10px}.note{font-size:12px!important}.empty{font-size:14px;padding:12px 0}.current{font-size:13px;color:#476f55;margin-top:15px}.storage-error{color:#995024}@media(min-width:1500px){.map-scroll{height:510px}}@media(max-width:950px){main{grid-template-columns:1fr}aside{border-left:0;border-top:1px solid #dce1d7}.workspace{padding:20px}.map-scroll{height:390px}}@media(max-width:570px){header{padding:0 16px}.brand span,.badge{display:none}.toolbar{align-items:stretch;flex-direction:column}h1{font-size:25px}.map-toolbar small{display:none}.workspace{padding:16px}.legend{gap:10px}.map-scroll{height:335px}.goal-label select{width:100%}}
.layout-debug{position:fixed;left:16px;bottom:76px;z-index:120;background:rgba(255,255,255,.96);border:1px solid #d8dedb;border-radius:14px;box-shadow:0 8px 28px #18382a20;font:13px system-ui;color:#33443c;width:310px}.layout-debug summary{cursor:pointer;padding:12px 16px;font-weight:650}.layout-debug-body{padding:0 16px 16px;max-height:65vh;overflow:auto}.layout-debug p,.layout-debug small{font-size:11px;color:#748078;line-height:1.5}.layout-debug label{display:block;margin:12px 0}.layout-debug label span{display:flex;align-items:center;gap:12px;margin-top:5px}.layout-debug input[type=range]{flex:1;min-width:0;accent-color:#4d8c78}.layout-debug input[type=number]{width:78px;padding:5px;border:1px solid #ccd5cf;border-radius:6px;background:white;color:#263e31}.layout-debug footer{display:flex;gap:8px;margin:16px 0 8px}.layout-debug button{padding:7px 12px;border:1px solid #ccd5cf;border-radius:8px;background:#f4f7f5;cursor:pointer}
