*{box-sizing:border-box}:root{--bg: #f6f5f2;--panel: #ffffff;--surface-2: #faf9f7;--surface-3: #efede8;--input-bg: #ffffff;--border: #e6e3dd;--border-strong: #d2ccc2;--text: #211e1b;--muted: #79716b;--accent: #0f766e;--accent-hover: #115e59;--accent-soft: #e7f2f0;--accent-border: #9dccc5;--accent-ring: rgba(15, 118, 110, .25);--green: #16a34a;--green-soft: #dcfce7;--green-text: #15803d;--red: #dc2626;--red-soft: #fee2e2;--red-text: #b91c1c;--amber: #d97706;--amber-soft: #fef3c7;--amber-text: #b45309;--topbar-bg: rgba(255, 255, 255, .85);--legend-bg: rgba(255, 255, 255, .9);--radius: 12px;--radius-sm: 8px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .05);--shadow-md: 0 4px 12px rgba(15, 23, 42, .08);--shadow-lg: 0 16px 40px rgba(15, 23, 42, .16);--transition: .16s ease;color-scheme:light}:root[data-theme=dark]{--bg: #141312;--panel: #1e1c1a;--surface-2: #262321;--surface-3: #2f2b28;--input-bg: #171514;--border: #393430;--border-strong: #4e4740;--text: #ece9e4;--muted: #a49d93;--accent: #0d9488;--accent-hover: #14b8a6;--accent-soft: rgba(20, 184, 166, .13);--accent-border: rgba(45, 212, 191, .4);--accent-ring: rgba(45, 212, 191, .3);--green: #4ade80;--green-soft: rgba(34, 197, 94, .16);--green-text: #4ade80;--red: #f87171;--red-soft: rgba(239, 68, 68, .16);--red-text: #fca5a5;--amber: #fbbf24;--amber-soft: rgba(245, 158, 11, .16);--amber-text: #fcd34d;--topbar-bg: rgba(20, 19, 18, .85);--legend-bg: rgba(30, 28, 26, .9);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 14px rgba(0, 0, 0, .4);--shadow-lg: 0 16px 44px rgba(0, 0, 0, .55);color-scheme:dark}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-track{background:transparent}.center-page{min-height:100vh;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:16px;background:var(--bg)}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:var(--topbar-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.topbar .brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:16px;letter-spacing:-.01em;text-decoration:none;color:var(--text)}.brand-mark{display:inline-flex;align-items:center;justify-content:center;border-radius:9px;box-shadow:var(--shadow-sm);flex-shrink:0}.brand-word{font-weight:700;letter-spacing:-.02em}.brand-claim{padding-left:10px;border-left:1px solid var(--border);color:var(--muted);font-size:12px;font-weight:500;letter-spacing:0;white-space:nowrap}@media(max-width:900px){.brand-claim{display:none}}.login-brand{display:flex;align-items:center;justify-content:center;gap:12px;font-size:30px}.topbar nav{display:flex;gap:4px;align-items:center}.topbar nav a{color:var(--muted);text-decoration:none;padding:7px 12px;border-radius:var(--radius-sm);font-weight:500;transition:background var(--transition),color var(--transition)}.topbar nav a:hover{color:var(--text);background:var(--accent-soft)}.topbar nav a.active{color:var(--accent);background:var(--accent-soft)}.user-chip{display:inline-flex;align-items:center;gap:8px;margin-left:10px;padding:5px 12px 5px 6px;border:1px solid var(--border);border-radius:999px;background:var(--panel);color:var(--muted);font-size:13px}.user-chip .avatar{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-weight:700;font-size:12px;text-transform:uppercase}.main{flex:1;padding:28px 24px 48px;max-width:1400px;width:100%;margin:0 auto}h1{font-size:24px;font-weight:700;letter-spacing:-.02em;margin:0 0 18px}h2{font-size:15px;font-weight:600;letter-spacing:-.01em;margin:0 0 12px}a{color:var(--accent)}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:16px;box-shadow:var(--shadow-sm)}.row{display:flex;gap:16px;flex-wrap:wrap}label.field{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:500;color:var(--muted);min-width:180px;flex:1}input,select,textarea{padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font:inherit;background:var(--input-bg);color:var(--text);transition:border-color var(--transition),box-shadow var(--transition)}input:hover,select:hover,textarea:hover{border-color:var(--border-strong)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}textarea{resize:vertical}button{padding:9px 16px;border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:var(--radius-sm);cursor:pointer;font:inherit;font-weight:600;box-shadow:var(--shadow-sm);transition:background var(--transition),border-color var(--transition),box-shadow var(--transition),transform var(--transition)}button:hover{background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:var(--shadow-md)}button:active{transform:translateY(1px);box-shadow:var(--shadow-sm)}button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-ring)}button:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}button.secondary{background:var(--panel);color:var(--text);border-color:var(--border)}button.secondary:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-soft)}button.danger{background:var(--panel);border-color:var(--red-soft);color:var(--red)}button.danger:hover{background:var(--red);border-color:var(--red);color:#fff}button.danger:focus-visible{box-shadow:0 0 0 3px #dc262640}button.success{background:var(--green);border-color:var(--green)}button.success:hover{background:#15803d;border-color:#15803d}.link-btn{background:none;border:none;color:var(--muted);cursor:pointer;padding:4px 6px;border-radius:6px;font-weight:500;box-shadow:none;transition:color var(--transition),background var(--transition)}.link-btn:hover{color:var(--accent);background:var(--accent-soft);box-shadow:none}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--muted);box-shadow:none}.icon-btn:hover{background:var(--red-soft);border-color:transparent;color:var(--red);box-shadow:none}.icon-btn.neutral:hover{background:var(--accent-soft);color:var(--accent)}.link-btn:active{transform:none}.section-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:22px}.section-card{display:flex;align-items:center;gap:14px;padding:16px 18px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);color:var(--text);text-decoration:none;transition:box-shadow var(--transition),transform var(--transition),border-color var(--transition)}.section-card:hover{border-color:var(--accent-border);box-shadow:var(--shadow-md);transform:translateY(-2px)}.section-card:active{transform:translateY(0)}.section-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:38px;height:38px;border-radius:10px;background:var(--accent-soft);color:var(--accent)}.section-text{display:flex;flex-direction:column;gap:2px;min-width:0}.section-label{font-size:15px;font-weight:600;letter-spacing:-.01em}.section-hint{font-size:13px}.section-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:18px}.section-head h1{margin:0}.back-btn{display:inline-flex;align-items:center;gap:5px;padding:7px 13px 7px 10px;border:1px solid var(--border);border-radius:999px;background:var(--panel);color:var(--muted);font-size:13px;font-weight:500;text-decoration:none;transition:color var(--transition),border-color var(--transition),background var(--transition)}.back-btn:hover{color:var(--text);border-color:var(--border-strong);background:var(--surface-2)}.segmented{display:inline-flex;gap:3px;padding:3px;background:var(--surface-3);border-radius:999px}.section-head .segmented{margin-left:auto}.segmented-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.segmented a,.segmented button{padding:6px 14px;border:none;border-radius:999px;background:none;box-shadow:none;color:var(--muted);font:inherit;font-size:13px;font-weight:500;line-height:1.5;text-decoration:none;transition:color var(--transition),background var(--transition),box-shadow var(--transition)}.segmented a:hover,.segmented button:hover:not(:disabled){background:none;color:var(--text);cursor:pointer;transform:none}.segmented button:active{transform:none;box-shadow:none}.segmented a.active,.segmented button.active{background:var(--panel);color:var(--accent);font-weight:600;box-shadow:var(--shadow-sm)}.mail-search{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}.mail-search-input{display:flex;align-items:center;gap:8px;flex:1;min-width:240px;padding:0 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--input-bg);color:var(--muted);transition:border-color var(--transition),box-shadow var(--transition)}.mail-search-input:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.mail-search-input input{flex:1;min-width:0;padding:9px 0;border:none;background:none;box-shadow:none;color:var(--text)}.mail-search-input input:hover,.mail-search-input input:focus{border:none;box-shadow:none;outline:none}.icon-action{display:inline-flex;align-items:center;gap:4px;padding:6px 10px}.icon-action.busy{animation:icon-action-pulse 1s ease-in-out infinite}@keyframes icon-action-pulse{0%,to{opacity:1}50%{opacity:.45}}.collapse-head{display:flex;align-items:center;gap:10px;width:100%;padding:0;border:none;background:none;box-shadow:none;color:var(--text);font:inherit;text-align:left;cursor:pointer}.collapse-head:hover:not(:disabled){background:none;box-shadow:none}.collapse-head:active{transform:none;box-shadow:none}.collapse-head h2{margin:0}.collapse-arrow{flex-shrink:0;color:var(--muted);transition:transform var(--transition)}.collapse-arrow.open{transform:rotate(90deg)}.collapse-head:hover .collapse-arrow{color:var(--text)}.subsection{margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}.subsection h3{font-size:15px;font-weight:600;letter-spacing:-.01em;margin:0 0 12px}table.mail-table{table-layout:fixed}.mail-table .col-date{width:150px}.mail-table .col-from{width:24%}.mail-table .col-status{width:170px}.mail-table .col-action{width:64px}.mail-table td.trunc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mail-table td.mail-detail{overflow-wrap:anywhere}.th-sort{display:inline-flex;align-items:center;gap:6px;padding:0;border:none;background:none;box-shadow:none;color:inherit;font:inherit;cursor:pointer;transition:color var(--transition)}.th-sort:hover:not(:disabled){background:none;color:var(--text);box-shadow:none}.th-sort:active{transform:none;box-shadow:none}.th-sort.active{color:var(--accent)}.sort-arrow{font-size:9px;opacity:.55}.th-sort.active .sort-arrow{opacity:1}.filter-row th{padding:0 12px 10px;font-weight:400;text-transform:none;letter-spacing:normal}.filter-row input,.filter-row select{width:100%;padding:5px 8px;font-size:12px;font-weight:400}th.stripe-col,td.stripe-col{width:4px;min-width:4px;padding:0}tbody tr.unread .stripe-col{background:var(--accent)}mark.hl{padding:0 2px;border-radius:3px;background:var(--amber-soft);color:var(--amber-text);font-weight:600}th.expand-col,td.expand-col{width:32px;padding-left:0;padding-right:6px;text-align:right}.expand-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:6px;background:none;box-shadow:none;color:var(--muted);cursor:pointer;transition:color var(--transition),background var(--transition)}.expand-btn:hover:not(:disabled){background:var(--surface-3);color:var(--text);box-shadow:none}.expand-btn:active{transform:none;box-shadow:none}.expand-btn.hit{background:var(--amber-soft);color:var(--amber-text)}.expand-btn.hit:hover:not(:disabled){background:var(--amber);color:#fff}.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:14px}.pagination-left,.pagination-pages{display:flex;align-items:center;gap:10px}.page-size{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:13px;font-weight:500}.page-size select{padding:6px 10px;font-size:13px}.error-box{background:var(--red-soft);border:1px solid var(--red);color:var(--red-text);padding:11px 14px;border-radius:var(--radius-sm);margin-bottom:14px;white-space:pre-wrap}.info-box{background:var(--accent-soft);border:1px solid var(--accent-border);color:var(--text);padding:11px 14px;border-radius:var(--radius-sm);margin-bottom:14px}.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.5}.badge.green{background:var(--green-soft);color:var(--green-text)}.badge.red{background:var(--red-soft);color:var(--red-text)}.badge.amber{background:var(--amber-soft);color:var(--amber-text)}.badge.gray{background:var(--surface-3);color:var(--muted)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:top}th{color:var(--muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}tbody tr{transition:background var(--transition)}tbody tr:hover{background:var(--surface-2)}tbody tr:last-child td{border-bottom:none}td{font-variant-numeric:tabular-nums}.knowledge-layout{display:grid;grid-template-columns:1fr 480px;gap:16px;height:calc(100vh - 200px);min-height:500px}@media(max-width:1024px){.knowledge-layout{grid-template-columns:1fr;height:auto}.graph-container{height:420px}}.graph-container{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;position:relative;box-shadow:var(--shadow-sm)}.graph-legend{position:absolute;left:10px;bottom:10px;background:var(--legend-bg);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--border);border-radius:10px;padding:6px;font-size:12px;display:flex;gap:4px;flex-wrap:wrap;max-width:85%;box-shadow:var(--shadow-sm)}.legend-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--text);font-size:12px;font-weight:500;cursor:pointer;box-shadow:none;transition:background var(--transition),color var(--transition),border-color var(--transition)}.legend-chip:hover{background:var(--accent-soft);box-shadow:none}.legend-chip:active{transform:none}.legend-chip.active{background:var(--accent-soft);border-color:var(--accent-border);color:var(--accent)}.legend-chip.dim{color:var(--muted);opacity:.65}.legend-chip.reset{color:var(--muted)}.legend-chip .dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex-shrink:0;transition:background var(--transition)}.node-panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px;overflow-y:auto;display:flex;flex-direction:column;box-shadow:var(--shadow-sm)}.node-panel .md-content{flex:1;overflow-y:auto}.md-content{line-height:1.65}.md-content table{margin:8px 0}.md-content code{background:var(--surface-3);padding:1px 6px;border-radius:5px;font-size:.92em}.md-content a{color:var(--accent);text-decoration-color:#4f46e559;text-underline-offset:2px}.editor-textarea{width:100%;min-height:380px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:13px;flex:1;line-height:1.6}.chat-layout{display:flex;flex-direction:column;height:calc(100vh - 210px);min-height:480px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.chat-messages{flex:1;overflow-y:auto;padding:18px;display:flex;flex-direction:column;gap:12px}.chat-bubble{max-width:85%;padding:10px 15px;border-radius:16px;white-space:pre-wrap;box-shadow:var(--shadow-sm)}.chat-bubble.user{align-self:flex-end;background:var(--accent);color:#fff;border-bottom-right-radius:5px}.chat-bubble.assistant{align-self:flex-start;background:var(--surface-3);border-bottom-left-radius:5px}.chat-input{display:flex;gap:8px;padding:12px;border-top:1px solid var(--border);align-items:flex-end;background:var(--surface-2);border-radius:0 0 var(--radius) var(--radius)}.chat-input textarea{flex:1;min-height:44px;max-height:160px}.proposal{border:1px solid var(--border);border-radius:var(--radius-sm);margin:10px 0;overflow:hidden;box-shadow:var(--shadow-sm)}.proposal-header{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:9px 12px;background:var(--surface-2);border-bottom:1px solid var(--border);flex-wrap:wrap}.diff-view{font-family:ui-monospace,Consolas,monospace;font-size:12px;max-height:320px;overflow:auto;padding:8px 0;background:var(--panel)}.diff-line{padding:0 12px;white-space:pre-wrap}.diff-line.add{background:var(--green-soft);color:var(--green-text)}.diff-line.del{background:var(--red-soft);color:var(--red-text)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px}.stat-tile{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-sm);transition:box-shadow var(--transition),transform var(--transition)}.stat-tile:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.stat-tile .value{font-size:28px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.stat-tile .label{color:var(--muted);font-size:12px;font-weight:500;margin-top:2px}.switch{position:relative;width:44px;height:24px;background:var(--border-strong);border-radius:999px;cursor:pointer;border:none;padding:0;flex-shrink:0;box-shadow:inset 0 1px 2px #0f172a1a;transition:background var(--transition)}.switch:hover{background:#94a3b8;box-shadow:inset 0 1px 2px #0f172a1a}.switch.on,.switch.on:hover{background:var(--green)}.switch:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;box-shadow:var(--shadow-sm);transition:transform var(--transition)}.switch.on:after{transform:translate(20px)}.switch:active{transform:none}.login-card{width:380px;max-width:calc(100vw - 32px);background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:32px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow-lg)}.login-card h1{margin-bottom:4px}.login-sub{text-align:center;color:var(--muted);margin:-6px 0 8px;font-size:13px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:100}.modal-card{max-width:480px;margin:16px;box-shadow:var(--shadow-lg)}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}.project-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:20px;min-height:140px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);color:var(--text);text-align:left;font-weight:400;cursor:pointer;transition:box-shadow var(--transition),transform var(--transition),border-color var(--transition)}.project-card:hover{background:var(--panel);border-color:var(--accent-border);box-shadow:var(--shadow-md);transform:translateY(-2px)}.project-card:active{transform:translateY(0)}.project-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;background:var(--accent-soft);color:var(--accent);margin-bottom:6px}.project-name{font-size:15px;font-weight:600;letter-spacing:-.01em}.project-edit{position:absolute;top:12px;right:12px;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--muted);box-shadow:none;opacity:0;transition:opacity var(--transition),background var(--transition),color var(--transition)}.project-card:hover .project-edit,.project-card:focus-within .project-edit{opacity:1}.project-edit:hover{background:var(--accent-soft);color:var(--accent);box-shadow:none}.project-folder{color:var(--muted)}.project-date{font-size:12px;margin-top:auto}.project-card.add{align-items:center;justify-content:center;gap:10px;background:transparent;border:2px dashed var(--border-strong);box-shadow:none;color:var(--muted)}.project-card.add:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);transform:translateY(-2px)}.project-add-icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;background:var(--surface-3);color:inherit;transition:background var(--transition)}.project-card.add:hover .project-add-icon{background:var(--accent-soft)}.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:22px 16px;border:1.5px dashed var(--border-strong);border-radius:var(--radius);background:var(--surface-2);color:var(--muted);text-align:center;cursor:pointer;transition:border-color var(--transition),background var(--transition),color var(--transition)}.dropzone:hover{border-color:var(--accent-border);color:var(--text)}.dropzone.over{border-color:var(--accent);background:var(--accent-soft);color:var(--text)}.dropzone.busy{opacity:.6;pointer-events:none}.dropzone strong{color:var(--text);font-weight:600}.cert-summary{display:flex;flex-wrap:wrap;gap:6px 18px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2)}.cert-summary dl{display:flex;gap:8px;margin:0;align-items:baseline}.cert-summary dt{color:var(--muted);font-size:12px}.cert-summary dd{margin:0;font-family:ui-monospace,Consolas,monospace;font-size:12px;word-break:break-all}.muted{color:var(--muted)}.mono{font-family:ui-monospace,Consolas,monospace;font-size:12px}
