:root{--color-bg: #faf8f5;--color-surface: #ffffff;--color-surface-muted: #f4f0eb;--color-text: #25211e;--color-text-secondary: #756d66;--color-text-faint: #a39b93;--color-border: #e8e1da;--color-border-strong: #d7cdc3;--color-primary: #8b5e3c;--color-primary-hover: #754b2f;--color-primary-soft: #f1e7df;--color-accent: #c9895b;--color-success: #477a62;--color-success-soft: #e3efe8;--color-warning: #b27a35;--color-warning-soft: #f6ecdc;--color-error: #a6534a;--color-error-soft: #f5e3e1;--color-info: #64748b;--color-info-soft: #e7ebf0;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 10px;--shadow-sm: 0 1px 2px rgba(37, 33, 30, .06);--shadow-md: 0 4px 14px rgba(37, 33, 30, .1);--sidebar-width: 232px;--topbar-height: 52px}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);font-size:14px;line-height:1.45;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}a{color:var(--color-primary);text-decoration:none}a:hover{color:var(--color-primary-hover);text-decoration:underline}h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.01em}h1{font-size:20px}h2{font-size:16px}h3{font-size:14px}code,pre,.mono{font-family:var(--font-mono);font-size:12.5px}pre{margin:0;padding:10px 12px;background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow-x:auto;white-space:pre-wrap;word-break:break-word}.num{font-variant-numeric:tabular-nums}.muted{color:var(--color-text-secondary)}.faint{color:var(--color-text-faint)}.small{font-size:12px}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nowrap{white-space:nowrap}.right{text-align:right}.stack>*+*{margin-top:12px}.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.grid-4{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.shell{display:flex;min-height:100%}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-width);background:var(--color-surface);border-right:1px solid var(--color-border);display:flex;flex-direction:column;z-index:30;transform:translate(-100%);transition:transform .18s ease}.sidebar.open{transform:translate(0);box-shadow:var(--shadow-md)}.sidebar-brand{height:var(--topbar-height);display:flex;align-items:center;gap:10px;padding:0 18px;border-bottom:1px solid var(--color-border);font-weight:700;font-size:15px;color:var(--color-text)}.sidebar-brand .logo{width:24px;height:24px;border-radius:6px;background:var(--color-primary);display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:700}.sidebar-nav{padding:10px;display:flex;flex-direction:column;gap:2px;flex:1;overflow-y:auto}.nav-link{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border-radius:var(--radius-md);color:var(--color-text-secondary);font-weight:500}.nav-link:hover{background:var(--color-surface-muted);color:var(--color-text);text-decoration:none}.nav-link.active{background:var(--color-primary-soft);color:var(--color-primary-hover)}.nav-link .count{font-size:11px;background:var(--color-error);color:#fff;border-radius:999px;padding:1px 7px;font-weight:600}.sidebar-footer{padding:12px 14px;border-top:1px solid var(--color-border);font-size:12px;color:var(--color-text-secondary)}.sidebar-footer .email{color:var(--color-text);font-weight:500;display:block}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:var(--topbar-height);display:flex;align-items:center;gap:12px;padding:0 16px;background:var(--color-surface);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:20}.topbar .spacer{flex:1}.content{padding:20px 20px 40px;max-width:1320px;width:100%;margin:0 auto}.overlay{position:fixed;inset:0;background:#25211e59;z-index:25}@media(min-width:960px){.sidebar{transform:none}.main{margin-left:var(--sidebar-width)}.overlay,.menu-button{display:none}}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}.page-header p{margin:4px 0 0;color:var(--color-text-secondary)}.breadcrumbs{font-size:12px;color:var(--color-text-secondary);margin-bottom:6px}.breadcrumbs a{color:var(--color-text-secondary)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--color-border)}.card-body{padding:16px}.card-body.tight{padding:0}.stat{padding:14px 16px}.stat .label{font-size:12px;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em}.stat .value{font-size:26px;font-weight:600;margin-top:4px;font-variant-numeric:tabular-nums}.stat .hint{font-size:12px;color:var(--color-text-secondary);margin-top:2px}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--color-border);margin-bottom:16px;overflow-x:auto}.tab{padding:9px 14px;border:0;background:none;font:inherit;font-weight:500;color:var(--color-text-secondary);border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;white-space:nowrap}.tab:hover{color:var(--color-text)}.tab.active{color:var(--color-primary-hover);border-bottom-color:var(--color-primary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 12px;border-radius:var(--radius-md);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);font:inherit;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .12s ease,border-color .12s ease}.btn:hover{background:var(--color-surface-muted);text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn-danger{color:var(--color-error);border-color:#e4c3bf}.btn-danger:hover{background:var(--color-error-soft)}.btn-ghost{border-color:transparent;background:transparent}.btn-sm{padding:4px 9px;font-size:12.5px}.btn-block{width:100%}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:500;line-height:1.5;background:var(--color-surface-muted);color:var(--color-text-secondary);white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.8}.badge.plain:before{display:none}.badge-success{background:var(--color-success-soft);color:var(--color-success)}.badge-warning{background:var(--color-warning-soft);color:var(--color-warning)}.badge-error{background:var(--color-error-soft);color:var(--color-error)}.badge-info{background:var(--color-info-soft);color:var(--color-info)}.badge-primary{background:var(--color-primary-soft);color:var(--color-primary-hover)}.table-wrap{overflow-x:auto}table.table{width:100%;border-collapse:collapse;font-size:13.5px}.table th,.table td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--color-border);vertical-align:middle}.table th{font-size:12px;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.03em;background:var(--color-surface-muted);white-space:nowrap}.table tbody tr:hover{background:#fcfaf8}.table tbody tr:last-child td{border-bottom:0}.table tr.clickable{cursor:pointer}.table td.actions{text-align:right;white-space:nowrap}.table .num{text-align:right}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field label,.field .label{font-size:12.5px;font-weight:500;color:var(--color-text)}.field .help{font-size:12px;color:var(--color-text-secondary)}.field .error{font-size:12px;color:var(--color-error)}.input,.select,.textarea{font:inherit;padding:7px 10px;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);width:100%;min-width:0}.input:focus,.select:focus,.textarea:focus{outline:2px solid rgba(139,94,60,.25);border-color:var(--color-primary)}.input.invalid,.select.invalid,.textarea.invalid{border-color:var(--color-error)}.textarea{min-height:88px;resize:vertical}.checkbox{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;cursor:pointer}.checkbox input{width:15px;height:15px;accent-color:var(--color-primary)}.form-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.form-actions{display:flex;gap:8px;justify-content:flex-end;padding-top:8px}.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;padding:12px 16px;border-bottom:1px solid var(--color-border)}.filters .field{min-width:150px}.filters .field.grow{flex:1;min-width:200px}.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;border-top:1px solid var(--color-border);font-size:12.5px;color:var(--color-text-secondary)}.state{padding:36px 20px;text-align:center;color:var(--color-text-secondary)}.state h3{color:var(--color-text);margin-bottom:6px}.state.error h3{color:var(--color-error)}.spinner{width:16px;height:16px;border:2px solid var(--color-border-strong);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite;display:inline-block;vertical-align:middle}.spinner.lg{width:28px;height:28px;border-width:3px}@keyframes spin{to{transform:rotate(360deg)}}.toasts{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:60;max-width:360px}.toast{background:var(--color-text);color:#fff;padding:10px 14px;border-radius:var(--radius-md);box-shadow:var(--shadow-md);font-size:13px;display:flex;gap:10px;align-items:flex-start}.toast.success{background:var(--color-success)}.toast.error{background:var(--color-error)}.toast.warning{background:var(--color-warning)}.toast button{background:none;border:0;color:inherit;cursor:pointer;font-size:16px;line-height:1;margin-left:auto}.modal-backdrop{position:fixed;inset:0;background:#25211e66;display:flex;align-items:flex-start;justify-content:center;padding:60px 16px;z-index:50;overflow-y:auto}.modal{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);width:100%;max-width:560px}.modal.wide{max-width:860px}.modal-header{padding:14px 18px;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center}.modal-body{padding:18px}.modal-footer{padding:12px 18px;border-top:1px solid var(--color-border);display:flex;justify-content:flex-end;gap:8px}.kv{display:grid;grid-template-columns:minmax(120px,180px) 1fr;gap:6px 16px;font-size:13.5px}.kv dt{color:var(--color-text-secondary)}.kv dd{margin:0;min-width:0;word-break:break-word}.steps{display:flex;flex-direction:column;gap:6px;font-size:13px}.step{display:flex;align-items:center;gap:8px;color:var(--color-text-secondary)}.step.done{color:var(--color-success)}.step.active{color:var(--color-text);font-weight:500}.login{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px}.login .card{width:100%;max-width:380px;padding:28px;text-align:center}.alert-box{padding:10px 12px;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface-muted);font-size:13px}.alert-box.error{background:var(--color-error-soft);border-color:#e4c3bf;color:var(--color-error)}.alert-box.warning{background:var(--color-warning-soft);border-color:#ead6b8;color:var(--color-warning)}.alert-box.success{background:var(--color-success-soft);border-color:#c6dccf;color:var(--color-success)}.thumb{width:40px;height:40px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface-muted)}.chip-list{display:flex;flex-wrap:wrap;gap:4px}.unread-dot{width:8px;height:8px;border-radius:50%;background:var(--color-primary);display:inline-block}.json{font-family:var(--font-mono);font-size:12px;white-space:pre-wrap;word-break:break-word}
