:root{--bg:#020b1c;--bg-mid:#0a1f4a;--bg-soft:#12306a;--cyan:#3de7ff;--cyan-dim:#1aa8c4;--magenta:#e83d9a;--panel:rgba(10,28,64,0.72);--panel-solid:#0c1c42;--ink:#e8f4ff;--ink-strong:#ffffff;--muted:#8fb0d4;--line:rgba(61,231,255,0.22);--danger:#ff6b8a;--chip:rgba(61,231,255,0.14);--shadow:0 12px 36px rgba(2,8,24,0.45);--font-sans:"Noto Sans SC","PingFang SC",-apple-system,sans-serif;--font-serif:"Source Serif 4","Songti SC",serif;--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}body,html{margin:0;min-height:100%;background-color:var(--bg);background-image:radial-gradient(900px 480px at 85% 8%,rgba(61,231,255,.18),transparent 55%),radial-gradient(700px 420px at 15% 95%,rgba(232,61,154,.16),transparent 50%),linear-gradient(165deg,#020b1c,#061633 38%,#0a2460 72%,#071428);background-attachment:fixed;color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}body{padding-bottom:calc(2rem + var(--safe-bottom))}a{color:inherit;text-decoration:none}.page{max-width:1100px;margin:0 auto;padding:.85rem .85rem 1.5rem}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding:.6rem .85rem;background:rgba(2,11,28,.85);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.topbar .brand{font-family:var(--font-serif);font-weight:700;color:var(--ink-strong);font-size:1rem;margin-right:auto;text-shadow:0 0 18px rgba(61,231,255,.3)}.topbar .nav{display:flex;gap:.35rem;flex-wrap:wrap}.topbar .nav a{font-size:.78rem;padding:.35rem .7rem;border-radius:999px;border:1px solid rgba(61,231,255,.28);background:rgba(10,32,72,.5);color:#d7f0ff}.topbar .nav a.active{background:linear-gradient(110deg,rgba(61,231,255,.95),rgba(90,200,255,.9));color:#041226;border-color:transparent;font-weight:700}.panel{background:var(--panel);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:1rem;margin-bottom:.85rem}.panel h1{font-size:1.4rem;margin:0 0 .3rem;text-shadow:0 0 24px rgba(61,231,255,.3)}.panel h1,.panel h2{font-family:var(--font-serif);color:var(--ink-strong)}.panel h2{font-size:1.05rem;margin:0 0 .7rem}.panel h3{font-size:.92rem;color:var(--cyan);margin:.8rem 0 .4rem;font-family:var(--font-serif)}.panel .sub{color:var(--muted);font-size:.85rem;margin-bottom:.8rem}.card{background:rgba(8,22,56,.92);border:1px solid rgba(61,231,255,.18);border-radius:14px;padding:.85rem .9rem;margin-bottom:.6rem}.card .row{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.grid-2{grid-template-columns:1fr 1fr}.grid-2,.grid-3{display:grid;gap:.6rem}.grid-3{grid-template-columns:repeat(3,1fr)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;border:1px solid rgba(61,231,255,.35);background:rgba(8,24,56,.7);color:#d7f0ff;border-radius:12px;padding:.6rem .9rem;font:inherit;font-weight:600;cursor:pointer}.btn.primary{background:linear-gradient(110deg,#3de7ff,#5ac8ff);color:#041226;border-color:transparent}.btn.ghost{background:transparent;border-color:rgba(232,61,154,.45);color:#ffc2e0}.btn.danger{border-color:rgba(255,107,138,.45);color:#ffb0c0}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-mini{border:1px solid rgba(61,231,255,.35);background:rgba(8,24,56,.7);color:#d7f0ff;padding:.3rem .65rem;font-size:.75rem;cursor:pointer}.btn-mini,.chip{border-radius:999px}.chip{display:inline-flex;align-items:center;gap:.25rem;padding:.2rem .55rem;background:var(--chip);border:1px solid rgba(61,231,255,.28);color:#d7f8ff;font-size:.72rem}.status{display:inline-block;font-size:.7rem;font-weight:700;padding:.12rem .55rem;border-radius:999px}.status.ok{background:rgba(61,231,255,.18);color:#b8f6ff;border:1px solid rgba(61,231,255,.35)}.status.warn{background:rgba(232,61,154,.18);color:#ffb3dc;border:1px solid rgba(232,61,154,.4)}.status.danger{background:rgba(255,107,138,.18);color:#ffb0c0;border:1px solid rgba(255,107,138,.35)}.status.info{background:rgba(143,176,212,.16);color:#c5ddf5;border:1px solid rgba(143,176,212,.3)}.conf{display:inline-flex;align-items:center;gap:.3rem;font-size:.72rem;color:var(--muted)}.conf .bar{width:3rem;height:6px;border-radius:3px;background:rgba(61,231,255,.15);overflow:hidden}.conf .bar>i{display:block;height:100%;background:var(--cyan)}.conf.low .bar>i{background:var(--magenta)}.conf.mid .bar>i{background:#f5a623}.field{margin-bottom:.7rem}.field label{display:block;font-size:.75rem;color:var(--muted);margin-bottom:.25rem}.field input,.field select,.field textarea{width:100%;border-radius:10px;border:1px solid rgba(61,231,255,.25);background:rgba(4,14,40,.9);color:var(--ink-strong);padding:.55rem .65rem;font:inherit}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--cyan)}.field .hint{font-size:.7rem;color:var(--muted);margin-top:.2rem}.field.invalid input,.field.invalid select{border-color:rgba(255,107,138,.5)}table{width:100%;border-collapse:collapse;font-size:.84rem;border:1px solid rgba(61,231,255,.2);border-radius:12px;overflow:hidden}thead{background:rgba(61,231,255,.14)}th{text-align:left;font-size:.76rem;color:var(--cyan);border-bottom:1px solid rgba(61,231,255,.28)}td,th{padding:.55rem .7rem}td{border-bottom:1px solid rgba(61,231,255,.12);color:#d5e8f8;vertical-align:top}tbody tr:nth-child(2n){background:rgba(6,18,48,.5)}tbody tr:last-child td{border-bottom:none}td a{color:var(--cyan);text-decoration:underline;text-underline-offset:2px}.link-item{display:block;padding:.7rem .8rem;border:1px solid rgba(61,231,255,.18);border-radius:12px;background:rgba(6,18,48,.8);margin-bottom:.5rem;transition:border-color .15s}.link-item:hover{border-color:rgba(61,231,255,.45)}.link-item .title{font-weight:600;color:var(--ink-strong);font-size:.9rem}.link-item .meta{font-size:.74rem;color:var(--muted);margin-top:.2rem;display:flex;flex-wrap:wrap;gap:.3rem .8rem}.flow{display:flex;flex-direction:column}.flow-node{display:flex;gap:.75rem}.flow-rail{position:relative;flex-direction:column;flex-shrink:0}.flow-dot,.flow-rail{display:flex;align-items:center;width:1.8rem}.flow-dot{height:1.8rem;border-radius:50%;background:linear-gradient(135deg,var(--cyan),var(--cyan-dim));box-shadow:0 0 14px rgba(61,231,255,.55);justify-content:center;font-weight:800;color:#041226;font-size:.82rem;z-index:1}.flow-line{flex:1 1;width:2px;margin:.25rem 0;background:linear-gradient(180deg,rgba(61,231,255,.55),rgba(61,231,255,.12))}.flow-body{flex:1 1;background:rgba(6,18,48,.8);border:1px solid rgba(61,231,255,.18);border-radius:12px;padding:.6rem .8rem;margin-bottom:.7rem;transition:border-color .15s}.flow-body:hover{border-color:rgba(61,231,255,.4)}.flow-head{justify-content:space-between;gap:.5rem;flex-wrap:wrap}.flow-head,.flow-title{display:flex;align-items:center}.flow-title{gap:.35rem;font-weight:600;color:var(--ink-strong);font-size:.92rem}.flow-icon{font-size:1rem;line-height:1}.flow-desc{font-size:.76rem;color:var(--muted);margin:.3rem 0 .5rem}.flow-foot{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.chart{display:grid;gap:.45rem}.chart .track{display:grid;grid-template-columns:5rem 1fr 3rem;align-items:center;gap:.5rem;font-size:.8rem}.chart .track .label{color:#d5e8f8}.chart .track .rail{height:14px;border-radius:7px;background:rgba(61,231,255,.1);overflow:hidden}.chart .track .rail>i{display:block;height:100%;background:linear-gradient(90deg,var(--cyan),#5ac8ff)}.chart .track.anomaly .rail>i{background:linear-gradient(90deg,var(--magenta),#ff7ab0)}.chart .track .num{color:var(--cyan);font-weight:700;text-align:right}.chart .track.anomaly .num{color:var(--magenta)}.kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(7rem,1fr));gap:.6rem;margin-bottom:.8rem}.kpi .item{background:rgba(6,18,48,.85);border:1px solid rgba(61,231,255,.18);border-radius:12px;padding:.65rem .75rem}.kpi .item .v{font-size:1.4rem;font-weight:800;color:var(--ink-strong);font-family:var(--font-serif)}.kpi .item .l{font-size:.72rem;color:var(--muted)}.empty{text-align:center;padding:2rem 1rem;font-size:.85rem}.empty,.muted{color:var(--muted)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.row-gap{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.msg{font-size:.82rem;padding:.55rem .7rem;border-radius:10px;margin-bottom:.6rem}.msg.err{background:rgba(80,16,36,.85);color:#ffc0d0;border:1px solid rgba(255,107,138,.35)}.msg.ok{background:rgba(61,231,255,.1);color:#c5f4ff;border:1px solid rgba(61,231,255,.25)}.drop{border:1.5px dashed rgba(61,231,255,.4);border-radius:16px;padding:1.6rem 1rem;text-align:center;color:#c5ddf5;background:rgba(6,18,48,.5)}.drop input[type=file]{display:none}.drop .big{font-size:2.2rem}.preview{width:100%;max-height:240px;object-fit:contain;border-radius:12px;border:1px solid var(--line);margin-top:.6rem}@media (max-width:700px){.grid-2,.grid-3{grid-template-columns:1fr}.chart .track{grid-template-columns:4rem 1fr 2.5rem}}.print-shell{min-height:100vh;background:#e8e6e1;padding-bottom:2rem}.print-toolbar{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;justify-content:space-between;padding:.7rem 1rem;background:rgba(4,14,40,.94);border-bottom:1px solid var(--line)}.print-toolbar-left,.print-toolbar-right{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.print-title{color:#e8f4ff;font-size:.95rem}.print-select-label{display:flex;align-items:center;gap:.35rem;color:#9eb6d0;font-size:.78rem}.print-select-label select{max-width:12rem;padding:.25rem .4rem;border-radius:8px;border:1px solid var(--line);background:#0a1a36;color:#e8f4ff}.print-frame-wrap{margin:.8rem auto;max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch}.print-frame{display:block;width:100%;min-height:85vh;border:0;background:#e8e6e1}.print-hint{text-align:center;font-size:.75rem;color:#666;margin:.5rem 1rem;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,sans-serif}.print-err{margin:.8rem 1rem}@media print{.print-err,.print-hint,.print-toolbar{display:none!important}.print-shell{background:#fff;padding:0}.print-frame{min-height:auto}}@media (max-width:700px){.print-toolbar{padding:.55rem .65rem}.print-frame{min-height:70vh}}