:root{--bg:#dfe3e8;--panel:#ffffffdb;--panel-solid:#fff;--line:#141e2d1a;--text:#18202b;--muted:#5e6a7a;--accent:#2f6bff;--accent-2:#ff8a1a;--ok:#1f9d55;--bad:#d64545;--radius:14px;--shadow:0 8px 30px #141e321f, 0 1px 3px #141e3214;color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;margin:0;overflow:hidden}#app,#viewport{position:absolute;inset:0}#viewport canvas{outline:none;display:block}button{font:inherit;color:inherit;cursor:pointer}.hidden{display:none!important}.topbar{pointer-events:none;justify-content:space-between;align-items:center;height:52px;display:flex;position:absolute;top:12px;left:12px;right:12px}.topbar>*{pointer-events:auto}.brand{background:var(--panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow);border-radius:12px;align-items:center;gap:10px;padding:7px 14px 7px 8px;display:flex}.logo{color:#ffd23a;background:linear-gradient(135deg,#1b2330,#3b4a60);border-radius:10px;place-items:center;width:36px;height:36px;font-size:19px;font-weight:800;display:grid}.brand-text b{font-size:15px;line-height:1.1;display:block}.brand-text span{color:var(--muted);font-size:12px}.modes{background:var(--panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow);border-radius:12px;gap:4px;padding:5px;display:flex}.modes button{color:var(--muted);background:0 0;border:0;border-radius:8px;padding:8px 18px;font-weight:600}.modes button.active{background:var(--text);color:#fff}.modes button:not(.active):hover{background:#0000000d}.top-actions{gap:8px;display:flex}.icon-btn{background:var(--panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);width:40px;height:40px;box-shadow:var(--shadow);border:0;border-radius:12px;font-size:16px;font-weight:700}.only-mobile{display:none}.panel{background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:var(--radius);box-shadow:var(--shadow);position:absolute}#left{flex-direction:column;width:290px;display:flex;top:76px;bottom:84px;left:12px;overflow:hidden}.panel-head{border-bottom:1px solid var(--line);padding:12px 12px 8px}.panel-title{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:8px;font-size:13px;font-weight:700}#search{border:1px solid var(--line);width:100%;font:inherit;background:#fff;border-radius:9px;outline:none;padding:8px 10px;font-size:14px}#search:focus{border-color:var(--accent)}#tree{flex:1;padding:6px;font-size:13.5px;overflow-y:auto}.sys{margin-bottom:2px}.sys-head{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;align-items:center;gap:7px;padding:7px 6px;font-weight:600;display:flex}.sys-head:hover{background:#0000000a}.sys-head .sys-name{flex:1}.sys-head .count{color:var(--muted);background:#0000000d;border-radius:10px;padding:1px 7px;font-size:11px}.sys-head.removed .sys-name{color:var(--muted);text-decoration:line-through}.caret{width:12px;color:var(--muted);text-align:center;font-size:10px;transition:transform .15s;display:inline-block}.sys:not(.collapsed)>.sys-head .caret{transform:rotate(90deg)}.sys.collapsed .sys-list{display:none}.dot{border-radius:50%;flex:none;width:10px;height:10px;box-shadow:inset 0 0 0 1px #00000026}.row{padding:5px 6px 5px calc(14px + var(--d) * 14px);cursor:pointer;border-radius:7px;align-items:center;gap:4px;display:flex}.row:hover{background:#2f6bff12}.row.selected{background:#2f6bff24}.row.opened .name{color:var(--accent);font-weight:600}.row .name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.row.removed .name{color:#9aa3ae;text-decoration:line-through}.caret.small.none{visibility:hidden}.node>.sub{display:none}.node.exp>.sub{display:block}.node.exp>.row .caret{transform:rotate(90deg)}.eye{color:var(--accent);background:0 0;border:0;border-radius:6px;flex:none;width:24px;height:22px;font-size:13px}.eye:hover{background:#2f6bff1f}.row.removed .eye,.sys-head.removed .eye{color:#b8c0ca}#right{width:340px;max-height:calc(100% - 170px);padding:16px 18px 18px;top:76px;right:12px;overflow-y:auto}#right h2{margin:6px 0 8px;font-size:20px;line-height:1.25}.crumbs{color:var(--muted);padding-right:24px;font-size:12px}.crumbs a{cursor:pointer}.crumbs a:hover{color:var(--accent);text-decoration:underline}.sys-chip{background:color-mix(in srgb, var(--c) 18%, white);border-radius:20px;align-items:center;gap:6px;padding:3px 10px 3px 8px;font-size:12px;font-weight:600;display:inline-flex}.sys-chip:before{content:"";background:var(--c);border-radius:50%;width:8px;height:8px}.desc{color:#2b3542;margin:12px 0;font-size:14px;line-height:1.55}.facts{border-collapse:collapse;width:100%;margin-bottom:12px;font-size:13px}.facts td{border-top:1px solid var(--line);vertical-align:top;padding:5px 0}.facts td:first-child{color:var(--muted);width:45%;padding-right:8px}.actions{flex-wrap:wrap;gap:6px;display:flex}.children{margin-top:14px}.children .label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;font-size:12px;font-weight:700}.chips{flex-wrap:wrap;gap:5px;display:flex}.chip-btn{border:1px solid var(--line);background:#fff;border-radius:16px;padding:4px 10px;font-size:12.5px}.chip-btn:hover{border-color:var(--accent);color:var(--accent)}.chip-btn.selected{background:var(--accent);color:#fff;border-color:var(--accent)}.chip-btn.removed{color:#9aa3ae;text-decoration:line-through}.close{color:var(--muted);background:0 0;border:0;border-radius:8px;width:30px;height:30px;font-size:22px;line-height:1;position:absolute;top:8px;right:10px}.close:hover{color:var(--text);background:#0000000f}.btn{border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 12px;font-size:13.5px;font-weight:500;transition:background .12s,border-color .12s}.btn:hover{border-color:#2f6bff80}.btn:disabled{opacity:.4;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:#1f58e6}.btn.accent{color:#a4520a;background:#fff4e8;border-color:#ffc88f}.btn.small{padding:4px 10px;font-size:12.5px}.btn.big{padding:11px 26px;font-size:15px}.btn.on{border-color:var(--accent);background:#eaf0ff}.dock{background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:var(--shadow);white-space:nowrap;border-radius:14px;align-items:center;gap:6px;max-width:calc(100% - 24px);padding:7px;display:flex;position:absolute;bottom:14px;left:50%;overflow-x:auto;transform:translate(-50%)}.tool{background:0 0;border:1px solid #0000;border-radius:9px;padding:7px 11px;font-size:13.5px;font-weight:600}.tool:hover{background:#0000000d}.tool.on{background:var(--text);color:#fff}#t-home{padding:4px 10px;font-size:17px}.sep{background:var(--line);width:1px;height:24px;margin:0 3px}.slider{color:var(--muted);align-items:center;gap:7px;padding:0 6px;font-size:13px;font-weight:600;display:flex}.slider input{width:92px;accent-color:var(--accent)}.seg{background:#0000000d;border-radius:9px;padding:2px;display:flex}.seg button{color:var(--muted);background:0 0;border:0;border-radius:7px;padding:5px 9px;font-size:13px;font-weight:700}.seg button.on{background:var(--accent-2);color:#fff}body.touring .dock,body[data-mode=exam] .dock,body.touring #left{display:none}.banner{color:#fff;box-shadow:var(--shadow);background:#1b2330;border-radius:12px;align-items:center;gap:10px;min-width:380px;max-width:calc(100% - 680px);padding:8px 10px 8px 16px;font-size:14px;display:flex;position:absolute;top:76px;left:50%;transform:translate(-50%)}.banner b{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.banner .b-label{color:#9fb0c8;white-space:nowrap}.banner input{accent-color:#ffb020;width:90px}.banner .btn{color:#fff;white-space:nowrap;background:#2d394b;border-color:#3d4b60}.tooltip{z-index:20;pointer-events:none;color:#fff;background:#141a24eb;border-radius:8px;align-items:center;gap:7px;max-width:360px;padding:6px 10px;font-size:13px;display:flex;position:fixed}.tooltip .hint{color:#9fb0c8;margin-left:4px;font-size:11.5px}.toast{color:#fff;box-shadow:var(--shadow);z-index:30;background:#1b2330;border-radius:12px;align-items:center;gap:12px;max-width:calc(100% - 24px);padding:10px 12px 10px 16px;font-size:14px;display:flex;position:absolute;bottom:82px;left:50%;transform:translate(-50%)}.modal{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:40;background:#141a2459;place-items:center;padding:16px;display:grid;position:absolute;inset:0}.modal-card{background:var(--panel-solid);box-shadow:var(--shadow);border-radius:18px;width:min(860px,100%);max-height:calc(100% - 32px);padding:26px 28px;position:relative;overflow-y:auto}.modal-card h2{margin:0 0 6px;font-size:24px}.muted{color:var(--muted);font-size:14.5px;line-height:1.5}.tour-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:16px;display:grid}.tour-card{text-align:left;border:1px solid var(--line);background:#f7f9fc;border-radius:14px;padding:16px;transition:transform .12s,border-color .12s,box-shadow .12s}.tour-card:hover{border-color:var(--accent);box-shadow:var(--shadow);background:#fff;transform:translateY(-2px)}.tc-icon{font-size:28px}.tc-title{margin:8px 0 4px;font-size:16px;font-weight:700}.tc-desc{color:var(--muted);font-size:13.5px;line-height:1.45}.tc-meta{color:var(--accent);margin-top:10px;font-size:12px;font-weight:600}.help-grid{grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:10px 18px;margin:16px 0 22px;display:grid}.help-item{align-items:flex-start;gap:12px;display:flex}.help-item .hi-icon{text-align:center;width:34px;font-size:22px}.help-item p{color:var(--muted);margin:3px 0 0;font-size:13.5px;line-height:1.45}.player{background:var(--panel-solid);width:min(760px,100% - 24px);box-shadow:var(--shadow);z-index:10;border-radius:16px;padding:14px 18px 12px;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.p-head{color:var(--muted);align-items:center;gap:10px;padding-right:30px;font-size:12.5px;font-weight:600;display:flex}.p-head .p-tour{flex:1}.p-head .close{top:6px}.p-title{margin:6px 0 4px;font-size:18px;font-weight:700}.p-text{color:#3a4554;min-height:46px;font-size:15px;line-height:1.55}.p-text span{border-radius:4px;transition:color .2s,background .2s}.p-text span.cur{color:var(--text);background:#fff1d6;box-shadow:0 0 0 2px #fff1d6}.p-bar{background:#00000012;border-radius:4px;height:4px;margin:10px 0;overflow:hidden}.p-bar div{background:var(--accent-2);height:100%;transition:width .4s}.p-ctrl{align-items:center;gap:6px;display:flex}.p-ctrl .grow{flex:1}.rate{border:1px solid var(--line);font:inherit;background:#fff;border-radius:9px;padding:6px;font-size:13px}.exam{background:var(--panel-solid);width:min(520px,100% - 24px);box-shadow:var(--shadow);z-index:10;border-radius:16px;padding:14px 18px;position:absolute;top:76px;left:50%;transform:translate(-50%)}.ex-head{color:var(--muted);justify-content:space-between;font-size:12.5px;font-weight:600;display:flex}.ex-score{color:var(--ok)}.ex-q{margin:6px 0 8px;font-size:20px;font-weight:700}.ex-title{font-size:22px;font-weight:800}.ex-hint{color:var(--muted);font-size:13.5px}.ex-fb{border-radius:10px;padding:8px 12px;font-size:14.5px}.ex-fb.ok{color:#13663a;background:#e3f6ea}.ex-fb.bad{color:#9a2424;background:#fdeaea}.ex-actions{justify-content:flex-end;gap:8px;margin-top:10px;display:flex}body[data-mode=exam] #left,body[data-mode=exam] #right{display:none}#loading{background:var(--bg);z-index:100;color:var(--muted);place-content:center;justify-items:center;gap:14px;font-weight:600;transition:opacity .5s;display:grid;position:absolute;inset:0}#loading.done{opacity:0;pointer-events:none}.spinner{border:4px solid #0000001a;border-top-color:var(--accent);border-radius:50%;width:38px;height:38px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=1100px){.banner{min-width:0;max-width:calc(100% - 24px);top:130px}}@media (width<=900px){.only-mobile{display:block}.brand-text span{display:none}.modes button{padding:8px 10px}#left{z-index:15;transition:transform .2s;transform:translate(calc(-100% - 20px))}#left.open{transform:none}#right{width:auto;max-height:45%;inset:auto 12px 84px}}
