:root{--color-danger-hover: #B93636;--color-border-strong: #C3C9D3;--color-scrim: rgba(20, 23, 31, .45);--font-size-sm: 13px;--font-size-xs: 12px;--size-hit-target: 44px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--radius-sm: 4px;--radius-md: 8px;--font: Inter, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, Menlo, monospace;--color-bg: #F7F8FA;--color-surface: #FFFFFF;--color-border: #E2E5EA;--color-text: #14171F;--color-text-muted: #5B6472;--color-text-disabled: #9AA1AD;--color-primary: #2F5BEA;--color-primary-hover: #2449C4;--color-on-primary: #FFFFFF;--color-primary-soft: #EAF0FF;--color-success: #1E8E4E;--color-warning: #B7791F;--color-danger: #D64545;--color-success-soft: #E8F6EE;--color-warning-soft: #FDF3E1;--color-danger-soft: #FCEAEA;--color-row-hover: #F1F3F6;--color-banner-info-border: #C9D8FF;--color-banner-success-border: #BFE5CF;--color-banner-warning-border: #F0D9A8;--color-banner-danger-border: #F2BDBD;--shadow-modal: 0 8px 32px rgba(20, 23, 31, .16)}*{box-sizing:border-box}html,body{margin:0}body{font:400 14px/20px var(--font);color:var(--color-text);background:var(--color-bg)}h1{font:600 24px/32px var(--font);margin:0}h2{font:600 18px/28px var(--font);margin:0}h3{font:600 16px/24px var(--font);margin:0}p{margin:0}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.small{font-size:13px;line-height:18px}.caption{font-size:12px;line-height:16px}.muted{color:var(--color-text-muted)}.mono{font-family:var(--font-mono)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.stack>*+*{margin-top:var(--space-4)}.row{display:flex;align-items:center;gap:var(--space-3)}.btn{font:500 14px/20px var(--font);height:36px;padding:0 var(--space-4);border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);text-decoration:none;white-space:nowrap}.btn:hover{text-decoration:none}.btn.primary{background:var(--color-primary);color:var(--color-on-primary)}.btn.primary:hover{background:var(--color-primary-hover)}.btn.secondary{background:var(--color-surface);border-color:var(--color-border);color:var(--color-text)}.btn.secondary:hover{background:var(--color-row-hover)}.btn.ghost{background:transparent;color:var(--color-primary)}.btn.ghost:hover{background:var(--color-primary-soft)}.btn.sm{height:28px;padding:0 var(--space-3);font-size:13px}.btn.block{width:100%}.btn[disabled]{background:var(--color-row-hover);color:var(--color-text-disabled);border-color:var(--color-border);cursor:not-allowed}.btn.loading{pointer-events:none;opacity:.85}.btn.loading:before{content:"";width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .8s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.field label{display:block;font-weight:500;margin-bottom:var(--space-1)}.field .err{font-size:12px;line-height:16px;color:var(--color-danger);margin-top:var(--space-1)}.input{width:100%;height:36px;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);font:400 14px/20px var(--font);color:var(--color-text)}.input::placeholder{color:var(--color-text-disabled)}.input:focus{outline:2px solid var(--color-primary);outline-offset:0;border-color:var(--color-primary)}.input.invalid{border-color:var(--color-danger)}.input[readonly],.input[disabled]{background:var(--color-row-hover);color:var(--color-text-muted)}.reqs{list-style:none;margin:var(--space-2) 0 0;padding:0;font-size:12px;line-height:16px;color:var(--color-text-muted)}.reqs li:before{content:"○ "}.reqs li.ok{color:var(--color-success)}.reqs li.ok:before{content:"✓ "}.reqs li.bad{color:var(--color-danger)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-5)}.banner{display:flex;gap:var(--space-3);align-items:flex-start;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid;font-size:14px}.banner .b-body{flex:1;min-width:0;overflow-wrap:anywhere}.banner:before{font-weight:700;width:16px;text-align:center}.banner.info{background:var(--color-primary-soft);border-color:var(--color-banner-info-border)}.banner.success{background:var(--color-success-soft);border-color:var(--color-banner-success-border)}.banner.warning{background:var(--color-warning-soft);border-color:var(--color-banner-warning-border)}.banner.warning:before{content:"!";color:var(--color-warning)}.banner.danger{background:var(--color-danger-soft);border-color:var(--color-banner-danger-border)}.banner.info:before{content:"i";color:var(--color-primary)}.banner.success:before{content:"✓";color:var(--color-success)}.banner.danger:before{content:"!";color:var(--color-danger)}.skeleton{background:linear-gradient(90deg,#EEF0F3 25%,var(--color-bg) 50%,#EEF0F3 75%);background-size:200% 100%;animation:sk 1.2s infinite;border-radius:var(--radius-sm);height:14px}@keyframes sk{to{background-position:-200% 0}}.logo{font:700 20px/28px var(--font);color:var(--color-primary);letter-spacing:-.01em;text-align:center;margin-bottom:var(--space-5)}.logo b{color:var(--color-text)}.grow{flex:1}.right{margin-left:auto}.btn.danger{background:var(--color-danger);color:var(--color-on-primary)}.btn.danger:hover{background:var(--color-danger-hover)}.btn.ghost-danger{background:transparent;color:var(--color-danger)}.btn.ghost-danger:hover{background:var(--color-danger-soft)}.field .hint{font-size:var(--font-size-xs);line-height:16px;color:var(--color-text-muted);margin-top:var(--space-1)}.checkbox{display:flex;gap:var(--space-2);align-items:flex-start;cursor:pointer}.checkbox input{margin:3px 0 0;width:16px;height:16px}.card.flush{padding:0}.card-h{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border)}.toast{position:fixed;top:var(--space-4);right:var(--space-4);z-index:60;background:var(--color-text);color:var(--color-on-primary);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);box-shadow:var(--shadow-modal);max-width:360px}.toast.ok{border-left:4px solid var(--color-success)}.toast.err{border-left:4px solid var(--color-danger)}.badge{display:inline-flex;align-items:center;height:22px;padding:0 var(--space-2);border-radius:11px;font-size:var(--font-size-xs);font-weight:500;background:var(--color-row-hover);color:var(--color-text-muted)}.badge.active,.badge.indexed,.badge.accepted{background:var(--color-success-soft);color:var(--color-success)}.badge.invited,.badge.pending,.badge.processing{background:var(--color-primary-soft);color:var(--color-primary)}.badge.expired,.badge.warning{background:var(--color-warning-soft);color:var(--color-warning)}.badge.error,.badge.blocked{background:var(--color-danger-soft);color:var(--color-danger)}.badge.revoked,.badge.suspended{background:var(--color-row-hover);color:var(--color-text-muted)}.progress{height:8px;border-radius:4px;background:var(--color-row-hover);overflow:hidden}.progress>i{display:block;height:100%;background:var(--color-primary);border-radius:4px}.progress.warning>i{background:var(--color-warning)}.progress.danger>i{background:var(--color-danger)}.progress.success>i{background:var(--color-success)}.progress.thin{height:4px}.empty{text-align:center;padding:var(--space-7) var(--space-5)}.empty .ic{width:48px;height:48px;border-radius:50%;background:var(--color-primary-soft);color:var(--color-primary);display:flex;align-items:center;justify-content:center;margin:0 auto var(--space-3);font-size:22px;font-weight:600}.empty .ic.warn{background:var(--color-warning-soft);color:var(--color-warning)}.empty .ic.bad{background:var(--color-danger-soft);color:var(--color-danger)}.empty h2{margin-bottom:var(--space-1)}.empty p{color:var(--color-text-muted);max-width:440px;margin:0 auto var(--space-4)}.table{width:100%;border-collapse:collapse}.table th{font-size:var(--font-size-xs);line-height:16px;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);text-align:left;font-weight:600;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-surface)}.table td{height:44px;padding:0 var(--space-4);border-bottom:1px solid var(--color-border);vertical-align:middle}.table tbody tr:hover{background:var(--color-row-hover)}.table tr.click{cursor:pointer}.table tr:last-child td{border-bottom:0}.table .num{text-align:right}.table-foot{padding:var(--space-3);text-align:center;border-top:1px solid var(--color-border)}.backdrop{position:fixed;inset:0;background:var(--color-scrim);z-index:50;display:flex;align-items:center;justify-content:center}.modal{background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-modal);padding:var(--space-5)}.modal h2{margin-bottom:var(--space-3)}.modal .actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-5)}.secret{display:flex;gap:var(--space-2);align-items:center;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3)}.secret code{flex:1;font:500 var(--font-size-sm)/20px var(--font-mono);word-break:break-all}.page-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-5)}.dropzone{border:2px dashed var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);text-align:center;padding:var(--space-6)}.dropzone.over{border-color:var(--color-primary);background:var(--color-primary-soft)}.dropzone.disabled{opacity:.55;background:var(--color-row-hover)}.dropzone .btns{display:flex;gap:var(--space-2);justify-content:center;margin-top:var(--space-3)}.queue-row{display:grid;grid-template-columns:1.6fr 80px 1.2fr 190px;gap:var(--space-4);align-items:center;padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--color-border);min-height:48px}.queue-row:last-child{border-bottom:0}.queue-row .path{font-size:var(--font-size-xs);color:var(--color-text-muted)}.qstat{font-size:var(--font-size-sm)}.qstat.ok{color:var(--color-success)}.qstat.bad{color:var(--color-danger)}.qstat.warn{color:var(--color-warning)}.kv{display:flex;gap:var(--space-6)}.kv div span{display:block}.fileic{display:inline-block;width:16px;margin-right:var(--space-2);color:var(--color-text-muted)}.select{height:36px;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);font:400 14px/20px var(--font);color:var(--color-text)}.btn{position:relative}.btn:after{content:"";position:absolute;left:0;right:0;top:50%;height:var(--size-hit-target);transform:translateY(-50%)}.table-wrap{overflow-x:auto}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.nowrap{white-space:nowrap}.crumb{font-size:13px;color:var(--color-text-muted);margin-bottom:var(--space-2)}.tabs{display:flex;flex-wrap:wrap;gap:var(--space-1);border-bottom:1px solid var(--color-border);padding:0 var(--space-4)}.tabs button{font:500 14px/20px var(--font);background:none;border:0;border-bottom:2px solid transparent;padding:var(--space-3);min-height:var(--size-hit-target);color:var(--color-text-muted);cursor:pointer;margin-bottom:-1px}.tabs button[aria-selected=true]{color:var(--color-primary);border-bottom-color:var(--color-primary)}.rc{display:flex;gap:var(--space-3);align-items:flex-start;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);background:var(--color-surface);cursor:pointer;min-height:var(--size-hit-target)}.rc input{margin:var(--space-1) 0 0}.rc:has(input:checked){border-color:var(--color-primary);background:var(--color-primary-soft)}.rc:has(input:focus-visible){outline:2px solid var(--color-primary)}.rc-title{display:block;font-weight:500}.tags{display:flex;flex-wrap:wrap;gap:var(--space-1);align-items:center;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-1) var(--space-2);min-height:36px;background:var(--color-surface)}.tags:focus-within{outline:2px solid var(--color-primary)}.tags.invalid{border-color:var(--color-danger)}.tag{display:inline-flex;gap:var(--space-1);align-items:center;background:var(--color-row-hover);border-radius:var(--radius-sm);padding:0 var(--space-2);font:12px/22px var(--font-mono)}.tag button{background:none;border:0;cursor:pointer;padding:0 var(--space-1);color:var(--color-text-muted);position:relative}.tag button:after{content:"";position:absolute;inset:calc(var(--space-3) * -1) calc(var(--space-2) * -1)}.tags input{border:0;outline:0;flex:1;min-width:80px;font:14px var(--font);height:28px;background:transparent}.tree{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);padding:var(--space-2) var(--space-3)}.tree ul{list-style:none;margin:0;padding:0 0 0 var(--space-5)}.tree>ul{padding-left:0}.tree-row{display:flex;align-items:center;gap:var(--space-2);min-height:var(--size-hit-target)}.tree-row .btn{flex-shrink:0}.chip{display:inline-flex;min-height:20px;align-items:center;padding:0 var(--space-2);border-radius:var(--radius-sm);background:var(--color-row-hover);font:11px/16px var(--font-mono);color:var(--color-text-muted)}.chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-4)}.metric .v{font:600 20px/28px var(--font)}.two{display:grid;grid-template-columns:minmax(0,640px) 1fr;gap:var(--space-6);align-items:start}@media(max-width:900px){.two{grid-template-columns:1fr}}.page-h{flex-wrap:wrap;gap:var(--space-3)}.menuwrap{position:relative;display:inline-block}.menu{position:absolute;right:0;top:100%;margin-top:var(--space-1);min-width:260px;max-width:calc(100vw - var(--space-4));background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-modal);padding:var(--space-1);z-index:20}.menu button{display:block;width:100%;text-align:left;font:400 14px/20px var(--font);background:none;border:0;padding:var(--space-3);min-height:var(--size-hit-target);border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text)}.menu button:hover{background:var(--color-row-hover)}.menu button.danger{color:var(--color-danger)}.tipwrap{position:relative;display:inline-block;vertical-align:middle}.tip-btn{width:var(--size-hit-target);height:var(--size-hit-target);margin:calc(var(--space-3) * -1) calc(var(--space-2) * -1);border:0;background:none;cursor:pointer;color:var(--color-text-muted);font:600 12px/16px var(--font);display:inline-flex;align-items:center;justify-content:center}.tip-btn span{width:16px;height:16px;border:1px solid currentColor;border-radius:50%;display:inline-flex;align-items:center;justify-content:center}.tip-body{position:absolute;left:0;top:100%;z-index:10;width:260px;max-width:calc(100vw - var(--space-6));margin-top:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);font-weight:400;font-size:12px;line-height:16px;color:var(--color-text);box-shadow:var(--shadow-modal)}.progress.indeterminate>i{width:40%;animation:progress-slide 1.2s ease-in-out infinite}@keyframes progress-slide{0%{margin-left:-40%}to{margin-left:100%}}@media(prefers-reduced-motion:reduce){.progress.indeterminate>i{animation:none;width:100%}}
