:root{--bg: #12121a;--bg-raised: #17171f;--bg-panel: #1c1c26;--bg-inset: #23232e;--bg-inset-hover: #2a2a36;--border: #2d2d38;--border-soft: #222229;--border-strong: #3f3f4d;--text: #eef0f4;--text-dim: #a3a7b5;--text-faint: #6b6f7d;--accent: #8be3c6;--accent-strong: #5ecfa8;--accent-bg: #17251f;--accent-bg-soft: #1a322a;--accent-border: #386a58;--danger: #ef9a9a;--danger-bg: #2c1c1e;--danger-border: #5c3538;--warn: #f2bd76;--radius-sm: 7px;--radius-md: 10px;--radius-lg: 16px;--shadow-sm: 0 1px 2px rgba(0,0,0,.25);--shadow-md: 0 10px 28px rgba(0,0,0,.32);--ease: cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Inter,-apple-system,Segoe UI,Roboto,sans-serif;background:radial-gradient(ellipse 1200px 800px at 20% -10%,#1c1d27 0%,var(--bg) 55%);color:var(--text);-webkit-font-smoothing:antialiased}::selection{background:#8be3c640;color:var(--text)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}*::-webkit-scrollbar{width:9px;height:9px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:8px;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:#445062;background-clip:padding-box}button,input{font-family:inherit}button:focus-visible,input:focus-visible,.tool-item:focus-visible{outline:2px solid var(--accent-border);outline-offset:1px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}@keyframes pop{0%{transform:scale(1)}40%{transform:scale(.94)}to{transform:scale(1)}}@keyframes pulse-soft{0%,to{opacity:1}50%{opacity:.45}}@keyframes list-item-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}.app-shell{display:flex;flex-direction:column;height:100vh}.app-header{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--border-soft);background:#10151cd9;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);position:relative;z-index:5}.brand{display:flex;align-items:center;gap:9px}.brand-mark{width:26px;height:26px;display:flex;align-items:center;justify-content:center;color:var(--accent)}.brand h1{font-size:16.5px;margin:0;letter-spacing:.01em;font-weight:700;color:var(--text)}.brand h1 span{color:var(--accent)}.view-tabs{display:flex;gap:4px;background:var(--bg-inset);padding:3px;border-radius:10px;border:1px solid var(--border-soft)}.view-tabs button{display:flex;align-items:center;gap:6px;background:transparent;border:none;color:var(--text-dim);padding:6px 13px;border-radius:7px;cursor:pointer;font-size:13px;font-weight:500;transition:background .15s var(--ease),color .15s var(--ease)}.view-tabs button:hover{color:var(--text)}.view-tabs button.active{background:var(--bg-panel);color:var(--accent);box-shadow:var(--shadow-sm),inset 0 0 0 1px var(--border-strong)}.view-tabs button svg{width:15px;height:15px}.app-body{display:flex;flex:1;min-height:0}.sidebar-collapsible{width:300px;min-width:260px;overflow:hidden;flex-shrink:0;transition:width .18s var(--ease),min-width .18s var(--ease)}.sidebar-collapsible.collapsed{width:0;min-width:0}.sidebar-collapse-toggle{flex-shrink:0;width:14px;align-self:stretch;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-right:1px solid var(--border-soft);cursor:pointer;color:var(--text-faint);padding:0;transition:background .15s var(--ease),color .15s var(--ease)}.sidebar-collapse-toggle:hover{background:var(--bg-inset);color:var(--text)}.sidebar-collapse-toggle svg{width:13px;height:13px;transition:transform .18s var(--ease)}.sidebar{width:300px;min-width:260px;height:100%;border-right:1px solid var(--border-soft);display:flex;flex-direction:column;background:var(--bg-raised)}.sidebar-header{display:flex;gap:8px;padding:12px}.search-input-wrap{position:relative;flex:1}.search-input-wrap svg{position:absolute;left:9px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:var(--text-faint);pointer-events:none}.search-input{width:100%;background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);padding:7px 10px 7px 28px;color:var(--text);font-size:13px;transition:border-color .15s var(--ease),background .15s var(--ease)}.search-input:hover{background:var(--bg-inset-hover)}.search-input:focus{outline:none;border-color:var(--accent-border);background:var(--bg-inset-hover)}.search-input::placeholder{color:var(--text-faint)}.btn-new{width:34px;border-radius:var(--radius-sm);border:1px solid var(--accent-border);background:var(--accent-bg);color:var(--accent);font-size:17px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;transition:background .15s var(--ease),transform .1s var(--ease)}.btn-new:hover{background:var(--accent-bg-soft)}.btn-new:active{transform:scale(.94)}.tag-cloud{display:flex;flex-wrap:wrap;gap:6px;padding:2px 12px 12px}.tag-chip{background:var(--bg-inset);border:1px solid var(--border);color:var(--text-dim);border-radius:12px;padding:3px 9px;font-size:11.5px;cursor:pointer;transition:background .15s var(--ease),color .15s var(--ease),border-color .15s var(--ease),transform .1s var(--ease)}.tag-chip:hover{border-color:var(--border-strong);color:var(--text)}.tag-chip:active{transform:scale(.94)}.tag-chip.active{background:var(--accent-bg-soft);color:var(--accent);border-color:var(--accent-border)}.tag-count{opacity:.6;margin-left:3px}.os-cloud{padding-bottom:6px;border-bottom:1px solid var(--border-soft);margin-bottom:4px}.os-chip.active{background:#64b5f624;color:#64b5f6;border-color:#2c5a78}.tool-list{flex:1;overflow-y:auto;padding:4px 8px 12px}.empty-hint{color:var(--text-faint);padding:24px 12px;text-align:center;font-size:13px;line-height:1.5}.search-results-hint{padding:6px 8px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);font-weight:600}.folder-group{margin-bottom:1px}.folder-header{width:100%;display:flex;align-items:center;gap:6px;background:transparent;border:none;color:var(--text-dim);padding:7px 6px;border-radius:var(--radius-sm);cursor:pointer;font-size:12px;font-weight:600;letter-spacing:.01em;text-align:left;transition:background .12s var(--ease),color .12s var(--ease)}.folder-header:hover{background:var(--bg-inset);color:var(--text)}.folder-header:active{animation:pop .2s var(--ease)}.folder-chevron{width:12px;height:12px;flex-shrink:0;transition:transform .18s var(--ease);color:var(--text-faint)}.folder-chevron.open{transform:rotate(90deg)}.folder-icon{width:14px;height:14px;flex-shrink:0;color:var(--text-faint)}.folder-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.folder-count{font-size:10.5px;color:var(--text-faint);background:var(--bg-inset);padding:1px 6px;border-radius:8px;flex-shrink:0}.folder-items{padding-left:6px;margin-bottom:4px;display:grid;grid-template-rows:1fr;opacity:1;transition:grid-template-rows .2s var(--ease),opacity .18s var(--ease)}.folder-items.collapsed{grid-template-rows:0fr;opacity:0;margin-bottom:0}.folder-items>div{overflow:hidden}.tool-item{position:relative;padding:9px 10px 9px 13px;border-radius:var(--radius-sm);cursor:pointer;margin-bottom:2px;transition:background .12s var(--ease);animation:list-item-in .18s var(--ease)}.tool-item:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:3px;background:var(--accent);opacity:0;transition:opacity .15s var(--ease)}.tool-item:hover{background:var(--bg-inset)}.tool-item.active{background:var(--bg-panel)}.tool-item.active:before{opacity:1}.tool-item-title{font-size:13.5px;color:var(--text);margin-bottom:4px;font-weight:500}.tool-item-meta{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.tool-item-category{font-size:10.5px;background:var(--accent-bg-soft);color:var(--accent);padding:1px 6px;border-radius:4px;font-weight:500}.tool-item-tag{font-size:10.5px;color:var(--text-faint)}.tool-item-os{font-size:10.5px;background:#64b5f61f;color:#64b5f6;padding:1px 6px;border-radius:4px;font-weight:500}.main-panel{flex:1;min-width:0;display:flex;flex-direction:column;overflow:auto}.empty-state{margin:auto;color:var(--text-faint);font-size:14px;display:flex;flex-direction:column;align-items:center;gap:10px;animation:fade-in .25s var(--ease)}.empty-state svg{width:40px;height:40px;color:var(--border-strong)}.tool-editor{padding:22px 28px 40px;max-width:900px;width:100%;margin:0 auto;animation:fade-in .2s var(--ease)}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.editor-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:16px}.title-input{flex:1;font-size:21px;font-weight:600;background:transparent;border:none;border-bottom:1px solid transparent;color:var(--text);padding:6px 2px;transition:border-color .15s var(--ease)}.title-input::placeholder{color:var(--text-faint);font-weight:500}.title-input:hover{border-color:var(--border)}.title-input:focus{outline:none;border-color:var(--accent-border)}.editor-actions{display:flex;align-items:center;gap:10px}.viewer-visibility-toggle{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:500;padding:6px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-inset);color:var(--text-dim);transition:all .15s var(--ease)}.viewer-visibility-toggle:hover{background:var(--bg-inset-hover)}.viewer-visibility-toggle svg{width:15px;height:15px;flex:none}.viewer-visibility-toggle.active{background:var(--accent-bg-soft);border-color:var(--accent-border);color:var(--accent)}.unsaved-dot{width:7px;height:7px;border-radius:50%;background:var(--warn);display:inline-block;box-shadow:0 0 0 3px #f0b86226;animation:pulse-soft 1.6s var(--ease) infinite}.saved-flag{font-size:12px;color:var(--accent);animation:fade-in-out 1.6s var(--ease)}@keyframes fade-in-out{0%{opacity:0}15%{opacity:1}75%{opacity:1}to{opacity:0}}.btn-primary,.btn-danger,.btn-ghost{padding:7px 15px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;font-weight:500;transition:background .15s var(--ease),border-color .15s var(--ease),transform .1s var(--ease);border:1px solid transparent}.btn-primary:active,.btn-danger:active,.btn-ghost:active{transform:scale(.97)}.btn-primary{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent)}.btn-primary:hover{background:var(--accent-bg-soft)}.btn-danger{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger)}.btn-danger:hover{background:#3a2020}.error-banner{background:var(--danger-bg);border:1px solid var(--danger-border);color:#f0a0a0;padding:9px 13px;border-radius:var(--radius-sm);margin-bottom:14px;font-size:13px}.error-banner.top{margin:12px 18px 0}.error-banner.success{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent)}.editor-fields{display:flex;gap:14px;margin-bottom:14px;flex-wrap:wrap}.editor-fields label{display:flex;flex-direction:column;gap:5px;font-size:11px;color:var(--text-faint);flex:1;min-width:160px;text-transform:uppercase;letter-spacing:.04em;font-weight:600}.editor-fields input{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;color:var(--text);font-size:13px;text-transform:none;letter-spacing:normal;font-weight:400;transition:border-color .15s var(--ease),background .15s var(--ease)}.editor-fields input:hover{background:var(--bg-inset-hover)}.editor-fields input:focus{outline:none;border-color:var(--accent-border);background:var(--bg-inset-hover)}.tags-field{flex:1.5;min-width:220px}.readonly-title{flex:1;font-size:21px;font-weight:600;color:var(--text);padding:6px 2px}.readonly-fields{align-items:center}.readonly-field{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text);background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);padding:7px 10px}.readonly-field .readonly-label{font-size:10.5px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.progress-inputs{display:flex;align-items:center;gap:6px}.progress-inputs input{width:64px;flex:none}.progress-inputs span{color:var(--text-faint);text-transform:none;font-weight:400}.editor-hint-row{display:flex;align-items:flex-start;gap:12px;margin-bottom:10px}.wikilink-hint{flex:1;font-size:11.5px;color:var(--text-faint);line-height:1.6}.wikilink-hint code{background:var(--bg-inset);padding:1px 5px;border-radius:4px;color:var(--accent);font-size:11px}.btn-ghost{background:var(--bg-inset);border-color:var(--border);color:var(--text-dim);display:flex;align-items:center;gap:6px;white-space:nowrap;flex-shrink:0}.btn-ghost:hover:not(:disabled){background:var(--bg-inset-hover);color:var(--text);border-color:var(--border-strong)}.btn-ghost:disabled{opacity:.6;cursor:default}.btn-attach svg{width:14px;height:14px}.md-editor-wrap{margin-bottom:10px;position:relative}.md-editor-wrap .w-md-editor{border:1px solid var(--border)!important;border-radius:var(--radius-md)!important;overflow:hidden;box-shadow:var(--shadow-sm);transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}.md-editor-wrap .w-md-editor-toolbar{border-color:var(--border)!important}.md-editor-wrap.drag-active .w-md-editor{border-color:var(--accent-border)!important;box-shadow:0 0 0 3px #7ee8c826}.drop-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#0b0e148c;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);border:2px dashed var(--accent-border);border-radius:var(--radius-md);color:var(--accent);font-size:14px;font-weight:500;pointer-events:none}.editor-footer{font-size:11.5px;color:var(--text-faint)}.wikilink-menu{position:fixed;z-index:50;min-width:220px;max-width:320px;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:4px;max-height:220px;overflow-y:auto;animation:menu-in .12s var(--ease)}@keyframes menu-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}.wikilink-menu-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 9px;border-radius:6px;cursor:pointer;font-size:13px;color:var(--text);transition:background .12s var(--ease),color .12s var(--ease)}.wikilink-menu-item.active,.wikilink-menu-item:hover{background:var(--accent-bg-soft);color:var(--accent)}.wikilink-menu-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wikilink-menu-category{font-size:10.5px;color:var(--text-faint);flex-shrink:0}.wikilink-menu-item.active .wikilink-menu-category{color:var(--accent);opacity:.7}.wikilink-menu-empty{padding:9px;font-size:12.5px;color:var(--text-faint);font-style:italic}.graph-wrap{position:relative;flex:1;overflow:hidden}.graph-wrap canvas{position:absolute;top:0;right:0;bottom:0;left:0;cursor:grab}.graph-wrap canvas:active{cursor:grabbing}.graph-wrap canvas.has-hover{cursor:pointer}.graph-empty{margin:auto;color:var(--text-faint);font-size:14px;animation:fade-in .25s var(--ease)}.view-loading{margin:auto;color:var(--text-faint);font-size:13px;animation:fade-in .15s var(--ease) .1s backwards}.graph-legend{position:absolute;bottom:16px;left:16px;display:flex;gap:16px;flex-wrap:wrap;max-width:calc(100% - 32px);background:#10151ce6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:9px 13px;border-radius:var(--radius-md);font-size:11.5px;color:var(--text-dim);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.graph-legend span{display:flex;align-items:center;gap:5px}.legend-dot{width:9px;height:9px;border-radius:50%;display:inline-block}.legend-dot.tool{background:#4dd0e1}.legend-dot.course{background:#64b5f6}.legend-dot.book{background:#f0b862}.legend-dot.tag{background:var(--text-faint);border-radius:2px}.legend-line{width:16px;height:0;border-top:2px solid;display:inline-block}.legend-line.link{border-color:#fff9}.legend-line.tag{border-color:#9aa5b166;border-top-style:dashed}.legend-hint{color:var(--text-faint)}.header-actions{display:flex;align-items:center;gap:6px;margin-left:12px}.icon-btn{display:flex;align-items:center;gap:6px;background:transparent;border:1px solid transparent;color:var(--text-dim);padding:6px 8px;border-radius:var(--radius-sm);cursor:pointer;text-decoration:none;transition:background .15s var(--ease),color .15s var(--ease),border-color .15s var(--ease)}.icon-btn:hover{background:var(--bg-inset);color:var(--text);border-color:var(--border)}.icon-btn svg{width:16px;height:16px;flex-shrink:0}.icon-btn kbd{font-family:inherit;font-size:10px;color:var(--text-faint);background:var(--bg-inset);border:1px solid var(--border);border-radius:4px;padding:1px 5px}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0;margin-right:2px}.tool-item-title{display:flex;align-items:center;gap:5px}.stale-badge{margin-left:auto;flex-shrink:0;font-size:10.5px;font-weight:600;letter-spacing:.01em;color:var(--warn);background:#f2bd7624;border:1px solid rgba(242,189,118,.3);padding:1px 6px;border-radius:999px}.status-toggle{display:flex;gap:6px;margin-bottom:14px}.status-toggle-btn{display:flex;align-items:center;gap:6px;background:var(--bg-inset);border:1px solid var(--border);color:var(--text-dim);padding:5px 11px;border-radius:999px;cursor:pointer;font-size:12px;transition:background .15s var(--ease),border-color .15s var(--ease),color .15s var(--ease),transform .1s var(--ease)}.status-toggle-btn:hover{border-color:var(--border-strong);color:var(--text)}.status-toggle-btn:active{transform:scale(.95)}.status-cloud{align-items:center}.status-chip{display:flex;align-items:center}.backlinks-panel{margin-top:18px;padding-top:14px;border-top:1px solid var(--border-soft)}.backlinks-title{font-size:11px;text-transform:uppercase;letter-spacing:.04em;font-weight:600;color:var(--text-faint);margin-bottom:8px}.backlinks-list{display:flex;flex-wrap:wrap;gap:6px}.backlink-chip{background:var(--bg-inset);border:1px solid var(--border);color:var(--text-dim);padding:5px 11px;border-radius:var(--radius-sm);cursor:pointer;font-size:12.5px;transition:background .15s var(--ease),color .15s var(--ease),border-color .15s var(--ease),transform .1s var(--ease)}.backlink-chip:active{transform:scale(.95)}.backlink-chip:hover{background:var(--accent-bg-soft);color:var(--accent);border-color:var(--accent-border)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#06080c99;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:flex-start;justify-content:center;padding-top:12vh;z-index:100;animation:fade-in .12s var(--ease)}.revision-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.revision-modal-header h2{font-size:15px;margin:0;color:var(--text)}.modal-close{background:transparent;border:none;color:var(--text-faint);font-size:20px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:var(--radius-sm)}.modal-close:hover{background:var(--bg-inset);color:var(--text)}.quick-switcher{width:560px;max-width:calc(100vw - 32px);background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;animation:menu-in .12s var(--ease)}.quick-switcher-input-wrap{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border-soft)}.quick-switcher-input-wrap svg{width:17px;height:17px;color:var(--text-faint);flex-shrink:0}.quick-switcher-input-wrap input{flex:1;background:transparent;border:none;color:var(--text);font-size:15px}.quick-switcher-input-wrap input:focus{outline:none}.quick-switcher-input-wrap kbd{font-family:inherit;font-size:11px;color:var(--text-faint);background:var(--bg-inset);border:1px solid var(--border);border-radius:4px;padding:2px 6px}.quick-switcher-list{max-height:360px;overflow-y:auto;padding:6px}.quick-switcher-empty{padding:16px;text-align:center;color:var(--text-faint);font-size:13px}.quick-switcher-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border-radius:var(--radius-sm);cursor:pointer;font-size:13.5px;color:var(--text);transition:background .1s var(--ease),color .1s var(--ease)}.quick-switcher-item.active{background:var(--accent-bg-soft);color:var(--accent)}.quick-switcher-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.quick-switcher-category{font-size:11px;color:var(--text-faint);flex-shrink:0}.quick-switcher-item.active .quick-switcher-category{color:var(--accent);opacity:.7}.revision-modal{width:480px;max-width:calc(100vw - 32px);max-height:70vh;overflow-y:auto;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:16px;animation:menu-in .12s var(--ease)}.revision-list{display:flex;flex-direction:column;gap:6px}.revision-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border-radius:var(--radius-sm);background:var(--bg-inset);border:1px solid var(--border);transition:border-color .12s var(--ease)}.revision-item:hover{border-color:var(--border-strong)}.revision-item-meta{display:flex;flex-direction:column;gap:2px}.revision-item-date{font-size:13px;color:var(--text)}.revision-item-len{font-size:11px;color:var(--text-faint)}.disclaimer-modal{width:520px;max-width:calc(100vw - 32px);max-height:80vh;overflow-y:auto;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:22px 24px;animation:menu-in .12s var(--ease)}.disclaimer-modal h2{font-size:16px;margin:0 0 12px;color:var(--text)}.disclaimer-modal p{font-size:13.5px;line-height:1.55;color:var(--text-dim);margin:0 0 12px}.disclaimer-accept{margin-top:6px;background:var(--accent);color:#fff;border:none;border-radius:var(--radius-sm);padding:9px 18px;font-size:13.5px;font-weight:500;cursor:pointer;transition:opacity .12s var(--ease)}.disclaimer-accept:hover{opacity:.9}.tag-manager-modal{width:480px;max-width:calc(100vw - 32px);max-height:70vh;overflow-y:auto;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:16px;animation:menu-in .12s var(--ease)}.merge-hint{font-size:12.5px;color:var(--accent);background:var(--accent-bg-soft);border:1px solid var(--accent-border);padding:8px 11px;border-radius:var(--radius-sm);margin-bottom:12px;display:flex;align-items:center;gap:8px}.merge-hint.muted{color:var(--text-faint);background:var(--bg-inset);border-color:var(--border)}.merge-hint button{font-size:12px;padding:2px 9px}.viewer-access-panel{border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:14px;background:var(--bg-inset)}.viewer-access-title{font-size:13px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:6px}.viewer-access-status{font-size:11.5px;font-weight:500;color:var(--text-faint)}.viewer-access-hint{font-size:11.5px;color:var(--text-faint);margin:6px 0 8px;line-height:1.4}.viewer-access-form{display:flex;gap:8px}.viewer-access-form input{flex:1;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-sm);padding:7px 9px;color:var(--text);font-size:12.5px}.viewer-access-form button{flex:none}.tag-manager-list{display:flex;flex-direction:column;gap:4px}.tag-manager-row{display:flex;align-items:center;gap:10px;padding:7px 9px;border-radius:var(--radius-sm);transition:background .12s var(--ease)}.tag-manager-row:hover{background:var(--bg-inset)}.tag-manager-name{flex:1;font-size:13.5px;color:var(--text)}.tag-manager-edit-input{flex:1;background:var(--bg-inset);border:1px solid var(--accent-border);border-radius:var(--radius-sm);padding:4px 8px;color:var(--text);font-size:13.5px}.tag-manager-row-locked{opacity:.7}.tag-manager-locked-hint{font-size:11.5px;color:var(--text-faint);white-space:nowrap}.tag-manager-count{font-size:11px;color:var(--text-faint)}.tag-manager-actions{display:flex;gap:6px}.tag-manager-actions button{font-size:11.5px;padding:4px 9px}.dashboard{padding:24px 32px 40px;max-width:900px;width:100%;margin:0 auto;animation:fade-in .2s var(--ease)}.dash-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:28px}.dash-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px;text-align:center;animation:fade-in .3s var(--ease) backwards}.dash-card:nth-child(1){animation-delay:.02s}.dash-card:nth-child(2){animation-delay:.06s}.dash-card:nth-child(3){animation-delay:.1s}.dash-card:nth-child(4){animation-delay:.14s}.dash-card-value{font-size:26px;font-weight:700;color:var(--accent)}.dash-card-pct{font-size:13px;font-weight:600;color:var(--text-faint);margin-left:3px}.dash-card-label{font-size:11.5px;color:var(--text-faint);margin-top:4px}.dash-card-sub{font-size:10.5px;color:var(--text-faint);margin-top:2px;opacity:.8}.dash-health{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:12px;color:var(--text-faint);margin:-14px 0 28px;padding:0 2px}.dash-health-label{color:var(--text-faint)}.dash-health-item{color:var(--text-dim)}.dash-health-item b{color:var(--warn);font-weight:600}.dash-section h3{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);margin:0 0 12px;font-weight:600}.dash-widget-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:28px}.dash-widget{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px;animation:fade-in .3s var(--ease) backwards;transition:border-color .15s var(--ease),opacity .15s var(--ease),transform .15s var(--ease);display:flex;flex-direction:column}.dash-widget.dragging{opacity:.35}.dash-widget.wide{grid-column:span 2}.dash-widget>*:last-child{margin-top:auto;margin-bottom:auto}.dash-widget-header{display:flex;align-items:center;gap:6px;margin-bottom:12px;cursor:grab;flex-shrink:0}.dash-widget-header:active{cursor:grabbing}.dash-widget-header h3{margin:0;flex:1;min-width:0}.dash-widget-handle{width:15px;height:15px;color:var(--text-faint);flex-shrink:0;transition:color .15s var(--ease)}.dash-widget-header:hover .dash-widget-handle{color:var(--text-dim)}.dash-widget-resize{background:transparent;border:none;color:var(--text-faint);cursor:pointer;padding:3px;border-radius:5px;flex-shrink:0;display:flex;transition:color .15s var(--ease),background .15s var(--ease)}.dash-widget-resize svg{width:14px;height:14px}.dash-widget-resize:hover{color:var(--text);background:var(--bg-inset)}.dash-hidden-strip{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:-18px 0 28px;font-size:12px}.dash-hidden-label{color:var(--text-faint)}.dash-rings{display:flex;flex-wrap:wrap;gap:18px}.dash-ring-item{display:flex;flex-direction:column;align-items:center;gap:6px}.dash-ring-label{font-size:11px;color:var(--text-faint);text-align:center}.dash-activity-chart{display:flex;align-items:flex-end;gap:6px;height:100px}.dash-activity-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}.dash-activity-count{font-size:10px;color:var(--text-faint);height:12px}.dash-activity-track{width:100%;max-width:22px;height:60px;display:flex;align-items:flex-end;background:var(--bg-inset);border-radius:4px;overflow:hidden}.dash-activity-bar{width:100%;background:var(--accent);border-radius:4px 4px 0 0;transition:height .3s var(--ease)}.dash-activity-label{font-size:9.5px;color:var(--text-faint);white-space:nowrap}.donut-chart{display:flex;align-items:center;gap:16px}.donut-chart canvas{flex-shrink:0}.donut-legend{display:flex;flex-direction:column;gap:6px;flex:1;min-width:0}.donut-legend-row{display:flex;align-items:center;gap:6px;font-size:12.5px;animation:list-item-in .2s var(--ease) backwards}.donut-legend-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-dim)}.donut-legend-count{font-size:11.5px;color:var(--text-faint);flex-shrink:0}.dash-bars{display:flex;flex-direction:column;gap:9px}.dash-bar-row{display:grid;grid-template-columns:130px 1fr 56px;align-items:center;gap:10px;animation:list-item-in .25s var(--ease) backwards}.dash-bar-label{font-size:12.5px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:6px}.dash-bar-track{height:8px;background:var(--bg-inset);border-radius:5px;overflow:hidden}.dash-bar-fill{height:100%;border-radius:5px;transition:width .3s var(--ease)}.dash-bar-fill.accent{background:var(--accent)}.dash-bar-count{font-size:12px;color:var(--text-faint);text-align:right}.dash-stale-list{display:flex;flex-direction:column;gap:4px}.dash-stale-item{display:flex;align-items:center;justify-content:space-between;gap:10px;background:transparent;border:none;padding:8px 10px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;color:var(--text);text-align:left;transition:background .12s var(--ease),transform .12s var(--ease)}.dash-stale-item:hover{background:var(--bg-inset);transform:translate(2px)}.dash-stale-time{font-size:11.5px;color:var(--text-faint);flex-shrink:0}.dash-section-warn{background:var(--accent-bg);border:1px solid var(--warn);border-radius:var(--radius-lg);padding:16px 18px;margin-bottom:28px;animation:fade-in .25s var(--ease)}.dash-section-warn h3{color:var(--warn)}.dash-reading-item{gap:12px;padding:8px}.dash-reading-item:hover{background:var(--bg-inset-hover)}.dash-reading-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.dash-reading-meta{font-size:11.5px;color:var(--text-faint)}.progress-ring{flex-shrink:0}.progress-ring-label{font-size:10px;font-weight:700;fill:var(--text-dim)}@media(max-width:720px){.dash-widget-grid{grid-template-columns:1fr}.dash-cards{grid-template-columns:repeat(2,1fr)}}.auth-screen{height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;position:relative;overflow:hidden}.auth-bolt-canvas{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}.auth-card{position:relative;z-index:1;width:340px;max-width:100%;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:26px 24px;display:flex;flex-direction:column;gap:12px;animation:menu-in .12s var(--ease)}.auth-card .brand{justify-content:center;margin-bottom:4px}.auth-card h2{margin:0;font-size:16px;color:var(--text);text-align:center}.auth-hint{margin:-4px 0 6px;font-size:12.5px;color:var(--text-dim);text-align:center;line-height:1.4}.auth-card input{background:var(--bg-inset);border:1px solid var(--border);color:var(--text);padding:9px 11px;border-radius:var(--radius-sm);font-size:13.5px}.auth-card input:focus{border-color:var(--accent-border)}.auth-card button{margin-top:4px;background:var(--accent-bg);border:1px solid var(--accent-border);color:var(--accent);padding:9px 11px;border-radius:var(--radius-sm);font-size:13.5px;font-weight:600;cursor:pointer;transition:background .15s var(--ease),transform .1s var(--ease)}.auth-card button:hover:not(:disabled){background:var(--accent-bg-soft)}.auth-card button:active:not(:disabled){transform:scale(.98)}.auth-card button:disabled{opacity:.5;cursor:default}.auth-error{background:var(--danger-bg);border:1px solid var(--danger-border);color:var(--danger);padding:7px 10px;border-radius:var(--radius-sm);font-size:12.5px}.auth-viewer-toggle{margin-top:2px!important;background:transparent!important;border:1px dashed var(--border)!important;color:var(--text-dim)!important;font-weight:500!important;font-size:12px!important}.auth-viewer-toggle:hover:not(:disabled){background:var(--bg-inset)!important;color:var(--text)!important}
