:root{--ink: #1c1b2e;--ink-2: #46435c;--muted: #74738a;--field: #faf9fc;--pink: #ff9ecd;--sky: #87ceeb;--pink-data: #f06fae;--sky-data: #4aa8d8;--blue: #3b82f6;--jelly: linear-gradient(135deg, var(--pink), var(--sky));--jelly-soft: linear-gradient(90deg, #f7b8d9, #9cc7f2);--green: #10b981;--amber: #f59e0b;--red: #ef4444;--ok-bg: #e4f4ec;--ok-ink: #2c7a57;--warn-bg: #fcf2e0;--warn-ink: #8a5a08;--bad-bg: #fcebeb;--bad-ink: #b23a2e;--info-bg: #e8f1fb;--info-ink: #2f5f8f;--series-1: #3b82f6;--series-2: #f472b6;--series-3: #a78bfa;--series-4: #94a3b8;--series-5: #67e8f9;--surface: rgba(255, 255, 255, .9);--surface-strong: rgba(255, 255, 255, .96);--surface-faint: rgba(255, 255, 255, .6);--surface-border: rgba(255, 255, 255, .95);--gloss: inset 0 1px 0 rgba(255, 255, 255, 1), inset 0 12px 22px rgba(255, 255, 255, .55), inset 0 -10px 18px rgba(124, 93, 190, .05);--surface-blur: saturate(150%) blur(18px);--shadow-1: 0 1px 3px rgba(28, 27, 46, .05), 0 10px 28px rgba(28, 27, 46, .06);--shadow-2: 0 4px 10px rgba(28, 27, 46, .07), 0 22px 44px rgba(28, 27, 46, .1);--shadow-pop: 0 8px 20px rgba(28, 27, 46, .1), 0 30px 60px rgba(28, 27, 46, .13);--r-xl: 28px;--r-lg: 20px;--r-md: 14px;--r-sm: 10px;--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-fast: .16s;--dur-base: .3s;--dur-slow: .56s;--stagger: 55ms;--press-scale: .95;--squish: scale(.965, .92)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--ink);background:var(--field);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;top:-6%;right:-6%;bottom:-6%;left:-6%;z-index:-2;background:radial-gradient(50rem 36rem at 6% -10%,rgba(255,158,205,.12),transparent 62%),radial-gradient(48rem 34rem at 96% 0%,rgba(135,206,235,.12),transparent 62%),radial-gradient(54rem 40rem at 50% 110%,rgba(196,181,253,.08),transparent 64%);animation:field-drift 36s ease-in-out infinite alternate}button,a{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}h1,h2,h3,p{margin-top:0}::selection{background:#f472b640}:focus-visible{outline:3px solid rgba(135,206,235,.65);outline-offset:2px;border-radius:var(--r-sm)}.muted{color:var(--muted);font-size:12px}.empty{color:var(--muted);text-align:center;padding:18px;margin:0}.loading{min-height:46vh;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--muted)}.spin{animation:spin 1s linear infinite}.glass{background:var(--surface);backdrop-filter:var(--surface-blur);-webkit-backdrop-filter:var(--surface-blur);border:1px solid var(--surface-border);border-radius:var(--r-lg);box-shadow:var(--gloss),var(--shadow-1)}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border-radius:999px;border:1px solid var(--surface-border);background:var(--surface-strong);box-shadow:var(--gloss),var(--shadow-1);color:var(--ink-2);font-size:13px;font-weight:600;transition:transform var(--dur-fast) var(--ease-spring),box-shadow var(--dur-fast),filter var(--dur-fast)}.btn:hover{transform:translateY(-2px) scale(1.03);box-shadow:var(--gloss),var(--shadow-2)}.btn:active{transform:var(--squish);box-shadow:inset 0 3px 8px #1c1b2e24;filter:brightness(.97)}.chip:active,.nav-link:active,.logout-link:active{transform:var(--squish)}.btn-primary{background:linear-gradient(135deg,#2a2940,var(--ink));border-color:transparent;color:#fff;box-shadow:0 5px 14px #1c1b2e38,inset 0 1px #ffffff2e}.btn-danger{background:#ef444414;border-color:#ef44444d;color:var(--red)}@media(pointer:coarse){.nav-link,.chip,.logout-link{padding:11px 16px}.btn{padding:12px 18px}}.app-header{position:sticky;top:0;z-index:40;padding:12px max(20px,calc((100vw - 1360px)/2));display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:#ffffff8c;backdrop-filter:var(--surface-blur);-webkit-backdrop-filter:var(--surface-blur);border-bottom:1px solid var(--surface-border)}.brand-row{display:flex;align-items:center;gap:26px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:750;letter-spacing:-.01em}.brand-tile{display:grid;place-items:center;width:34px;height:34px;border-radius:12px;color:#fff;background:var(--jelly);border:1px solid rgba(255,255,255,.85);box-shadow:0 4px 10px #1c1b2e24,var(--gloss)}.nav{display:flex;gap:4px;flex-wrap:wrap}.nav-link{display:inline-flex;align-items:center;gap:6px;color:var(--muted);text-decoration:none;padding:8px 13px;border-radius:999px;font-size:14px;font-weight:550;border:1px solid transparent;white-space:nowrap;flex-shrink:0;transition:background var(--dur-fast),color var(--dur-fast),box-shadow var(--dur-fast),transform var(--dur-fast) var(--ease-spring)}.nav-link:hover{background:#fff9;color:var(--ink)}.nav-link.active{background:#f1eff6;color:var(--ink);font-weight:700;border-color:#5e597a1a;box-shadow:none;animation:pop-in var(--dur-base) var(--ease-spring)}.header-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.live-badge{display:inline-flex;align-items:center;gap:7px;color:var(--ok-ink);background:var(--ok-bg);border:1px solid rgba(44,122,87,.18);border-radius:999px;padding:5px 12px;font-size:12px;font-weight:700;letter-spacing:.02em}.live-badge .status-dot{background:currentColor;animation:pulse 2.2s ease-in-out infinite}.clock{color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums}.logout-link{display:inline-flex;align-items:center;gap:6px;color:var(--ink-2);text-decoration:none;background:var(--surface-faint);border:1px solid var(--surface-border);padding:8px 13px;border-radius:999px;font-size:13px;font-weight:600;transition:background var(--dur-fast),transform var(--dur-fast) var(--ease-spring)}.logout-link:hover{background:var(--surface-strong);transform:translateY(-1px)}.page{max-width:1360px;margin:0 auto;padding:28px 22px 72px;display:grid;gap:22px;align-content:start}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px}.section-head h2{font-size:16px;margin:0;display:flex;align-items:center;gap:7px;letter-spacing:-.01em}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:15px}.stat-card{position:relative;overflow:hidden;background:var(--surface);backdrop-filter:var(--surface-blur);-webkit-backdrop-filter:var(--surface-blur);border:1px solid var(--surface-border);border-radius:var(--r-lg);box-shadow:var(--gloss),var(--shadow-1);padding:17px 19px;transition:transform var(--dur-base) var(--ease-spring),box-shadow var(--dur-base)}.stat-card:hover{transform:translateY(-4px) scale(1.02);box-shadow:var(--gloss),var(--shadow-2)}.stat-head{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:13px;font-weight:600}.stat-head span{display:inline-flex;align-items:center;gap:6px}.stat-head i{font-style:normal;font-size:10px;font-weight:700;letter-spacing:.07em;color:var(--muted);border:1px solid rgba(94,89,122,.25);border-radius:6px;padding:2px 6px;background:#fff6}.stat-value{display:block;font-size:32px;font-weight:750;letter-spacing:-.03em;margin:9px 0 4px;font-variant-numeric:tabular-nums}.stat-sub{color:var(--muted);font-size:12px}.status{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap;border:1px solid transparent}.status-dot{width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block}.status.online{color:var(--ok-ink);background:var(--ok-bg);border-color:#2c7a572e}.status.online .status-dot{animation:pulse 2.2s ease-in-out infinite}.status.degraded{color:var(--warn-ink);background:var(--warn-bg);border-color:#8a5a082e}.status.offline{color:var(--bad-ink);background:var(--bad-bg);border-color:#b23a2e2e}.sev{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;white-space:nowrap;border:1px solid transparent}.sev-critical{color:var(--bad-ink);background:var(--bad-bg);border-color:#b23a2e2e}.sev-warning{color:var(--warn-ink);background:var(--warn-bg);border-color:#8a5a082e}.sev-info{color:var(--info-ink);background:var(--info-bg);border-color:#2f5f8f2e}.node-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:16px}.node-card{position:relative;overflow:hidden;padding:19px;cursor:pointer;transition:transform var(--dur-base) var(--ease-spring),box-shadow var(--dur-base),border-color var(--dur-base)}.node-card:hover{transform:translateY(-6px) scale(1.02);box-shadow:var(--gloss),var(--shadow-pop)}.node-card:active{transform:var(--squish)}.node-card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(260px circle at var(--mx, 50%) var(--my, 50%),rgba(255,255,255,.55),transparent 68%);opacity:0;transition:opacity var(--dur-base);pointer-events:none}.node-card:hover:after{opacity:1}.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.card-title{display:flex;align-items:center;gap:12px;min-width:0}.card-title h2{margin:0 0 3px;font-size:18px;letter-spacing:-.01em}.avatar{display:grid;place-items:center;width:40px;height:40px;border-radius:14px;color:var(--ink-2);flex-shrink:0;background:#f1eff6;border:1px solid rgba(94,89,122,.1);transition:transform var(--dur-base) var(--ease-spring)}.node-card:hover .avatar{transform:scale(1.1) rotate(-6deg)}.node-id{color:var(--muted);font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.tag-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:13px}.tag{display:inline-flex;align-items:center;gap:4px;background:#f1eff6;border:1px solid rgba(94,89,122,.1);color:var(--ink-2);border-radius:999px;padding:3px 10px;font-size:11px;font-weight:650}.tag-muted{color:var(--muted)}.res-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:15px}.res-head{display:flex;justify-content:space-between;align-items:baseline;font-size:13px}.res-head span{display:inline-flex;align-items:center;gap:5px;color:var(--muted);font-weight:600;font-size:12px}.res-head strong{font-variant-numeric:tabular-nums;font-size:14px}.res-sub{margin-top:5px;min-height:14px;color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}.progress{height:7px;background:#1c1b2e12;border-radius:999px;overflow:hidden;margin-top:6px;box-shadow:inset 0 1px 3px #1c1b2e14}.progress span{display:block;height:100%;border-radius:999px;background:var(--jelly-soft);transition:width var(--dur-slow) var(--ease-spring)}.card-trend{margin-top:13px}.sparkline{width:100%;height:58px;display:block}.spark-line{fill:none;stroke-width:2;stroke-linecap:round;stroke-dasharray:1}.spark-dot{filter:drop-shadow(0 1px 3px rgba(28,27,46,.25))}.card-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:13px;padding-top:12px;border-top:1px solid rgba(94,89,122,.1)}.card-stat span{display:flex;align-items:center;gap:4px;color:var(--muted);font-size:11px;font-weight:650}.card-stat strong{display:block;margin-top:3px;font-size:13.5px;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.panel{background:var(--surface);backdrop-filter:var(--surface-blur);-webkit-backdrop-filter:var(--surface-blur);border:1px solid var(--surface-border);border-radius:var(--r-lg);box-shadow:var(--gloss),var(--shadow-1);padding:19px}.chart-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:16px;align-items:start}.multi-chart svg{width:100%;height:230px;display:block}.grid-line{stroke:#5e597a1f;stroke-width:1}.chart-line{fill:none;stroke-width:2;stroke-linecap:round;stroke-dasharray:1}.chart-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}.chart-max{color:var(--muted);font-size:12px}.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.legend span{display:inline-flex;align-items:center;gap:5px}.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}.alert-list{display:grid;gap:10px}.alert-row{display:flex;align-items:flex-start;gap:10px;padding:11px 13px;border:1px solid rgba(94,89,122,.14);border-radius:var(--r-md);background:#ffffff94}.alert-row div{flex:1}.alert-row strong{font-size:13px}.alert-row p{margin:2px 0 0;color:var(--muted);font-size:12px}.table-wrap{overflow:auto;background:var(--surface);backdrop-filter:var(--surface-blur);-webkit-backdrop-filter:var(--surface-blur);border:1px solid var(--surface-border);border-radius:var(--r-lg);box-shadow:var(--gloss),var(--shadow-1)}.panel .table-wrap{box-shadow:none;background:#ffffff94;border-radius:var(--r-md)}table{border-collapse:collapse;width:100%;min-width:640px}th,td{text-align:left;padding:11px 15px;border-bottom:1px solid rgba(94,89,122,.12);vertical-align:top;font-size:13px}th{color:var(--muted);font-size:12px;font-weight:650;background:#ffffff80}tbody tr{transition:background var(--dur-fast)}tbody tr:hover{background:#1c1b2e08}tbody tr:last-child td{border-bottom:0}.filter-row{display:flex;gap:8px}.chip{border:1px solid var(--surface-border);background:var(--surface-faint);border-radius:999px;padding:7px 15px;font-size:13px;font-weight:600;color:var(--muted);transition:background var(--dur-fast),color var(--dur-fast),transform var(--dur-fast) var(--ease-spring)}.chip:hover{transform:translateY(-1px);background:var(--surface-strong)}.chip-active{background:linear-gradient(135deg,#2a2940,var(--ink));border-color:transparent;color:#fff;box-shadow:0 4px 10px #1c1b2e33,inset 0 1px #ffffff2e;animation:pop-in var(--dur-base) var(--ease-spring)}.expiry{font-weight:650}.expiry-ok{color:var(--muted)}.expiry-soon{color:var(--amber)}.expiry-over{color:var(--red)}.skeleton{position:relative;overflow:hidden;background:var(--surface-faint);border:1px solid var(--surface-border);border-radius:var(--r-lg)}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(100deg,transparent 18%,rgba(255,255,255,.72) 50%,transparent 82%);transform:translate(-100%);animation:shimmer 1.5s ease-in-out infinite}.skeleton-title{height:42px;width:min(430px,72%);border-radius:var(--r-md)}.skeleton-stat{height:110px}.skeleton-card{height:330px}.node-card{background:#fff;border:1px solid rgba(94,89,122,.14);border-radius:16px;box-shadow:0 8px 20px #1c1b2e0f;padding:20px 20px 17px}.node-card:hover{transform:translateY(-3px);box-shadow:0 14px 28px #1c1b2e1a}.node-card:after{content:none}.node-card .avatar{width:46px;height:46px;border-radius:15px;background:#f4f3f8;color:#77748b}.card-title h2{font-size:21px;font-weight:750}.node-id{font-size:12px;color:#8a879a}.tag-row{margin-top:15px;gap:7px}.tag{padding:4px 10px;background:#f3f2f7;border-color:transparent;color:#656276}.tag-muted{color:#77748b;background:#f6f5f8}.tag-expired{color:var(--red);background:#ffe2e6cc}.res-row{gap:14px;margin-top:19px}.res-row{grid-template-columns:repeat(4,minmax(0,1fr))}.res-head strong{font-size:15px}.res-sub{font-size:11px}.res-col:nth-child(1) .progress span{background:#36b9d6}.res-col:nth-child(2) .progress span{background:#f4be2c}.res-col:nth-child(3) .progress span{background:#efad2f}.cpu-cores{margin-top:15px;padding-top:11px;border-top:1px solid rgba(94,89,122,.1)}.core-head{display:flex;justify-content:space-between;color:#8a879a;font-size:10px;font-weight:650}.core-bars{display:flex;align-items:end;gap:3px;height:34px;margin-top:7px}.core-bar{display:flex;flex:1;align-items:end;min-width:3px;height:100%;border-radius:3px;background:#5e597a14;overflow:hidden}.core-bar i{display:block;width:100%;min-height:2px;border-radius:3px;background:linear-gradient(180deg,#36b9d6,#78d6e3)}.card-stats{margin-top:12px;padding-top:11px;gap:9px}.card-stat strong{font-size:13px}@media(max-width:900px){.res-row{grid-template-columns:repeat(2,minmax(0,1fr))}}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.settings-grid .wide{grid-column:1 / -1}.component-list{display:grid;gap:10px}.component{display:flex;justify-content:space-between;align-items:center;padding:11px 13px;border:1px solid rgba(94,89,122,.14);border-radius:var(--r-md);background:#ffffff94}.component span{color:var(--muted);font-size:13px;font-weight:600}.component strong{display:inline-flex;align-items:center;gap:6px;font-size:13px}.ok-text{color:var(--green)}.settings-form{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.settings-form label{display:grid;gap:5px;color:var(--muted);font-size:12px;font-weight:650}.settings-form input{width:150px;min-height:40px;padding:8px 10px;border:1px solid rgba(94,89,122,.2);border-radius:var(--r-sm);background:#ffffffc7;color:var(--ink);font:inherit}.settings-form .btn{min-height:40px}.topology-legend{display:flex;gap:16px;color:var(--muted);font-size:12px;margin-bottom:12px}.topology-legend span{display:inline-flex;align-items:center;gap:6px}.topology-legend i{width:12px;height:12px;border-radius:4px;display:inline-block}.legend-node{background:var(--jelly)}.legend-peer{background:#5e597a59}.topology-canvas{position:relative;min-height:440px;border:1px solid rgba(94,89,122,.16);border-radius:var(--r-lg);background:radial-gradient(circle,rgba(94,89,122,.09) 1px,transparent 1.3px) 0 0 / 24px 24px,#ffffff4d;overflow:hidden}.topology-node{position:absolute;translate:-50% -50%;display:flex;align-items:center;gap:8px;background:var(--surface-strong);-webkit-backdrop-filter:var(--surface-blur);backdrop-filter:var(--surface-blur);border:1px solid var(--surface-border);border-radius:var(--r-md);padding:10px 15px;font-size:13px;box-shadow:var(--gloss),var(--shadow-1);color:var(--blue);animation:float-y 7s ease-in-out infinite alternate}.topology-node strong{color:var(--ink)}.topology-node.peer-node{border-style:dashed;color:var(--muted);animation-delay:1.8s}.topology-edges{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.topology-path{fill:none;stroke:#94a3b899;stroke-width:1.8;stroke-dasharray:5 5}.topology-edge-label{position:absolute;translate:-50% -50%;font-size:11px;color:var(--muted);background:#ffffffbf;border:1px solid rgba(94,89,122,.14);border-radius:6px;padding:1px 7px;white-space:nowrap}.back-button{justify-self:start}.detail-title{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.detail-title h1{font-size:28px;margin:0 0 5px;letter-spacing:-.02em}.detail-title p{margin:0;color:var(--muted)}.detail-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:16px;align-items:start}.detail-main,.detail-side{display:grid;gap:16px}.metric-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.metric-card{padding:13px;background:#ffffff94;border:1px solid rgba(94,89,122,.14);border-radius:var(--r-md)}.metric-card span{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12px;font-weight:650}.metric-card strong{display:block;font-size:18px;margin-top:5px;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.trend-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.trend-block{border:1px solid rgba(94,89,122,.14);border-radius:var(--r-md);padding:13px;background:#ffffff94}.trend-block>div{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:7px}.trend-block span{color:var(--muted);font-size:12px;font-weight:650}.trend-block strong{font-variant-numeric:tabular-nums}.info-row{display:flex;justify-content:space-between;gap:16px;padding:9px 0;border-bottom:1px solid rgba(94,89,122,.1);font-size:13px}.info-row:last-child{border-bottom:0}.info-row span{color:var(--muted);flex-shrink:0}.info-row strong{text-align:right;word-break:break-all;font-weight:600}.metadata-form{display:grid;gap:12px}.metadata-form label{display:grid;gap:6px;color:var(--muted);font-size:12px;font-weight:650}.metadata-form input,.metadata-form textarea,.metadata-form select{box-sizing:border-box;width:100%;min-height:42px;padding:9px 11px;border:1px solid rgba(94,89,122,.2);border-radius:var(--r-md);background:#ffffffc7;color:var(--ink);font:inherit;font-weight:500;resize:vertical}.metadata-form input:focus,.metadata-form textarea:focus,.metadata-form select:focus{outline:none;border-color:var(--sky-data);box-shadow:0 0 0 3px #87ceeb40}.tag-editor{display:grid;gap:8px}.tag-editor-list{display:flex;flex-wrap:wrap;gap:6px;min-height:28px}.tag-remove{display:inline-flex;align-items:center;border:0;padding:0;background:transparent;color:inherit;cursor:pointer}.detail-core-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(115px,1fr));gap:8px;margin-top:14px}.detail-core{padding:9px;border:1px solid rgba(94,89,122,.12);border-radius:var(--r-sm);background:#ffffff94}.detail-core>span{color:var(--muted);font-size:11px}.detail-core strong{float:right;font-size:12px}.detail-core i{display:block;height:5px;margin-top:8px;border-radius:99px;background:#5e597a17;overflow:hidden}.detail-core b{display:block;height:100%;border-radius:inherit;background:var(--sky-data)}.form-two-col{display:grid;grid-template-columns:1fr 1fr;gap:10px}.metadata-save{justify-self:start;margin-top:3px}.metadata-live{margin-top:16px;padding-top:8px;border-top:1px solid rgba(94,89,122,.1)}.iface{border:1px solid rgba(94,89,122,.14);border-radius:var(--r-md);padding:13px;margin-bottom:12px;background:#ffffff94}.iface:last-child{margin-bottom:0}.iface-head{display:flex;align-items:baseline;gap:10px}.iface-key{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;color:var(--muted);margin:4px 0 10px;word-break:break-all}.config-area{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.6;color:#dbe7f4;background:#1c1b2ee0;border:1px solid rgba(255,255,255,.14);border-radius:var(--r-md);padding:14px;resize:vertical}.config-area:focus-visible{outline-color:#87ceeb99}.config-actions{display:flex;gap:10px;margin-top:13px}.result-pre{background:#1c1b2ee0;color:#d7e3ee;border:1px solid rgba(255,255,255,.12);border-radius:var(--r-md);padding:13px;font-size:12px;overflow:auto;white-space:pre-wrap;word-break:break-all}.login-page{min-height:100vh;display:grid;place-items:center;padding:20px;position:relative;overflow:hidden}.login-page:before,.login-page:after{content:"";position:absolute;z-index:-1;pointer-events:none}.login-page:before{width:330px;height:330px;left:11%;top:16%;border-radius:46% 54% 58% 42%/52% 44% 56% 48%;background:linear-gradient(135deg,#ff9ecdbf,#f472b659);box-shadow:var(--gloss),0 24px 48px #1c1b2e14;animation:float-y 8s ease-in-out infinite alternate}.login-page:after{width:250px;height:250px;right:13%;bottom:14%;border-radius:56% 44% 42% 58%/46% 56% 44% 54%;background:linear-gradient(135deg,#87ceebbf,#3b82f659);box-shadow:var(--gloss),0 24px 48px #1c1b2e14;animation:float-y 9.5s ease-in-out infinite alternate-reverse}.login-card{width:100%;max-width:410px;background:var(--surface-strong);backdrop-filter:var(--surface-blur);-webkit-backdrop-filter:var(--surface-blur);border:1px solid var(--surface-border);border-radius:var(--r-xl);box-shadow:var(--gloss),var(--shadow-pop);padding:32px;animation:float-y 7s ease-in-out infinite alternate}.login-card .brand{margin-bottom:4px}.login-card label{display:block;font-size:13px;font-weight:650;margin:17px 0 7px;color:var(--ink-2)}.login-card input{box-sizing:border-box;width:100%;min-height:46px;padding:11px 13px;border:1px solid rgba(94,89,122,.25);border-radius:var(--r-md);background:#ffffffb3;font:inherit;transition:border-color var(--dur-fast),box-shadow var(--dur-fast),transform var(--dur-fast) var(--ease-spring)}.login-card input:focus{outline:none;border-color:var(--sky-data);box-shadow:0 0 0 4px #87ceeb4d;transform:scale(1.015)}.login-card button{box-sizing:border-box;width:100%;min-height:46px;margin-top:22px;border:0;border-radius:999px;background:linear-gradient(135deg,#2a2940,var(--ink));color:#fff;font-weight:700;font-size:14px;box-shadow:0 5px 14px #1c1b2e38,inset 0 1px #ffffff2e;transition:transform var(--dur-fast) var(--ease-spring),box-shadow var(--dur-fast)}.login-card button:hover{transform:translateY(-2px) scale(1.02)}.login-card button:active{transform:scale(var(--press-scale));box-shadow:inset 0 3px 8px #1c1b2e33}.login-error{color:var(--red);font-size:13px;margin:13px 0 0}.chart-axis{stroke:#5e597a47;stroke-width:1}.chart-guide{stroke:#5e597a14;stroke-width:1;stroke-dasharray:3 5}.axis-label{fill:var(--muted);font-size:8px}.profit-chart svg{width:100%;min-height:220px;display:block}.profit-line{stroke:var(--pink-data);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.profit-positive{fill:var(--green)}.profit-negative{fill:var(--red)}.ledger-form{display:grid;grid-template-columns:110px 150px 1fr 1.4fr 190px 120px 90px auto;gap:8px;align-items:center;margin-bottom:14px}.ledger-form input,.ledger-form select{min-height:40px;min-width:0;padding:8px 10px;border:1px solid rgba(94,89,122,.2);border-radius:var(--r-sm);background:#ffffffc7;color:var(--ink);font:inherit}.ledger-form .btn{justify-content:center;min-height:40px;padding:8px 12px}.snapshot-form{display:grid;grid-template-columns:170px 1fr 1fr auto;gap:8px;align-items:end}.sync-list{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 12px}.snapshot-form label{display:grid;gap:5px;color:var(--muted);font-size:12px;font-weight:650}.snapshot-form input{min-height:40px;min-width:0;padding:8px 10px;border:1px solid rgba(94,89,122,.2);border-radius:var(--r-sm);background:#ffffffc7;color:var(--ink);font:inherit}.snapshot-form>input{height:40px}.snapshot-form .btn{min-height:40px}.money-income{color:var(--green);font-weight:700}.money-expense{color:var(--red);font-weight:700}.icon-btn{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:18px;line-height:1}@media(max-width:1100px){.chart-grid,.detail-grid,.settings-grid{grid-template-columns:1fr}}@media(max-width:768px){.nav{order:3;width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}.metric-cards,.ledger-form{grid-template-columns:repeat(2,minmax(0,1fr))}.snapshot-form{grid-template-columns:1fr 1fr}.page{padding:20px 14px 56px}}@keyframes rise{0%{opacity:0;transform:translateY(18px) scale(.94)}to{opacity:1;transform:none}}@keyframes field-drift{0%{transform:translateZ(0) scale(1)}to{transform:translate3d(1.6%,-1.8%,0) scale(1.045)}}@keyframes float-y{0%{transform:translateY(0)}to{transform:translateY(-7px)}}@keyframes pulse{0%,to{box-shadow:0 0 #10b98173}55%{box-shadow:0 0 0 5px #10b98100}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes pop-in{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes fade-in{0%{opacity:0}}@keyframes shimmer{to{transform:translate(100%)}}@keyframes grow-x{0%{transform:scaleX(0)}}.progress span{transform-origin:left center;animation:grow-x var(--dur-slow) var(--ease-spring) both}.spark-area{animation:fade-in .7s var(--ease-out) .48s both}@keyframes flow{to{stroke-dashoffset:-20}}.topology-path{animation:flow 1.4s linear infinite}.reveal-item{animation:rise var(--dur-slow) var(--ease-spring) both}.reveal-item:nth-child(2){animation-delay:calc(var(--stagger) * 1)}.reveal-item:nth-child(3){animation-delay:calc(var(--stagger) * 2)}.reveal-item:nth-child(4){animation-delay:calc(var(--stagger) * 3)}.reveal-item:nth-child(5){animation-delay:calc(var(--stagger) * 4)}.reveal-item:nth-child(6){animation-delay:calc(var(--stagger) * 5)}.reveal-item:nth-child(7){animation-delay:calc(var(--stagger) * 6)}.reveal-item:nth-child(8){animation-delay:calc(var(--stagger) * 7)}.reveal-item:nth-child(n+9){animation-delay:calc(var(--stagger) * 8)}.spark-line,.chart-line{animation:draw .9s var(--ease-out) .2s both}.page-transition{display:contents}.page-transition>*{animation:rise var(--dur-slow) var(--ease-spring) both}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.spark-line,.chart-line{stroke-dashoffset:0}body:before{animation:none}}
