:root{--bg: #070b16;--panel: rgba(16, 24, 43, .82);--panel-solid: #0e1729;--border: rgba(88, 130, 200, .18);--text: #dbe6ff;--muted: #7f92b8;--accent: #22d3ee;--accent2: #3b82f6;--green: #34d399;--amber: #fbbf24;--red: #f87171;--purple: #a78bfa;--fs-hero: 44px;--fs-display: 30px;--fs-xl: 26px;--fs-h2: 24px;--fs-lg: 22px;--fs-md: 20px;--fs-title: 16px;--fs-body: 14px;--fs-sm: 13px;--fs-xs: 12px;--fs-2xs: 11px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,PingFang SC,Microsoft YaHei,Segoe UI,Roboto,sans-serif;background:radial-gradient(1200px 600px at 15% -10%,rgba(34,211,238,.12),transparent),radial-gradient(1000px 500px at 100% 0%,rgba(59,130,246,.14),transparent),var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}.boot-wait{height:100%;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:var(--fs-body);letter-spacing:1px}*{scrollbar-width:thin;scrollbar-color:rgba(120,140,175,.4) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:#788caf61;border-radius:8px;border:3px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background-color:#788caf99;background-clip:content-box}::-webkit-scrollbar-corner{background:transparent}.app.light{scrollbar-color:rgba(100,120,150,.35) transparent}.app.light ::-webkit-scrollbar-thumb{background-color:#64789652;background-clip:content-box}.app.light ::-webkit-scrollbar-thumb:hover{background-color:#6478968c;background-clip:content-box}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.topbar{display:flex;align-items:center;gap:12px;flex-wrap:nowrap;padding:8px 16px;white-space:nowrap;background:linear-gradient(90deg,#0e1729f2,#0e172999);border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:10px;flex:0 0 auto}.brand .logo{width:34px;height:34px;border-radius:9px;flex:0 0 auto;background:linear-gradient(135deg,var(--accent),var(--accent2));display:grid;place-items:center;font-weight:800;color:#04121f;font-size:var(--fs-title);box-shadow:0 0 22px #22d3ee80}.brand h1{font-size:var(--fs-title);margin:0;letter-spacing:.5px;white-space:nowrap}.brand .sub{font-size:var(--fs-2xs);color:var(--muted);margin-top:2px;white-space:nowrap}.navbar{padding:6px 16px;background:linear-gradient(90deg,#0e1729d9,#0e172980);border-bottom:1px solid var(--border)}.tabs{display:flex;gap:4px;flex-wrap:wrap;row-gap:6px}.tab{padding:7px 11px;border-radius:8px;cursor:pointer;font-size:var(--fs-sm);white-space:nowrap;flex:0 0 auto;color:var(--muted);border:1px solid transparent;transition:all .15s}.tab:hover{color:var(--text);background:#3b82f614}.tab.active{color:#fff;background:linear-gradient(135deg,#22d3ee38,#3b82f638);border-color:var(--border)}.spacer{flex:1}.engine-badge{display:flex;align-items:center;gap:7px;font-size:var(--fs-2xs);color:var(--muted);flex:0 0 auto;padding:6px 10px;border:1px solid var(--border);border-radius:20px;background:var(--panel);max-width:220px;overflow:hidden;text-overflow:ellipsis}.dot{width:8px;height:8px;border-radius:50%}.dot.on{background:var(--green);box-shadow:0 0 8px var(--green)}.dot.off{background:var(--amber);box-shadow:0 0 8px var(--amber)}.content{flex:1;overflow:auto;padding:16px 20px}.body{display:flex;flex:1;min-height:0}.sidebar{width:216px;flex:0 0 auto;display:flex;flex-direction:column;background:linear-gradient(180deg,#0e1729e6,#0a101eb3);border-right:1px solid var(--border);transition:width .16s}.sidebar.collapsed{width:58px}.side-top{padding:10px 10px 4px}.side-scroll{flex:1;overflow-y:auto;overflow-x:hidden;padding:4px 8px 10px}.side-foot{padding:9px 12px;font-size:var(--fs-xs);color:var(--muted);cursor:pointer;border-top:1px solid var(--border);text-align:center;white-space:nowrap}.side-foot:hover{color:var(--text)}.nav-group{margin-bottom:2px}.ng-head{display:flex;align-items:center;gap:8px;padding:12px 10px 5px;cursor:pointer;color:var(--muted);font-size:var(--fs-xs);font-weight:700;letter-spacing:.5px;-webkit-user-select:none;user-select:none;background:transparent}.ng-head:hover{color:var(--text)}.ng-icon{width:16px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:var(--muted);opacity:.85}.ng-label{flex:1 1 auto}.ng-caret{transition:transform .15s;opacity:.45;font-size:var(--fs-body)}.ng-caret.open{transform:rotate(90deg)}.ng-items{display:flex;flex-direction:column;gap:1px;padding:1px 2px 3px}.nav-item{display:flex;align-items:center;gap:9px;padding:8px 10px;min-height:34px;border-radius:7px;cursor:pointer;font-size:var(--fs-sm);line-height:1;color:#8fa2c8;border:1px solid transparent;border-left:3px solid transparent;white-space:nowrap;transition:all .12s}.nav-item:hover{color:var(--text);background:#3b82f61a}.nav-item.active{color:#fff;background:linear-gradient(135deg,#22d3ee3d,#3b82f63d);border-left-color:var(--accent)}.nav-item.opened{color:#cfe0ff}.nav-item .ni-dot{width:5px;height:5px;border-radius:50%;background:#5b6c92;flex:0 0 auto;margin-left:4px}.nav-item.active .ni-dot{background:var(--accent);box-shadow:0 0 6px var(--accent)}.nav-item.opened .ni-dot{background:var(--accent2)}.nav-item .ni-icon{width:20px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:#9aa8c4}.nav-item:hover .ni-icon{color:var(--text)}.nav-item.active .ni-icon,.home-item .ni-icon{color:var(--accent)}.nav-item .ni-label{flex:1 1 auto;display:flex;align-items:center;gap:6px}.home-item{font-weight:600;font-size:var(--fs-sm);color:var(--text);padding:8px 10px;min-height:34px;border-radius:7px;border:1px solid transparent;border-left:3px solid transparent;background:transparent}.home-item.active{background:linear-gradient(135deg,#22d3ee33,#3b82f633);border-left-color:var(--accent)}.tabstrip{display:flex;align-items:center;gap:4px;padding:6px 12px 0;overflow-x:auto;background:#0e172980;border-bottom:1px solid var(--border);white-space:nowrap}.wtab{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;cursor:pointer;font-size:var(--fs-sm);color:var(--muted);border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;flex:0 0 auto;transition:all .12s}.wtab:hover{color:var(--text);background:#3b82f614}.wtab.active{color:#fff;background:var(--panel-solid);border-color:var(--border);position:relative;top:1px}.wtab-x{font-size:var(--fs-title);line-height:1;opacity:.6;border-radius:4px;padding:0 3px}.wtab-x:hover{opacity:1;background:#f8717140;color:#fca5a5}.ni-tag{font-size:var(--fs-2xs);padding:1px 5px;border-radius:6px;font-weight:700;background:#22d3ee2e;color:#67e8f9}.sidebar.collapsed .ng-head,.sidebar.collapsed .nav-item{justify-content:center;padding:8px 4px}.sidebar.collapsed .ni-dot{display:none}.main{flex:1 1 auto;display:flex;flex-direction:column;min-width:0}.crumb{display:flex;align-items:center;gap:8px;padding:9px 20px;font-size:var(--fs-xs);color:var(--muted);border-bottom:1px solid var(--border);background:#0e172966}.crumb .cb-home{cursor:pointer}.crumb .cb-home:hover{color:var(--text)}.crumb .cb-sep{opacity:.5}.crumb .cb-cur{color:var(--text);font-weight:600}.kiosk{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:var(--bg);overflow:auto}.kiosk>.content,.kiosk .content{height:100%}.kiosk-exit{position:fixed;top:12px;right:16px;z-index:1200;padding:7px 14px!important}.home{max-width:1200px}.home-hero{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.home-hero h2{margin:0;font-size:var(--fs-lg)}.home-sub{color:var(--muted);font-size:var(--fs-sm);margin-top:6px}.home-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:18px}.home-kpi{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:12px 16px}.hk-label{font-size:var(--fs-xs);color:var(--muted)}.hk-value{font-size:var(--fs-h2);font-weight:800;margin-top:4px}.hk-value small{font-size:var(--fs-xs);color:var(--muted);font-weight:500}.home-section{font-size:var(--fs-sm);color:var(--muted);font-weight:700;margin:18px 0 10px;letter-spacing:.5px}.home-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.launch-card{position:relative;background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:16px 16px 14px;cursor:pointer;overflow:hidden;transition:transform .12s,box-shadow .12s}.launch-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #00000059}.launch-card .lc-bar{position:absolute;left:0;top:0;bottom:0;width:4px}.launch-card.screen{background:linear-gradient(135deg,#141e34b3,#10182b99)}.lc-title{font-size:var(--fs-title);font-weight:700;margin-bottom:6px}.lc-desc{font-size:var(--fs-xs);color:var(--muted);line-height:1.5;min-height:34px}.lc-go{font-size:var(--fs-xs);font-weight:700;margin-top:8px}.filterbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 14px;margin-bottom:12px;background:var(--panel);border:1px solid var(--border);border-radius:12px}.fb-field{display:flex;align-items:center;gap:7px}.fb-field label{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap}.fb-field .input,.filterbar .input,.filterbar .btn{height:34px;padding-top:0;padding-bottom:0}.filterbar .btn+.btn,.row-acts .btn+.btn,.btn-group .btn+.btn,.drawer-foot .btn+.btn,.panel-head .btn+.btn,.filterbar .btn.sm+.btn.sm,.row-acts .btn.sm+.btn.sm,.btn-group .btn.sm+.btn.sm,.panel-head .btn.sm+.btn.sm{margin-left:0}.pager{display:flex;align-items:center;gap:3px;padding:8px 2px 2px;flex-wrap:wrap}.pg-total{font-size:var(--fs-xs);color:var(--muted);margin-right:10px}.pg-btn{min-width:22px;height:22px;padding:0 5px;border-radius:5px;cursor:pointer;background:transparent;color:var(--text-2);border:1px solid var(--border);font-size:var(--fs-xs);display:inline-flex;align-items:center;justify-content:center;transition:all .12s}.pg-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.pg-btn.active{background:var(--accent);color:#04121f;border-color:var(--accent);font-weight:700}.pg-btn:disabled{opacity:.4;cursor:not-allowed}.pg-dots{color:var(--muted);padding:0 3px;font-size:var(--fs-xs)}.pager .input{height:22px;padding:0 6px;font-size:var(--fs-xs);border-radius:5px}.drawer-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;background:#0408128c;display:flex;justify-content:flex-end}.drawer{width:620px;max-width:92vw;height:100%;background:var(--panel-solid);border-left:1px solid var(--border);display:flex;flex-direction:column;box-shadow:-12px 0 40px #0006;animation:drawin .16s ease-out}@keyframes drawin{0%{transform:translate(30px);opacity:.6}to{transform:none;opacity:1}}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border)}.drawer-head b{font-size:var(--fs-title)}.drawer-x{cursor:pointer;font-size:var(--fs-lg);color:var(--muted);line-height:1}.drawer-x:hover{color:var(--text)}.drawer-body{flex:1;overflow:auto;padding:14px 18px}.segbtns{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.segbtns .seg{padding:4px 12px;font-size:var(--fs-xs);cursor:pointer;color:var(--muted);background:transparent}.segbtns .seg.on{background:linear-gradient(135deg,#22d3ee38,#3b82f638);color:#fff}.grid-roster th,.grid-roster td{text-align:center;white-space:nowrap}.grid-roster .shift-col{background:#3b82f61f;border-left:1px solid var(--border)}.grid-roster .dir-col{font-weight:500;font-size:var(--fs-2xs);color:var(--muted)}.grid-roster .t-up{color:#67e8f9}.grid-roster .t-down{color:#fcd34d}.grid-roster tbody tr:nth-child(2n) td{background:#3b82f60a}.kpi-row{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:14px}.kpi{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:14px 16px;position:relative;overflow:hidden}.kpi:after{content:"";position:absolute;right:-20px;top:-20px;width:70px;height:70px;background:radial-gradient(circle,rgba(34,211,238,.25),transparent 70%)}.kpi .label{font-size:var(--fs-xs);color:var(--muted)}.kpi .value{font-size:var(--fs-xl);font-weight:800;margin-top:6px}.kpi .value small{font-size:var(--fs-sm);color:var(--muted);font-weight:500}.kpi-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:12px 16px;flex:1 1 auto}.kpi-card .kpi-label{font-size:var(--fs-xs);color:var(--muted)}.kpi-card .kpi-value{font-size:var(--fs-h2);font-weight:800;margin-top:4px}.kpi-card .kpi-sub{font-size:var(--fs-2xs);color:var(--muted);margin-top:2px}.grid-main{display:grid;grid-template-columns:1fr 340px;gap:14px;height:calc(100% - 110px)}.grid-forecast{display:grid;grid-template-columns:1fr 1fr;gap:14px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;min-height:0}.panel h3{margin:0 0 10px;font-size:var(--fs-body);display:flex;align-items:center;gap:8px}.panel h3 .bar{width:4px;height:15px;background:var(--accent);border-radius:2px}.map-wrap{position:relative;padding:0;overflow:hidden}.leaflet-container{height:100%;width:100%;background:#0a0f1e;border-radius:14px}.map-legend{position:absolute;z-index:500;bottom:12px;left:12px;background:#0a0f1ed1;border:1px solid var(--border);border-radius:10px;padding:8px 12px;font-size:var(--fs-xs);display:flex;gap:14px;flex-wrap:wrap}.map-legend span{display:flex;align-items:center;gap:6px}.chip{width:10px;height:10px;border-radius:3px}.side-col{display:flex;flex-direction:column;gap:14px;min-height:0}.alerts-list{overflow:auto;display:flex;flex-direction:column;gap:8px}.alert-item{border-left:3px solid var(--amber);background:#fbbf240f;padding:8px 10px;border-radius:8px;font-size:var(--fs-xs)}.alert-item.critical{border-color:var(--red);background:#f8717114}.alert-item.info{border-color:var(--accent);background:#22d3ee0f}.alert-item .t{font-weight:700;margin-bottom:3px}.alert-item .d{color:var(--muted);line-height:1.4}.alert-item .ack{float:right;color:var(--accent);cursor:pointer;font-size:var(--fs-2xs)}table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid rgba(88,130,200,.1)}th{color:var(--muted);font-weight:600;position:sticky;top:0;background:var(--panel-solid)}tr:hover td{background:#3b82f60d}.table-wrap{overflow:auto}.badge{padding:2px 8px;border-radius:6px;font-size:var(--fs-2xs);font-weight:600}.badge.urban{background:#3b82f633;color:#93c5fd}.badge.shuttle{background:#22d3ee33;color:#67e8f9}.badge.rural{background:#fbbf2433;color:#fcd34d}.badge.microcirc{background:#a78bfa33;color:#c4b5fd}.badge.high{background:#f8717133;color:#fca5a5}.badge.med{background:#fbbf2433;color:#fcd34d}.pill{padding:2px 8px;border-radius:12px;font-size:var(--fs-2xs)}.pill.pending{background:#fbbf242e;color:#fcd34d}.pill.assigned{background:#34d3992e;color:#6ee7b7}.pill.done{background:#7f92b82e;color:#9fb3d8}.rec-card{border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin-bottom:10px;background:#141e3480}.rec-card .head{display:flex;align-items:center;gap:10px;margin-bottom:6px}.rec-card .action{font-weight:700;font-size:var(--fs-body)}.rec-card .save{margin-left:auto;color:var(--green);font-weight:700}.rec-card .reason{color:var(--muted);font-size:var(--fs-xs);margin-bottom:4px}.rec-card .detail{font-size:var(--fs-sm);line-height:1.5}.big-saving{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}.save-card{text-align:center;padding:16px;border-radius:14px;border:1px solid var(--border);background:linear-gradient(135deg,#34d3991a,#3b82f60f)}.save-card .num{font-size:var(--fs-display);font-weight:800;color:var(--green)}.save-card .lbl{font-size:var(--fs-xs);color:var(--muted);margin-top:4px}.btn{display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#041018;border:none;padding:9px 16px;border-radius:9px;font-weight:700;cursor:pointer;font-size:var(--fs-sm);white-space:nowrap}.btn:hover{filter:brightness(1.1)}.btn:disabled,.btn[disabled]{opacity:.45;cursor:not-allowed;filter:grayscale(.35)}.btn:disabled:hover,.btn[disabled]:hover{filter:grayscale(.35)}.btn.ghost{background:transparent;border:1px solid var(--border);color:var(--text)}.btn.sm{padding:4px 12px;font-size:var(--fs-xs);border-radius:7px;font-weight:600}.btn.danger{background:#e5484d;color:#fff}.btn.danger:hover{filter:brightness(1.06)}.btn.gray{background:#6b7686;color:#fff}.btn+.btn{margin-left:8px}.btn.sm+.btn.sm{margin-left:8px}td:has(>.btn),.row-acts{white-space:nowrap}.row-acts{display:inline-flex;align-items:center;gap:8px}.app.light .btn.danger{background:var(--danger)}.app.light .btn.danger:hover{background:#b91c1c;filter:none}.app.light .btn.gray{background:#8592a6}.app.light .btn.gray:hover{background:#6b7686;filter:none}.input,select.input{background:#0a0f1e99;border:1px solid var(--border);color:var(--text);padding:9px 12px;border-radius:9px;font-size:var(--fs-sm);width:100%}.form-row{display:flex;gap:10px;margin-bottom:10px}.form-row>*{flex:1}label.fld{display:block;font-size:var(--fs-xs);color:var(--muted);margin-bottom:4px}.chat-wrap{display:flex;flex-direction:column;height:calc(100vh - 140px)}.chat-log{flex:1;overflow:auto;display:flex;flex-direction:column;gap:12px;padding:6px}.msg{max-width:78%;padding:11px 14px;border-radius:12px;font-size:var(--fs-body);line-height:1.6;white-space:pre-wrap}.msg.user{align-self:flex-end;background:linear-gradient(135deg,var(--accent2),#2563eb);color:#fff}.msg.bot{align-self:flex-start;background:var(--panel-solid);border:1px solid var(--border)}.msg .trace{margin-top:8px;font-size:var(--fs-2xs);color:var(--muted);border-top:1px dashed var(--border);padding-top:6px}.msg.bot .md{white-space:normal}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md .md-p{margin:6px 0}.md .md-h{margin:10px 0 6px;font-weight:700;line-height:1.35}.md h3.md-h{font-size:var(--fs-title)}.md h4.md-h{font-size:var(--fs-body)}.md h5.md-h,.md h6.md-h{font-size:var(--fs-sm)}.md .md-list{margin:6px 0;padding-left:20px}.md .md-list li{margin:3px 0}.md .md-code{background:#788cb42e;border-radius:4px;padding:1px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--fs-xs)}.md .md-pre{background:#0a0e1699;border:1px solid var(--border);border-radius:8px;padding:10px 12px;overflow-x:auto;margin:8px 0}.md .md-pre code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--fs-xs);color:#c9d1d9;white-space:pre}.md .md-quote{margin:8px 0;padding:4px 12px;border-left:3px solid var(--accent2);color:var(--muted);background:#5882c80f;border-radius:0 6px 6px 0}.md .md-hr{border:none;border-top:1px solid var(--border);margin:10px 0}.md a{color:var(--accent2)}.md strong{color:#e6edf6}.type-caret{display:inline-block;width:7px;height:14px;margin-left:2px;background:var(--accent2);vertical-align:text-bottom;animation:blink 1s steps(2) infinite}@keyframes blink{0%,50%{opacity:1}50.01%,to{opacity:0}}.type-status{color:var(--muted);font-size:var(--fs-sm)}.type-dots:after{content:"";animation:dots 1.4s steps(4,end) infinite}@keyframes dots{0%{content:""}25%{content:"·"}50%{content:"··"}75%{content:"···"}to{content:""}}.chat-input{display:flex;gap:10px;margin-top:12px}.suggests{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.suggest{font-size:var(--fs-xs);padding:6px 12px;border-radius:16px;border:1px solid var(--border);cursor:pointer;color:var(--muted)}.suggest:hover{color:var(--text);background:#3b82f614}.user-box{text-align:right;margin:0 4px;flex:0 0 auto}.user-name{font-size:var(--fs-sm);font-weight:700;white-space:nowrap}.user-role{font-size:var(--fs-2xs);color:var(--muted);white-space:nowrap}.topbar>.btn.ghost{flex:0 0 auto}.login-bg{height:100vh;display:grid;place-items:center;background:radial-gradient(1200px 700px at 20% 0%,rgba(34,211,238,.16),transparent),radial-gradient(1000px 600px at 100% 100%,rgba(59,130,246,.18),transparent),var(--bg)}.login-card{width:440px;background:var(--panel);border:1px solid var(--border);border-radius:18px;padding:32px 34px;box-shadow:0 30px 80px #00000080}.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:24px}.login-brand .logo{width:48px;height:48px;border-radius:12px;background:linear-gradient(135deg,var(--accent),var(--accent2));display:grid;place-items:center;font-weight:800;color:#04121f;font-size:var(--fs-h2);box-shadow:0 0 26px #22d3ee80}.login-brand h1{font-size:var(--fs-md);margin:0}.login-brand .sub{font-size:var(--fs-2xs);color:var(--muted);margin-top:3px}.login-form .fld{margin-bottom:4px}.login-err{color:var(--red);font-size:var(--fs-sm);margin-top:10px}.login-demo{margin-top:18px;font-size:var(--fs-xs);color:var(--muted)}.login-demo-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.login-foot{margin-top:22px;padding-top:16px;border-top:1px solid var(--border);font-size:var(--fs-2xs);color:var(--muted);text-align:center;line-height:1.6}.cmd-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;background:#060a14;overflow:hidden}.cmd-map{position:absolute;top:0;right:0;bottom:0;left:0;height:100%;width:100%;background:#060a14}.leaflet-container.cmd-map{background:#060a14}.hub-label{background:#08101fd9!important;border:1px solid rgba(34,211,238,.5)!important;color:#a5f3fc!important;font-size:var(--fs-2xs)!important;box-shadow:none!important}.hub-label:before{border-top-color:#22d3ee80!important}.cmd-title{position:absolute;top:0;left:0;right:0;height:62px;z-index:2100;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#060e1ef2,#060e1e1a);pointer-events:none}.cmd-title-main{font-size:var(--fs-xl);font-weight:800;letter-spacing:4px;color:#e8f7ff;text-shadow:0 0 18px rgba(34,211,238,.75),0 0 4px rgba(34,211,238,.6);font-family:Microsoft YaHei,sans-serif}.cmd-clock{position:absolute;left:24px;top:20px;color:#7fd0e6;font-size:var(--fs-body);font-variant-numeric:tabular-nums}.cmd-actions{position:absolute;right:20px;top:15px;display:flex;gap:8px;pointer-events:auto}.cmd-btn{background:#22d3ee24;border:1px solid rgba(34,211,238,.45);color:#a5f3fc;padding:7px 14px;border-radius:8px;cursor:pointer;font-size:var(--fs-sm)}.cmd-btn:hover{background:#22d3ee47}.cmd-panel{position:absolute;z-index:2100;top:74px;width:336px;background:linear-gradient(180deg,#0a1428d1,#08101fc7);border:1px solid rgba(56,120,190,.35);border-radius:12px;padding:14px 16px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 10px 40px #00000080;max-height:calc(100vh - 150px);overflow:auto}.cmd-left{left:18px}.cmd-right{right:18px}.cmd-h{font-size:var(--fs-body);font-weight:700;color:#bfe6ff;margin-bottom:10px;padding-left:10px;border-left:3px solid #22d3ee;letter-spacing:1px}.cmd-kpi-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.cmd-kpi{background:#22d3ee0f;border:1px solid rgba(56,120,190,.25);border-radius:9px;padding:10px 8px;text-align:center}.cmd-kpi .v{font-size:var(--fs-md);font-weight:800;color:#22d3ee;line-height:1.1}.cmd-kpi .v span{font-size:var(--fs-2xs);color:#7f92b8;font-weight:500;margin-left:2px}.cmd-kpi .l{font-size:var(--fs-2xs);color:#9fb3d8;margin-top:4px}.cmd-rank{display:flex;flex-direction:column;gap:7px}.cmd-rank-row{display:flex;align-items:center;gap:8px;font-size:var(--fs-xs)}.cmd-rank-row .idx{width:18px;height:18px;border-radius:4px;display:grid;place-items:center;background:#7f92b840;color:#cfe0ff;font-weight:700;font-size:var(--fs-2xs)}.cmd-rank-row .idx[data-top="1"]{background:linear-gradient(135deg,#f59e0b,#f87171);color:#fff}.cmd-rank-row .code{width:42px;color:#dbe6ff;font-weight:600}.cmd-rank-row .val{width:42px;text-align:right;color:#9fb3d8}.bar-bg{flex:1;height:9px;background:#7f92b826;border-radius:5px;overflow:hidden}.bar-fill{height:100%;border-radius:5px}.cmd-metric{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:var(--fs-xs)}.cmd-metric .ml{width:48px;color:#9fb3d8}.cmd-metric .mv{width:48px;text-align:right;font-weight:700}.cmd-flow-legend{margin-top:14px}.legend-bar{height:12px;border-radius:6px;background:linear-gradient(90deg,#2dd4bf,#a3e635,#facc15,#fb923c,#f87171)}.legend-scale{display:flex;justify-content:space-between;font-size:var(--fs-2xs);color:#7f92b8;margin-top:3px}.cmd-ticker{position:absolute;bottom:0;left:0;right:0;height:40px;z-index:2100;display:flex;align-items:center;gap:12px;background:linear-gradient(0deg,#060e1ef2,#060e1e33);padding:0 16px;overflow:hidden}.ticker-tag{flex:0 0 auto;background:#f8717133;border:1px solid rgba(248,113,113,.5);color:#fca5a5;padding:4px 10px;border-radius:6px;font-size:var(--fs-xs);font-weight:700}.ticker-track{display:flex;gap:40px;white-space:nowrap;animation:ticker 40s linear infinite}.ticker-item{font-size:var(--fs-sm);color:#cfe0ff}.ticker-item.warning{color:#fcd34d}.ticker-item.critical{color:#fca5a5}.ticker-item.info{color:#7fd0e6}@keyframes ticker{0%{transform:translate(0)}to{transform:translate(-50%)}}.loading{color:var(--muted);font-size:var(--fs-sm);padding:20px;text-align:center}.vehicle-dot{border-radius:50%;border:2px solid #fff}.scroll{overflow:auto}.mini-note{font-size:var(--fs-2xs);color:var(--muted);margin-top:6px}.app.light{--bg: #ffffff;--surface: #ffffff;--card: #eef2f8;--surface-2: #e3e9f3;--surface-3: #d8e0ec;--sidebar-bg: #ffffff;--panel: var(--card);--panel-solid: var(--card);--chrome: #1f2a44;--chrome-2: #172035;--chrome-hover: #2b3856;--chrome-text: #ccd5e6;--chrome-dim: #97a4c0;--chrome-border: rgba(255,255,255,.09);--brand-lit: #7aa5ff;--border: #dfe4ee;--border-strong: #c7cfdd;--text: #141c28;--text-2: #2f3a49;--muted: #4c5666;--brand: #2563eb;--brand-hover: #1d4ed8;--brand-soft: #e9f0fe;--brand-softer: #f2f6ff;--danger: #dc2626;--danger-soft: #fdecec;--accent: var(--brand);--accent2: var(--brand-hover);background:var(--bg);color:var(--text)}.app.light .topbar{background:var(--chrome);border-bottom:1px solid var(--chrome-border);box-shadow:0 1px 6px #080e1e2e}.app.light .brand h1{color:#fff}.app.light .brand .sub{color:var(--chrome-dim)}.app.light .user-name{color:#fff}.app.light .user-role{color:var(--chrome-dim)}.app.light .engine-badge{background:#ffffff14;border-color:var(--chrome-border);color:var(--chrome-text)}.app.light .topbar .btn.ghost{background:transparent;color:var(--chrome-text);border:1px solid rgba(255,255,255,.22);box-shadow:none}.app.light .topbar .btn.ghost:hover{background:#ffffff1a;color:#fff;border-color:#fff6}.app.light .sidebar{background:var(--chrome);border-right:1px solid var(--chrome-border)}.app.light .content{background:var(--bg)}.app.light .side-foot{color:var(--chrome-dim);border-top:1px solid var(--chrome-border)}.app.light .side-foot:hover{color:#fff}.app.light .ng-head{background:transparent;color:var(--chrome-dim)}.app.light .ng-head:hover{color:#fff}.app.light .ng-icon,.app.light .ng-caret{color:var(--chrome-dim)}.app.light .nav-group.open .ng-head{color:#fff}.app.light .nav-group.open .ng-icon{color:var(--brand-lit)}.app.light .ng-items{margin:2px 6px 4px;padding:3px 0;background:var(--chrome-2);border-radius:8px;box-shadow:inset 0 0 0 1px #ffffff0a}.app.light .sidebar.collapsed .ng-items{margin:0;padding:1px 2px 3px;background:transparent;box-shadow:none}.app.light .nav-item{color:var(--chrome-text);font-weight:500}.app.light .nav-item .ni-icon{color:#8493b0}.app.light .nav-item:hover{color:#fff;background:var(--chrome-hover)}.app.light .nav-item:hover .ni-icon{color:#fff}.app.light .nav-item.active{color:#fff;background:var(--brand);border-left-color:var(--brand-lit);font-weight:600}.app.light .nav-item.active .ni-icon,.app.light .nav-item.opened{color:#fff}.app.light .nav-item.opened .ni-icon{color:var(--brand-lit)}.app.light .home-item{background:transparent;color:var(--chrome-text)}.app.light .home-item:hover{background:var(--chrome-hover);color:#fff}.app.light .home-item.active{background:var(--brand);color:#fff;border-left-color:var(--brand-lit)}.app.light .home-item .ni-icon{color:var(--brand-lit)}.app.light .ni-tag{background:#ffffff24;color:#dbe6ff}.app.light .tabstrip{background:var(--bg);border-bottom:1px solid var(--border)}.app.light .wtab{color:var(--text-2);background:var(--card);border:1px solid var(--border);border-bottom:none}.app.light .wtab:hover{color:var(--text);background:var(--surface-2)}.app.light .wtab.active{color:#fff;background:var(--brand);border-color:var(--brand);box-shadow:none}.app.light .wtab.active .wtab-x{opacity:.85}.app.light .wtab-x:hover{background:#dc262624;color:#dc2626}.app.light .wtab.active .wtab-x:hover{background:#ffffff47;color:#fff}.app.light .panel{background:var(--card);border:1px solid var(--border);border-radius:10px;box-shadow:0 1px 2px #1018280d}.app.light .panel h3{color:var(--text)}.app.light th{background:var(--surface-2);color:var(--text-2)}.app.light th,.app.light td{border-bottom:1px solid var(--border)}.app.light td{color:var(--text-2)}.app.light tr:hover td{background:var(--surface-2)}.app.light .input,.app.light select.input{background:#e7ecf4;border:1px solid var(--border-strong);color:var(--text)}.app.light .input:focus,.app.light select.input:focus{border-color:var(--brand);box-shadow:0 0 0 2px #2563eb26;outline:none}.app.light .input::placeholder{color:var(--muted)}.app.light .btn{background:var(--brand);color:#fff;box-shadow:0 1px 2px #2563eb40}.app.light .btn:hover{background:var(--brand-hover);filter:none}.app.light .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border-strong);box-shadow:none}.app.light .btn.ghost:hover{background:var(--surface-2);border-color:var(--brand);color:var(--brand)}.app.light .filterbar{background:var(--card)}.app.light .fb-field label{color:var(--text-2)}.app.light .kpi,.app.light .kpi-card,.app.light .home-kpi{background:var(--card);border:1px solid var(--border)}.app.light .kpi:after,.app.light .home-kpi:after{background:radial-gradient(circle,rgba(37,99,235,.12),transparent 70%)}.app.light .kpi .label,.app.light .kpi-card .kpi-label,.app.light .hk-label{color:var(--muted)}.app.light .home-section{color:var(--text-2)}.app.light .rec-card{background:var(--surface-2);border:1px solid var(--border)}.app.light .rec-card .reason{color:var(--text-2)}.app.light .launch-card{background:var(--card);box-shadow:0 1px 3px #1428500f}.app.light .launch-card:hover{box-shadow:0 8px 24px #1428501f}.app.light .launch-card.screen{background:#e4ecfb}.app.light .lc-desc{color:var(--muted)}.app.light .segbtns{border-color:var(--border)}.app.light .segbtns .seg{color:var(--text-2)}.app.light .segbtns .seg.on{color:#fff;background:var(--brand)}.app.light .tab{color:var(--text-2)}.app.light .tab:hover{color:var(--text);background:var(--surface-2)}.app.light .tab.active{color:#fff;background:var(--brand);border-color:var(--brand)}.app.light .suggest{color:var(--text-2);border-color:var(--border)}.app.light .suggest:hover{color:var(--brand);background:var(--brand-soft)}.app.light .mini-note,.app.light .loading{color:var(--muted)}.app.light .pg-btn{color:var(--text-2)}.app.light .pg-btn:hover:not(:disabled){border-color:var(--brand);color:var(--brand)}.app.light .pg-btn.active{background:var(--brand);color:#fff;border-color:var(--brand)}.app.light .pg-total,.app.light .pg-dots{color:var(--muted)}.app.light .badge.urban{background:#e9f0fe;color:#1d4ed8}.app.light .badge.shuttle{background:#e0f2fe;color:#0369a1}.app.light .badge.rural{background:#fef3e2;color:#b45309}.app.light .badge.microcirc{background:#f1ecfe;color:#6d28d9}.app.light .badge.high{background:#fdeaea;color:#b91c1c}.app.light .badge.med,.app.light .pill.pending{background:#fef3e2;color:#b45309}.app.light .pill.assigned{background:#e6f6ee;color:#047857}.app.light .pill.done{background:var(--surface-2);color:var(--text-2)}.app.light .grid-roster .shift-col{background:var(--brand-softer);border-left:1px solid var(--border)}.app.light .grid-roster tbody tr:nth-child(2n) td{background:#f7f9fd}.app.light .grid-roster .dir-col{color:var(--muted)}.app.light .grid-roster .t-up{color:#0369a1}.app.light .grid-roster .t-down{color:#b45309}.app.light .msg.bot{background:var(--surface-2);border:1px solid var(--border-strong);color:var(--text)}.app.light .msg .trace{color:var(--muted);border-top-color:var(--border-strong)}.app.light .md strong{color:var(--text)}.app.light .md a{color:var(--brand)}.app.light .md-code{background:var(--surface-3);color:var(--text)}.app.light .md-quote{color:var(--text-2);background:var(--surface-3);border-left-color:var(--brand)}.app.light .msg.user{background:var(--brand);color:#fff}.app.light .alert-item .d{color:var(--text-2)}.app.light .drawer{background:var(--surface)}.app.light .drawer-head{border-bottom-color:var(--border)}.app.light .drawer-x{color:var(--muted)}.app.light .drawer-x:hover{color:var(--text)}.app.light .drawer-mask{background:#14203859}.app.light .panel h3 .bar{background:var(--brand)}.tier{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:10px;font-size:var(--fs-xs);line-height:18px;white-space:nowrap;font-weight:500}.app.light .tier.t0{background:#e8ecf3;color:#3c4658}.app.light .tier.t1{background:var(--brand-soft);color:var(--brand-hover)}.app.light .tier.t2{background:#fdf0d8;color:#8a5a00}.banner{display:flex;align-items:flex-start;gap:10px;padding:11px 14px;border-radius:9px;margin-bottom:12px;border:1px solid var(--border);background:var(--card)}.banner .bn-icon{flex:0 0 auto;margin-top:1px}.banner .bn-body{flex:1 1 auto;min-width:0}.banner .bn-title{font-weight:600;color:var(--text);font-size:var(--fs-sm);margin-bottom:2px}.banner .bn-text{color:var(--text-2);font-size:var(--fs-xs);line-height:1.65}.banner .bn-act{flex:0 0 auto}.app.light .banner.danger{background:var(--danger-soft);border-color:#f3c9c9}.app.light .banner.danger .bn-icon{color:var(--danger)}.app.light .banner.danger .bn-title{color:#9b1c1c}.app.light .banner.warn{background:#fdf6e3;border-color:#f0dfae}.app.light .banner.warn .bn-icon{color:#8a5a00}.app.light .banner.ok{background:#e8f6ee;border-color:#bfe3ce}.app.light .banner.ok .bn-icon{color:#127a45}.app.light .banner.info .bn-icon{color:var(--brand)}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:38px 0;color:var(--muted);font-size:var(--fs-sm)}.fld-hint{font-size:var(--fs-2xs);color:var(--muted);margin-top:4px;line-height:1.6}.drawer-foot{padding:12px 18px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end;background:var(--card)}.toast{position:fixed;right:22px;bottom:22px;z-index:900;max-width:440px;background:var(--card);border:1px solid var(--border-strong);border-radius:10px;box-shadow:0 8px 28px #10204029;padding:12px 14px}.toast .tt-head{display:flex;align-items:center;gap:7px;font-weight:600;color:var(--text);font-size:var(--fs-sm)}.toast .tt-x{margin-left:auto;cursor:pointer;color:var(--muted);font-size:var(--fs-title);line-height:1}.toast .tt-detail{margin-top:6px;font-size:var(--fs-xs);color:var(--text-2);line-height:1.7}.toast .tt-basis{margin-top:7px;font-size:var(--fs-xs);color:var(--muted);line-height:1.65;background:var(--surface-3);padding:7px 9px;border-radius:6px}.toast .tt-sug{margin-top:6px;font-size:var(--fs-xs);color:var(--brand-hover);line-height:1.65}.app.light .toast.error{border-color:#e9b7b7}.app.light .toast.error .tt-head{color:#9b1c1c}.app.light .engine-badge.danger{background:var(--danger-soft);border-color:#f0c2c2;color:#9b1c1c}.score-ring{display:flex;align-items:center;gap:16px}.score-num{font-size:var(--fs-hero);font-weight:700;line-height:1;color:var(--text)}.score-num small{font-size:var(--fs-title);font-weight:400;color:var(--muted);margin-left:3px}.score-meta{font-size:var(--fs-xs);color:var(--text-2);line-height:1.8}.ind-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}.ind{border:1px solid var(--border);border-radius:9px;padding:12px 14px;background:var(--surface-2)}.ind .i-name{font-size:var(--fs-sm);font-weight:600;color:var(--text);display:flex;align-items:center;gap:6px}.ind .i-val{font-size:var(--fs-md);font-weight:700;margin:6px 0 4px;color:var(--text)}.ind .i-desc{font-size:var(--fs-2xs);color:var(--muted);line-height:1.65}.ind.bad{border-color:#e9b7b7;background:var(--danger-soft)}.ind.bad .i-val{color:#9b1c1c}.finding{border:1px solid var(--border);border-left-width:4px;border-radius:8px;padding:12px 14px;margin-bottom:10px;background:var(--surface-2)}.finding .f-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.finding .f-title{font-weight:600;color:var(--text);font-size:var(--fs-sm)}.finding .f-obj{font-size:var(--fs-xs);color:var(--muted)}.finding .f-detail{margin-top:7px;font-size:var(--fs-xs);color:var(--text-2);line-height:1.75;white-space:pre-wrap}.finding .f-basis{margin-top:8px;font-size:var(--fs-2xs);color:var(--muted);line-height:1.7;background:var(--surface-3);padding:8px 10px;border-radius:6px}.finding .f-sug{margin-top:7px;font-size:var(--fs-xs);color:var(--brand-hover);line-height:1.7}.finding .f-act{margin-top:10px;display:flex;gap:8px}.app.light .finding.critical{border-left-color:var(--danger)}.app.light .finding.high{border-left-color:#c98a00}.app.light .finding.medium{border-left-color:var(--brand)}.app.light .finding.low{border-left-color:var(--border-strong)}.lv{padding:1px 7px;border-radius:9px;font-size:var(--fs-2xs);font-weight:600}.app.light .lv.critical{background:var(--danger-soft);color:#9b1c1c}.app.light .lv.high{background:#fdf0d8;color:#8a5a00}.app.light .lv.medium{background:var(--brand-soft);color:var(--brand-hover)}.app.light .lv.low{background:var(--surface-3);color:var(--muted)}.tier-bar{display:flex;height:26px;border-radius:6px;overflow:hidden;margin:10px 0 6px}.tier-bar>div{display:flex;align-items:center;justify-content:center;font-size:var(--fs-2xs);color:#fff;font-weight:500}.app.light .tb0{background:#64748b}.app.light .tb1{background:var(--brand)}.app.light .tb2{background:#c98a00}.funnel{display:flex;flex-direction:column;gap:7px}.fn-row{display:flex;align-items:center;gap:12px}.fn-name{width:88px;flex:0 0 auto;font-size:var(--fs-xs);color:var(--text-2);text-align:right}.fn-track{flex:1 1 auto;height:26px;background:var(--surface-3);border-radius:5px;overflow:hidden}.fn-fill{height:100%;background:var(--brand);display:flex;align-items:center;padding-left:9px;color:#fff;font-size:var(--fs-xs);font-weight:500;min-width:42px}.fn-rate{width:56px;flex:0 0 auto;font-size:var(--fs-xs);color:var(--muted)}.phone-wrap{display:flex;gap:22px;align-items:flex-start;flex-wrap:wrap}.phone,.phone-preview{width:390px;height:780px;flex:0 0 auto;border-radius:34px;padding:11px;background:var(--chrome);box-shadow:0 14px 40px #1020403d;position:relative}.phone .screen-in,.phone-screen{width:100%;height:100%;border-radius:25px;overflow:hidden;background:#f4f6fa;position:relative}.phone .notch,.phone-notch{position:absolute;top:11px;left:50%;transform:translate(-50%);width:112px;height:22px;background:var(--chrome);border-radius:0 0 13px 13px;z-index:20}.kv-list{display:flex;flex-direction:column;gap:1px}.kv{display:flex;gap:14px;padding:8px 0;border-bottom:1px dashed var(--border);font-size:var(--fs-xs);line-height:1.7}.kv:last-child{border-bottom:none}.kv>span{flex:0 0 132px;color:var(--muted)}.kv>b{flex:1 1 auto;font-weight:500;color:var(--text-2)}.segbtns .seg.active{background:linear-gradient(135deg,#22d3ee38,#3b82f638);color:#fff}.app.light .segbtns .seg.active{color:#fff;background:var(--brand)}.app.light .pill.danger{background:var(--danger-soft);color:#9b1c1c}.app.light .pill.info{background:var(--brand-soft);color:var(--brand-hover)}.pt{--pt-bg: #f4f6fa;--pt-card: #ffffff;--pt-text: #17202e;--pt-text2: #48546a;--pt-muted: #7c889c;--pt-line: #e8ecf3;--pt-brand: #1a63e8;--pt-brand-soft: #e9f0fe;--pt-amber: #b8860b;--pt-amber-soft: #fdf3dc;--pt-green: #0f7b4f;--pt-green-soft: #e6f5ed;--pt-red: #c62828;--pt-red-soft: #fdeceb;--pt-fs-hero: 30px;--pt-fs-display: 24px;--pt-fs-xl: 20px;--pt-fs-lg: 18px;--pt-fs-md: 16px;--pt-fs-title: 15px;--pt-fs-body: 14px;--pt-fs-sm: 13px;--pt-fs-xs: 12px;--pt-fs-2xs: 11px;--pt-sp-1: 4px;--pt-sp-2: 8px;--pt-sp-3: 12px;--pt-sp-4: 16px;--pt-sp-5: 24px;--pt-sp-6: 32px;--pt-r-sm: 8px;--pt-r-md: 12px;--pt-r-lg: 16px;--pt-r-pill: 999px;--pt-ctl-h: 40px;position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;background:var(--pt-bg);color:var(--pt-text);font-family:-apple-system,PingFang SC,Microsoft YaHei,Segoe UI,Roboto,sans-serif;font-size:var(--pt-fs-body);line-height:1.6;overflow:hidden}.pt.standalone{position:fixed}.pt *{box-sizing:border-box}.pt-nav{flex:0 0 auto;display:contents}.pt-nav-brand,.pt-nav-foot{display:none}.pt-tabbar{order:2}.pt-main{order:1;flex:1 1 auto;display:flex;flex-direction:column;min-height:0;min-width:0}.pt-page,.pt-home,.pt-hm,.pt-hs{display:contents}.pt-head{flex:0 0 auto;padding:14px 14px 12px;background:linear-gradient(135deg,#1a63e8,#2f7ff0 62%,#4b91f5);color:#fff}.pt.standalone .pt-head{padding-top:max(14px,env(safe-area-inset-top))}.pt-head-row{display:flex;align-items:center;gap:10px}.pt-logo{width:34px;height:34px;border-radius:9px;flex:0 0 auto;background:#fff3;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--pt-fs-md)}.pt-tt{flex:1 1 auto;min-width:0}.pt-tt b{display:block;font-size:var(--pt-fs-title);font-weight:600}.pt-tt span{display:block;font-size:var(--pt-fs-xs);opacity:.82;margin-top:1px}.pt-head-act{flex:0 0 auto;font-size:var(--pt-fs-sm);padding:5px 12px;border-radius:14px;background:#ffffff2e;cursor:pointer;white-space:nowrap}.pt-access{display:flex;gap:9px;align-items:flex-start;margin-top:12px;background:#ffffff21;border-radius:10px;padding:9px 11px}.pt-access .pa-dot{width:7px;height:7px;border-radius:50%;background:#7ef0b4;flex:0 0 auto;margin-top:6px}.pt-access .pa-dot.l0{background:#ffd479}.pt-access .pa-body{flex:1 1 auto;min-width:0}.pt-access .pa-t{font-size:var(--pt-fs-sm);font-weight:600;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pt-access .pa-s{font-size:var(--pt-fs-2xs);opacity:.86;line-height:1.6;margin-top:2px}.pt-access .pt-chip{background:#ffffff3d;color:#fff}.pt-body{flex:1 1 auto;overflow-y:auto;overflow-x:hidden;padding:12px 12px 20px}.pt-card{background:var(--pt-card);border-radius:12px;padding:4px 13px;margin-bottom:12px;box-shadow:0 1px 2px #0f172a0a}.pt-sec{display:flex;align-items:baseline;gap:8px;margin:14px 2px 8px}.pt-sec b{font-size:var(--pt-fs-body);font-weight:600}.pt-sec span{font-size:var(--pt-fs-xs);color:var(--pt-muted)}.pt-foot{text-align:center;font-size:var(--pt-fs-2xs);color:var(--pt-muted);line-height:1.7;padding:16px 10px 6px}.pt-fine{font-size:var(--pt-fs-2xs);color:var(--pt-muted);line-height:1.7;padding:9px 0 11px}.pt-meta{font-size:var(--pt-fs-xs);color:var(--pt-muted);padding:2px 0 10px}.pt-article{font-size:var(--pt-fs-body);color:var(--pt-text2);line-height:1.85;white-space:pre-wrap}.pt-empty{text-align:center;color:var(--pt-muted);font-size:var(--pt-fs-sm);padding:28px 0}.pt-loading{text-align:center;color:var(--pt-muted);font-size:var(--pt-fs-sm);padding:26px 0}.pt-subtabs{display:flex;gap:6px;margin-bottom:12px;background:#fff;border-radius:10px;padding:4px}.pt-subtabs.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.pt-subtabs.scroll::-webkit-scrollbar{display:none}.pst{flex:1 1 auto;text-align:center;white-space:nowrap;padding:7px 12px;font-size:var(--pt-fs-sm);color:var(--pt-text2);border-radius:8px;cursor:pointer}.pst.active{background:var(--pt-brand-soft);color:var(--pt-brand);font-weight:600}.pt-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:2px 0;background:var(--pt-card);border-radius:12px;padding:10px 4px;margin-bottom:12px}.pt-cell{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 2px;border-radius:9px;cursor:pointer;position:relative}.pt-cell:active{background:var(--pt-bg)}.pt-cell .pc-ico{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:var(--pt-brand-soft);color:var(--pt-brand)}.pt-cell .pc-name{font-size:var(--pt-fs-xs);color:var(--pt-text2);text-align:center;line-height:1.35;max-width:100%;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.pt-cell .pc-tag{position:absolute;top:4px;right:6px;font-size:var(--pt-fs-2xs);background:var(--pt-green-soft);color:var(--pt-green);padding:0 4px;border-radius:6px}.pt-searchbox{position:relative;margin-bottom:var(--pt-sp-3)}.pt-searchbar{display:flex;align-items:center;gap:var(--pt-sp-2);height:var(--pt-ctl-h);padding:0 var(--pt-sp-3);background:var(--pt-card);border:1px solid var(--pt-line);border-radius:var(--pt-r-pill);color:var(--pt-muted)}.pt-searchbar:focus-within{border-color:var(--pt-brand);background:#fff}.pt-searchbar input{flex:1 1 auto;min-width:0;border:none;outline:none;background:transparent;font-size:var(--pt-fs-body);font-family:inherit;color:var(--pt-text)}.ps-clear{flex:0 0 auto;cursor:pointer;font-size:var(--pt-fs-md);line-height:1;color:var(--pt-muted);padding:0 var(--pt-sp-1)}.pt-searchres{position:absolute;z-index:30;left:0;right:0;top:calc(100% + 6px);max-height:420px;overflow-y:auto;background:var(--pt-card);border:1px solid var(--pt-line);border-radius:var(--pt-r-md);box-shadow:0 10px 30px #0f172a24;padding:var(--pt-sp-1) 0}.psr-g+.psr-g{border-top:1px solid var(--pt-line)}.psr-h{font-size:var(--pt-fs-2xs);color:var(--pt-muted);font-weight:600;padding:var(--pt-sp-2) var(--pt-sp-3) var(--pt-sp-1)}.psr-i{padding:var(--pt-sp-2) var(--pt-sp-3);cursor:pointer}.psr-i:hover{background:var(--pt-brand-soft)}.psr-t{font-size:var(--pt-fs-sm);color:var(--pt-text)}.psr-s{font-size:var(--pt-fs-2xs);color:var(--pt-muted);margin-top:2px}.pt-todos{display:flex;flex-direction:column;gap:var(--pt-sp-2);margin-bottom:var(--pt-sp-3)}.pt-todo{display:flex;align-items:center;gap:var(--pt-sp-3);background:var(--pt-card);border:1px solid var(--pt-line);border-left:3px solid var(--pt-brand);border-radius:var(--pt-r-md);padding:var(--pt-sp-3);cursor:pointer;transition:box-shadow .16s,border-color .16s}.pt-todo:hover{box-shadow:0 4px 14px #1a63e81a}.pt-todo.urgent{border-left-color:var(--pt-red)}.ptd-ico{flex:0 0 auto;width:34px;height:34px;border-radius:var(--pt-r-sm);display:flex;align-items:center;justify-content:center;background:var(--pt-brand-soft);color:var(--pt-brand)}.pt-todo.urgent .ptd-ico{background:var(--pt-red-soft);color:var(--pt-red)}.ptd-main{flex:1 1 auto;min-width:0}.ptd-t{font-size:var(--pt-fs-body);color:var(--pt-text);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ptd-s{font-size:var(--pt-fs-xs);color:var(--pt-muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ptd-go{flex:0 0 auto;font-size:var(--pt-fs-xs);color:var(--pt-brand);white-space:nowrap}.pt-guest{padding:var(--pt-sp-3) var(--pt-sp-4) var(--pt-sp-4)}.ptg-list{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--pt-sp-2) var(--pt-sp-3);margin-bottom:var(--pt-sp-3)}.ptg-i{display:flex;align-items:center;gap:var(--pt-sp-2);font-size:var(--pt-fs-sm);color:var(--pt-text2)}.ptg-i svg{color:var(--pt-brand);flex:0 0 auto}.ptg-note{font-size:var(--pt-fs-xs);color:var(--pt-muted);line-height:1.75;margin-bottom:var(--pt-sp-3)}.pcl-time{flex:0 0 auto;width:62px;text-align:center;border-right:1px solid var(--pt-line);padding-right:var(--pt-sp-2)}.pcl-time b{display:block;font-size:var(--pt-fs-sm);color:var(--pt-brand);font-weight:600}.pcl-time span{font-size:var(--pt-fs-2xs);color:var(--pt-muted)}.pt-noclass{padding:var(--pt-sp-4) 0;text-align:center}.pnc-t{font-size:var(--pt-fs-body);color:var(--pt-text2)}.pnc-s{font-size:var(--pt-fs-xs);color:var(--pt-muted);line-height:1.75;margin-top:var(--pt-sp-1)}.pt-row{display:flex;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid var(--pt-line)}.pt-row:last-child{border-bottom:none}.pt-row.link{cursor:pointer}.pt-row.locked{opacity:.62}.pt-row .pr-main{flex:1 1 auto;min-width:0}.pt-row .pr-t{font-size:var(--pt-fs-body);color:var(--pt-text);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pt-row .pr-s{font-size:var(--pt-fs-xs);color:var(--pt-text2);margin-top:3px;line-height:1.6}.pt-row .pr-s.dim{color:var(--pt-muted)}.pt-row .pr-s.warn{color:var(--pt-amber)}.pt-row .pr-go{flex:0 0 auto;color:#c2cad8;font-size:var(--pt-fs-lg)}.pt-row .pr-val{flex:0 0 auto;text-align:right}.pt-row .pr-val b{display:block;font-size:var(--pt-fs-md);font-weight:600;color:var(--pt-brand)}.pt-row .pr-val span{font-size:var(--pt-fs-2xs);color:var(--pt-muted)}.pt-row .pr-acts{flex:0 0 auto;display:flex;flex-direction:column;gap:6px}.pt-block{padding:13px 0;border-bottom:1px solid var(--pt-line)}.pt-block:last-child{border-bottom:none}.pt-block.locked{opacity:.66}.ptb-h{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.ptb-h b{font-size:var(--pt-fs-body);font-weight:600;flex:1 1 auto;min-width:0}.ptb-val{flex:0 0 auto;font-size:var(--pt-fs-lg);font-weight:700;color:var(--pt-brand)}.ptb-s{font-size:var(--pt-fs-xs);color:var(--pt-text2);margin-top:4px;line-height:1.65}.ptb-s.dim{color:var(--pt-muted)}.ptb-body{font-size:var(--pt-fs-sm);color:var(--pt-text2);line-height:1.75;margin-top:6px;background:var(--pt-bg);border-radius:8px;padding:8px 10px;white-space:pre-wrap}.ptb-acts{display:flex;align-items:center;gap:8px;margin-top:9px}.ptb-reason{flex:1 1 auto;font-size:var(--pt-fs-xs);color:var(--pt-muted)}.ptb-reason.ok{color:var(--pt-green)}.pt-chip{flex:0 0 auto;font-size:var(--pt-fs-2xs);padding:1px 7px;border-radius:8px;background:#eef1f6;color:#5c6779;white-space:nowrap;font-weight:400}.pt-chip.ok{background:var(--pt-green-soft);color:var(--pt-green)}.pt-chip.warn{background:var(--pt-amber-soft);color:var(--pt-amber)}.pt-chip.danger{background:var(--pt-red-soft);color:var(--pt-red)}.pt-chips{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:12px}.pt-chips .spacer{flex:1 1 auto}.ptc{font-size:var(--pt-fs-sm);padding:5px 13px;border-radius:15px;cursor:pointer;background:#fff;color:var(--pt-text2);border:1px solid var(--pt-line);white-space:nowrap}.ptc.on{background:var(--pt-brand);color:#fff;border-color:var(--pt-brand)}.pt-btn{width:100%;padding:11px 16px;border:none;border-radius:10px;background:var(--pt-brand);color:#fff;font-size:var(--pt-fs-body);font-weight:500;cursor:pointer;margin-bottom:12px;font-family:inherit}.pt-btn.sm{width:auto;padding:6px 14px;font-size:var(--pt-fs-sm);border-radius:15px;margin-bottom:0;flex:0 0 auto}.pt-btn.ghost{background:#fff;color:var(--pt-brand);border:1px solid #c3d5f6}.pt-btn.danger{background:var(--pt-red)}.pt-btn:disabled{background:#dfe4ec;color:#a2abba;cursor:not-allowed}.pt-f{margin-bottom:14px}.pt-f>label{display:block;font-size:var(--pt-fs-xs);color:var(--pt-muted);margin-bottom:6px}.pt-f-hint{font-size:var(--pt-fs-2xs);color:var(--pt-muted);line-height:1.65;margin-top:5px}.pt-input{width:100%;padding:10px 12px;border:1px solid var(--pt-line);border-radius:9px;background:#fbfcfe;font-size:var(--pt-fs-body);color:var(--pt-text);font-family:inherit;line-height:1.6}.pt-input:focus{border-color:var(--pt-brand);outline:none;background:#fff}.pt-check{display:flex;gap:8px;align-items:flex-start;font-size:var(--pt-fs-sm);color:var(--pt-text2);margin-bottom:14px;line-height:1.6}.pt-check input{margin-top:3px;flex:0 0 auto}.pt-search{display:flex;align-items:center;gap:8px;background:#fff;border-radius:10px;padding:9px 12px;margin-bottom:12px;color:var(--pt-muted)}.pt-search input{flex:1 1 auto;border:none;outline:none;background:transparent;font-size:var(--pt-fs-body);font-family:inherit;color:var(--pt-text)}.pt-stars{display:flex;gap:6px;font-size:var(--pt-fs-hero);line-height:1;color:#dfe4ec}.pt-stars span{cursor:pointer}.pt-stars span.on{color:#f5a623}.pt-note{background:var(--pt-brand-soft);border-radius:10px;padding:11px 13px;margin-bottom:12px;font-size:var(--pt-fs-xs);color:#123c86;line-height:1.7}.pt-note.warn{background:var(--pt-amber-soft);color:#7a5400}.pt-note.sm{padding:8px 10px;font-size:var(--pt-fs-xs);margin:8px 0 0}.pt-note b{display:block;font-weight:600;margin-bottom:3px}.pt-note .pt-btn{margin:9px 0 0}.pt-tip{padding:18px 14px;text-align:center}.pt-tip-t{font-size:var(--pt-fs-body);font-weight:600;margin-bottom:6px}.pt-tip-s{font-size:var(--pt-fs-xs);color:var(--pt-muted);line-height:1.75;margin-bottom:14px}.pt-mine-strip{padding:4px 13px}.pms-item{display:flex;align-items:center;gap:8px;padding:11px 0;border-bottom:1px solid var(--pt-line);font-size:var(--pt-fs-sm);color:var(--pt-text2);cursor:pointer}.pms-item:last-child{border-bottom:none}.pms-item span{flex:1 1 auto;min-width:0}.pms-item b{flex:0 0 auto;font-size:var(--pt-fs-xs);color:var(--pt-brand);font-weight:500}.pt-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:12px}.ptk{background:#fff;border-radius:10px;padding:13px 8px;text-align:center}.ptk b{display:block;font-size:var(--pt-fs-xl);font-weight:700;color:var(--pt-brand);line-height:1.2}.ptk span{font-size:var(--pt-fs-2xs);color:var(--pt-muted)}.pt-live{padding:15px 14px;background:linear-gradient(135deg,#0f7b4f,#16a06a);color:#fff}.ptl-t{font-size:var(--pt-fs-lg);font-weight:700}.ptl-s{font-size:var(--pt-fs-xs);opacity:.9;line-height:1.7;margin:5px 0 12px}.pt-live .pt-btn{margin-bottom:0;background:#ffffff38}.pt-slots{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.pts{text-align:center;padding:8px 2px;border-radius:8px;font-size:var(--pt-fs-sm);border:1px solid var(--pt-line);background:#fff;cursor:pointer;color:var(--pt-text2)}.pts.taken{background:#f0f2f6;color:#b3bbc9;text-decoration:line-through;cursor:not-allowed}.pts.on{background:var(--pt-brand);color:#fff;border-color:var(--pt-brand)}.pt-poster{display:flex;gap:8px;align-items:flex-end;margin-bottom:14px}.pt-poster .pt-input{flex:1 1 auto}.pt-post{padding:12px 0;border-bottom:1px solid var(--pt-line)}.ppo-h{display:flex;align-items:center;gap:7px}.ppo-av{width:26px;height:26px;border-radius:50%;flex:0 0 auto;background:var(--pt-brand-soft);color:var(--pt-brand);display:flex;align-items:center;justify-content:center;font-size:var(--pt-fs-xs)}.ppo-h b{font-size:var(--pt-fs-sm);font-weight:600}.ppo-t{font-size:var(--pt-fs-2xs);color:var(--pt-muted);flex:1 1 auto}.ppo-b{font-size:var(--pt-fs-body);color:var(--pt-text2);line-height:1.8;margin:7px 0 0 33px;white-space:pre-wrap}.ppo-f{display:flex;gap:14px;margin:8px 0 0 33px;font-size:var(--pt-fs-xs);color:var(--pt-muted)}.ppo-f span{cursor:pointer}.pt-profile{display:flex;gap:12px;align-items:center;padding:16px 14px}.ppf-av{width:46px;height:46px;border-radius:50%;flex:0 0 auto;background:var(--pt-brand-soft);color:var(--pt-brand);display:flex;align-items:center;justify-content:center;font-size:var(--pt-fs-lg);font-weight:600}.ppf-main{flex:1 1 auto;min-width:0}.ppf-n{font-size:var(--pt-fs-md);font-weight:600}.ppf-s{font-size:var(--pt-fs-xs);color:var(--pt-text2);margin-top:3px}.ppf-s.dim{color:var(--pt-muted)}.pt-code{text-align:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--pt-fs-display);font-weight:700;letter-spacing:3px;color:var(--pt-brand);background:var(--pt-brand-soft);border-radius:11px;padding:18px 10px;margin-bottom:12px}.pt-consent{background:var(--pt-bg);border-radius:10px;padding:12px 13px;margin-bottom:14px}.pc-t{font-size:var(--pt-fs-sm);font-weight:600;margin-bottom:8px}.pc-sec{font-size:var(--pt-fs-2xs);color:var(--pt-brand);font-weight:600;margin:11px 0 4px}.pc-sec:first-child{margin-top:0}.pc-item{display:flex;gap:8px;padding:3px 0;font-size:var(--pt-fs-xs);line-height:1.7}.pc-item b{flex:0 0 92px;font-weight:500;color:var(--pt-text2)}.pc-item span{flex:1 1 auto;color:var(--pt-muted)}.pc-item.no b{color:var(--pt-muted);text-decoration:line-through}.pt-tabbar{flex:0 0 auto;display:flex;background:#fff;border-top:1px solid var(--pt-line);padding:5px 0 4px}.pt.standalone .pt-tabbar{padding-bottom:max(4px,env(safe-area-inset-bottom))}.pt-tab{flex:1 1 0;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:var(--pt-fs-2xs);color:var(--pt-muted);cursor:pointer;padding:3px 0}.pt-tab.active{color:var(--pt-brand)}.pt-demo{margin-top:14px;font-size:var(--pt-fs-xs);color:var(--pt-muted)}.pt-demo-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.pt-demo-b{padding:6px 11px;border:1px solid var(--pt-line);border-radius:14px;background:#fff;color:var(--pt-text2);font-size:var(--pt-fs-xs);cursor:pointer}.pt-demo-b:active,.pt-demo-b:hover{border-color:var(--pt-brand);color:var(--pt-brand)}.pt-courses{display:grid;gap:10px;margin-bottom:12px}@media (min-width: 620px){.pt-courses{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1320px){.pt-courses{grid-template-columns:repeat(3,1fr)}}.pt-course{background:var(--pt-card);border-radius:12px;padding:13px 14px;cursor:pointer;border:1px solid transparent;transition:border-color .15s;display:flex;flex-direction:column}.pt-course:hover{border-color:#c9d9f6}.pcs-top{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}.pcs-top b{font-size:var(--pt-fs-title);font-weight:600;line-height:1.45}.pcs-cat{flex:0 0 auto;font-size:var(--pt-fs-2xs);padding:2px 7px;border-radius:4px;font-weight:500}.pcs-cat.req{background:var(--pt-brand-soft);color:var(--pt-brand)}.pcs-cat.opt{background:#f0f1f5;color:var(--pt-text2)}.pcs-meta{font-size:var(--pt-fs-xs);color:var(--pt-muted);line-height:1.7}.pcs-foot{display:flex;align-items:center;gap:10px;margin-top:9px;padding-top:9px;border-top:1px solid var(--pt-line);font-size:var(--pt-fs-xs);color:var(--pt-text2)}.pcs-foot>span:first-child{display:inline-flex;align-items:center;gap:4px}.pcs-foot>span:nth-child(2){flex:1 1 auto;color:var(--pt-muted)}.pcs-go{color:var(--pt-brand)}.pcs-tag{font-size:var(--pt-fs-2xs);padding:2px 7px;border-radius:4px}.pcs-tag.mine{background:var(--pt-green-soft);color:var(--pt-green)}.pcs-tag.full{background:var(--pt-red-soft);color:var(--pt-red)}.pcs-pct{color:var(--pt-brand);font-weight:600}.pcs-bar{height:5px;background:#eef1f6;border-radius:3px;overflow:hidden;margin-top:10px}.pcs-bar-in{height:100%;background:var(--pt-brand);border-radius:3px;transition:width .3s}.pt-back{display:inline-block;font-size:var(--pt-fs-sm);color:var(--pt-brand);cursor:pointer;margin-bottom:10px;padding:4px 0}.pt-cdetail{padding:14px 15px}.pcd-top{display:flex;align-items:baseline;gap:8px;margin-bottom:7px}.pcd-top b{font-size:var(--pt-fs-lg);font-weight:600;line-height:1.4}.pcd-meta{font-size:var(--pt-fs-xs);color:var(--pt-muted);line-height:1.75}.pcd-intro{font-size:var(--pt-fs-sm);color:var(--pt-text2);line-height:1.85;margin-top:10px;padding-top:10px;border-top:1px solid var(--pt-line)}.pcd-prog{font-size:var(--pt-fs-xs);color:var(--pt-text2);margin-top:6px}.pcd-act{display:flex;align-items:center;gap:12px;margin-top:14px}.pcd-act .pt-btn{margin-bottom:0;width:auto;min-width:130px}.pcd-cap{font-size:var(--pt-fs-xs);color:var(--pt-muted)}.pt-lessons{padding:2px 0}.pt-lesson{display:flex;align-items:center;gap:11px;padding:11px 14px;border-bottom:1px solid var(--pt-line);cursor:pointer}.pt-lesson:last-child{border-bottom:none}.pt-lesson:hover{background:#fafbfd}.pt-lesson.locked{cursor:default}.pt-lesson.locked .pl-t{color:var(--pt-muted)}.pl-ico{flex:0 0 auto;width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:#f0f2f6;color:var(--pt-text2)}.pl-ico.k-video{background:#e9f0fe;color:#1a63e8}.pl-ico.k-audio{background:#f3ebfd;color:#7233c4}.pl-ico.k-image{background:#e6f5ed;color:#0f7b4f}.pl-ico.k-doc{background:#fdf3dc;color:#a06a08}.pl-ico.k-rich{background:#eaf2f6;color:#17627e}.pl-main{flex:1 1 auto;min-width:0}.pl-t{font-size:var(--pt-fs-body);font-weight:500;line-height:1.5;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pl-s{font-size:var(--pt-fs-xs);color:var(--pt-muted);margin-top:3px}.pl-tag{font-size:var(--pt-fs-2xs);padding:1px 6px;border-radius:4px;font-weight:400}.pl-tag.free{background:var(--pt-brand-soft);color:var(--pt-brand)}.pl-tag.done{background:var(--pt-green-soft);color:var(--pt-green)}.pl-go{flex:0 0 auto;color:#c2cad8;font-size:var(--pt-fs-lg);display:flex}.pt-player{max-height:94%}.pl-video{width:100%;background:#000;border-radius:10px;display:block;max-height:56vh}.pl-audio{width:100%;margin:8px 0 4px}.pl-image{width:100%;border-radius:10px;display:block}.pl-doc{display:flex;flex-direction:column}.pl-pdf{width:100%;height:58vh;border:1px solid var(--pt-line);border-radius:10px;background:#fff;margin-bottom:12px}.pl-doc .pt-btn{text-align:center;text-decoration:none;line-height:1.6}.pl-rich{font-size:var(--pt-fs-body);color:var(--pt-text2);line-height:1.9}.pl-rich h3{font-size:var(--pt-fs-md);color:var(--pt-text);margin:16px 0 8px;font-weight:600}.pl-rich h4{font-size:var(--pt-fs-body);color:var(--pt-text);margin:14px 0 6px;font-weight:600}.pl-rich h3:first-child,.pl-rich h4:first-child{margin-top:2px}.pl-rich p{margin:0 0 9px}.pl-rich li{margin:0 0 7px 18px;list-style:disc}.pl-rich blockquote{margin:10px 0;padding:8px 12px;background:#f7f9fc;border-left:3px solid var(--pt-brand);border-radius:0 6px 6px 0;color:var(--pt-text2);font-size:var(--pt-fs-sm)}.pl-code{background:#f5f7fa;border:1px solid var(--pt-line);border-radius:8px;padding:10px 12px;font-size:var(--pt-fs-sm);line-height:1.7;overflow-x:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#24324a;margin:8px 0 12px}.pt-form{padding:14px 15px}.pt-form input,.pt-form textarea{width:100%;padding:10px 12px;border:1px solid var(--pt-line);border-radius:9px;background:#fbfcfe;font-size:var(--pt-fs-body);color:var(--pt-text);font-family:inherit;line-height:1.6;box-sizing:border-box}.pt-form input:focus,.pt-form textarea:focus{border-color:var(--pt-brand);outline:none;background:#fff}.pt-form textarea{resize:vertical;min-height:72px}.pt-form .pt-chips{margin-bottom:0}.pt-row .pr-amt{flex:0 0 auto;font-size:var(--pt-fs-title);font-weight:600;color:var(--pt-text)}.pt-chip.bad{background:var(--pt-red-soft);color:var(--pt-red)}.pt-cell .pc-tag.in{background:var(--pt-green-soft);color:var(--pt-green)}.pt-mask{position:absolute;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:flex-end;z-index:30}.pt-sheet{width:100%;max-height:88%;background:var(--pt-card);border-radius:16px 16px 0 0;display:flex;flex-direction:column;animation:pt-up .22s ease}.pt-sheet.wide{max-height:94%}@keyframes pt-up{0%{transform:translateY(24px);opacity:.4}to{transform:none;opacity:1}}.pt-sheet-h{flex:0 0 auto;display:flex;align-items:center;padding:14px 16px 10px;border-bottom:1px solid var(--pt-line)}.pt-sheet-h b{font-size:var(--pt-fs-title);font-weight:600;flex:1 1 auto;min-width:0}.pt-x{flex:0 0 auto;font-size:var(--pt-fs-display);line-height:1;color:var(--pt-muted);cursor:pointer}.pt-sheet-b{flex:1 1 auto;overflow-y:auto;padding:14px 16px;padding-bottom:max(16px,env(safe-area-inset-bottom))}.pt-toast{position:absolute;left:50%;bottom:78px;transform:translate(-50%);background:#17202eeb;color:#fff;font-size:var(--pt-fs-sm);padding:9px 16px;border-radius:18px;z-index:40;max-width:86%;text-align:center;line-height:1.6}.pt.embedded .pt-head{padding:10px 12px}.pt.embedded .pt-access{display:none}@media (min-width: 700px) and (max-width: 999px){.pt-body{padding:16px 24px 28px}.pt-page{display:block;width:100%;max-width:720px;margin:0 auto}}@media (min-width: 1000px){.pt{flex-direction:row}.pt-nav{display:flex;flex-direction:column;order:-1;flex:0 0 232px;width:232px;background:#fff;border-right:1px solid var(--pt-line)}.pt-nav-brand{display:flex;align-items:center;gap:10px;padding:16px 16px 14px;border-bottom:1px solid var(--pt-line)}.pt-nav-tt{min-width:0;display:flex;flex-direction:column}.pt-nav-tt b{font-size:var(--pt-fs-body);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.pt-nav-tt span{font-size:var(--pt-fs-2xs);color:var(--pt-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pt-nav-foot{display:block;margin-top:auto;padding:14px 16px;font-size:var(--pt-fs-2xs);line-height:1.6;color:var(--pt-muted);border-top:1px solid var(--pt-line)}.pt-tabbar{order:0;flex-direction:column;border-top:0;padding:10px 8px;gap:2px}.pt-tab{flex:0 0 auto;flex-direction:row;justify-content:flex-start;gap:10px;font-size:var(--pt-fs-body);padding:9px 12px;border-radius:8px}.pt-tab.active{background:var(--pt-brand-soft);font-weight:500}.pt-tab:hover:not(.active){background:#f4f6fa}.pt-body{padding:22px 32px 36px}.pt-page{display:block;width:100%;max-width:1160px;margin:0 auto}.pt-head{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:0 16px;padding:13px 32px}.pt-head-row{display:contents}.pt.standalone .pt-head{padding-top:13px}.pt.standalone .pt-tabbar{padding-bottom:10px}.pt-logo{width:40px;height:40px;border-radius:11px;font-size:var(--pt-fs-lg)}.pt-tt b{font-size:var(--pt-fs-xl);letter-spacing:.2px}.pt-tt span{font-size:var(--pt-fs-sm);margin-top:2px}.pt-access{margin-top:0;max-width:520px;padding:8px 14px;border-radius:22px}.pt-access .pa-s{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.pt-head-act{order:1;font-size:var(--pt-fs-sm);padding:7px 15px;border-radius:16px}.pt-head-act:hover{background:#ffffff4d}.pt-home{display:grid;grid-template-columns:minmax(0,1fr) 344px;gap:0 24px;align-items:start}.pt-hm,.pt-hs{display:block;min-width:0}.pt-sec b{font-size:var(--pt-fs-title)}.pt-sec span{font-size:var(--pt-fs-xs)}.pt-grid{grid-template-columns:repeat(3,1fr);gap:10px;background:transparent;padding:0}.pt-cell{flex-direction:row;align-items:center;justify-content:flex-start;gap:12px;padding:12px 14px;background:var(--pt-card);border:1px solid var(--pt-line);border-radius:12px;transition:box-shadow .16s,border-color .16s,transform .16s}.pt-cell:hover{border-color:#b9d0f7;transform:translateY(-1px);box-shadow:0 4px 14px #1a63e81a}.pt-cell .pc-ico{width:38px;height:38px}.pt-cell .pc-name{font-size:var(--pt-fs-body);color:var(--pt-text);text-align:left;-webkit-line-clamp:1}.pt-cell .pc-tag{position:static;margin-left:auto;font-size:var(--pt-fs-2xs);padding:1px 7px}.pt-subtabs{display:inline-flex;width:auto;max-width:100%}.pst{flex:0 0 auto;padding:7px 22px}.pt-search{max-width:460px}.pt-body .pt-btn:not(.sm){width:auto;min-width:152px}.pt-card{padding:4px 16px;border-radius:14px}.pt-row{padding:13px 0}.pt-row.link{margin:0 -16px;padding-left:16px;padding-right:16px}.pt-row.link:hover{background:#f7f9fd}.pt-row.link:hover .pr-t{color:var(--pt-brand)}.pt-row .pr-t{font-size:var(--pt-fs-body)}.pt-row .pr-s{font-size:var(--pt-fs-xs)}.pt-mask{align-items:center;justify-content:center}.pt-sheet{width:min(680px,92%);max-height:86%;border-radius:14px;animation:pt-pop .18s ease}.pt-sheet.wide{width:min(880px,94%)}}@keyframes pt-pop{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}
