.server-status{display:flex;align-items:center;gap:8px}.server-status .item{display:flex;align-items:center;gap:6px;padding:4px 8px;border-radius:16px;background:var(--status-bg);border:1px solid var(--status-border);color:var(--status-text);cursor:pointer;transition:background .2s,border-color .2s}.server-status .item:hover{background:var(--status-hover-bg);border-color:var(--status-hover-border)}.server-status .dot{width:10px;height:10px;border-radius:50%;box-shadow:0 0 0 1px #00000026 inset}.server-status .text{font-size:12px;line-height:1}.server-status .item.ok .dot{background:#22c55e}.server-status .item.fail .dot{background:#ef4444}.server-status .item.checking .dot{background:#f59e0b}.theme-toggle{display:inline-flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:6px 10px;cursor:pointer;font-size:12px;line-height:1;transition:border-color .2s,background .2s}.theme-toggle:hover{border-color:var(--primary)}.theme-toggle-icon{font-size:14px;line-height:1}.theme-toggle-label{font-weight:500}.login-page{min-height:100vh;display:grid;place-items:center;background:var(--bg)}.login-card{width:100%;max-width:420px;background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:0 8px 24px var(--shadow);padding:28px;color:var(--text)}.login-form{display:flex;flex-direction:column;gap:12px;margin-top:8px}.login-form label{display:flex;flex-direction:column;color:var(--muted);font-size:13px;gap:8px}.login-form input{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:10px 12px;outline:none}.login-form input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #4f7cff33}button.primary{background:linear-gradient(180deg,var(--primary),var(--primary-2));color:#fff;border:none;border-radius:10px;padding:10px 12px;font-weight:600;cursor:pointer}button.primary:hover{filter:brightness(1.05)}.error{color:var(--error-color);background:var(--error-bg);border:1px solid var(--error-border);border-radius:10px;padding:8px 10px;font-size:12px}.brand{text-align:center;margin-bottom:12px}.brand h1{margin:0;font-size:28px;letter-spacing:.5px}.brand .subtitle{margin:6px 0 18px;color:var(--muted);font-size:14px}.searchbar{display:flex;gap:8px;align-items:center;justify-content:center}.searchbar input{flex:1;max-width:720px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:999px;padding:14px 18px;font-size:16px}.searchbar input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #4f7cff33;outline:none}.searchbar .primary{background:linear-gradient(180deg,var(--primary),var(--primary-2));color:#fff;border:none;border-radius:999px;padding:12px 18px;font-weight:600;cursor:pointer}.searchbar .icon-btn{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--muted);border:1px solid var(--border);border-radius:999px;cursor:pointer}.searchbar .icon-btn:hover{border-color:var(--primary);color:var(--text-soft)}.bookmark-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:16px;color:var(--text);display:flex;flex-direction:column;gap:10px}.card-header{display:flex;align-items:flex-start;justify-content:flex-start;gap:12px}.header-left{display:flex;align-items:flex-start;gap:12px;min-width:0}.title-link{color:var(--text);font-weight:600;text-decoration:none;word-break:break-word;overflow-wrap:anywhere}.title-link:hover{text-decoration:underline}.host{color:var(--muted);font-size:12px;display:none}.favicon{width:18px;height:18px;border-radius:4px;box-shadow:0 2px 6px var(--shadow);background:var(--surface);align-self:flex-start;display:block}.flags-row{display:flex;align-items:center;gap:6px;margin-top:-4px}.badge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:3px 8px;font-size:11px;border:1px solid var(--border);background:var(--surface);color:var(--text-soft)}.badge-navigation{border-color:var(--badge-nav-border);background:var(--badge-nav-bg);color:var(--badge-nav-color)}.badge-toread{border-color:var(--badge-toread-border);background:var(--badge-toread-bg);color:var(--badge-toread-color)}.card-tags{display:flex;flex-wrap:wrap;gap:6px}.tag{display:inline-block;background:var(--tag-bg);border:1px solid var(--border);color:var(--text-soft);border-radius:999px;padding:4px 10px;font-size:12px;word-break:keep-all;white-space:normal}.card-time{color:var(--muted);font-size:12px}.actions{display:flex;gap:8px}.actions-bottom{display:flex;justify-content:flex-end;margin-top:8px;border-top:1px dashed var(--border);padding-top:8px}.actions-left{margin-right:auto;display:flex;align-items:center}.actions-right{display:flex;gap:8px}.desc{color:var(--text-soft);font-size:12px;line-height:1.6;margin-top:6px}.desc p{margin:0 0 6px;word-break:break-word;overflow-wrap:anywhere;white-space:pre-wrap}.desc .notes{color:var(--notes-color);white-space:pre-wrap}button.ghost{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:10px;padding:6px 10px;cursor:pointer}button.ghost:hover{border-color:var(--primary)}button.danger{background:transparent;border:1px solid var(--danger-border);color:var(--danger-color);border-radius:10px;padding:6px 10px;cursor:pointer}button.danger:hover{background:var(--danger-hover-bg);color:var(--danger-hover-color)}.tab-nav{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:12px}.tab-nav-link{display:inline-flex;align-items:center;padding:8px 14px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-soft);text-decoration:none;font-size:13px;font-weight:500;transition:border-color .2s,color .2s,background .2s}.tab-nav-link:hover{border-color:var(--primary);color:var(--text)}.tab-nav-link.active{border-color:var(--primary);color:var(--text);background:var(--chip-bg);box-shadow:0 0 0 3px #4f7cff26}.search-page{min-height:100vh;background:var(--bg)}.search-page.dragging{outline:2px dashed var(--primary);outline-offset:-6px}header .brand{display:flex;align-items:center;gap:10px;position:static;margin-left:0}header .ghost{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:10px;padding:6px 10px;cursor:pointer;font-size:12px}.hero .actions{margin-top:16px}.hero .quick-filters{display:flex;gap:10px;justify-content:center;margin-top:12px}.hero .quick-filters .chip{background:var(--chip-bg);color:var(--text-soft);border:1px solid var(--border);border-radius:999px;padding:8px 12px;font-size:12px;cursor:pointer}.hero .quick-filters .chip.active{border-color:var(--primary);box-shadow:0 0 0 3px #4f7cff33}.results{max-width:960px;margin:10px auto;padding:0 20px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.recent-header{text-align:center}.modal{position:fixed;inset:0;background:var(--overlay);display:flex;align-items:center;justify-content:center;padding:20px}.navigation-page{min-height:100vh;background:var(--bg)}.navigation-page.dragging{outline:2px dashed var(--primary);outline-offset:-6px}header{display:flex;align-items:center;padding:14px 20px;color:var(--text);max-width:960px;margin:0 auto}header .brand{display:flex;align-items:center;gap:10px}header .brand .brand-logo{width:var(--brand-logo-size);height:auto;border-radius:8px;opacity:.92;filter:grayscale(10%) brightness(.95) contrast(1.05);box-shadow:0 6px 16px var(--shadow)}header .spacer{flex:1}header .user{display:flex;align-items:center;gap:10px;color:var(--muted)}header .ghost{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:10px;padding:6px 10px;cursor:pointer}.hero{max-width:960px;margin:40px auto 20px;padding:0 20px;text-align:center;color:var(--text)}.hero h1{font-size:28px;margin-bottom:8px;text-align:center}.hero .subtitle{color:var(--muted);font-size:14px;margin-bottom:18px;text-align:center}.sub-pages{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:12px 0}.sub-page-tab{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:20px;padding:5px 14px;font-size:13px;cursor:pointer;transition:all .15s}.sub-page-tab:hover{border-color:var(--primary);color:var(--primary)}.sub-page-tab.active{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}.groups{max-width:960px;margin:10px auto;padding:0 20px;display:flex;flex-direction:column;gap:24px}.group{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:14px}.group-header{display:flex;align-items:center;gap:10px;margin-bottom:8px;color:var(--text);user-select:none;-webkit-user-select:none;touch-action:none}.group-title{font-size:18px;margin:0}.group-count{color:var(--muted);font-size:12px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.list{display:flex;flex-direction:column;gap:8px}.empty{color:var(--text-soft);background:var(--empty-bg);border:1px solid var(--border);border-radius:16px;padding:14px;text-align:center}@media(max-width:640px){.group-title{font-size:16px}}.nav-item{background:var(--nav-item-bg);border:1px solid var(--border);border-radius:12px;padding:10px}.nav-link{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text)}.nav-link:hover .nav-title{text-decoration:underline;color:var(--primary)}.nav-favicon{width:20px;height:20px;border-radius:4px;box-shadow:0 2px 6px var(--shadow);background:var(--surface)}.nav-title{font-size:14px;font-weight:600;word-break:break-word;overflow-wrap:anywhere;transition:color .15s ease}.inline-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));column-gap:3ch;row-gap:8px;align-items:center}.inline-list .nav-item{background:transparent;border:none;border-radius:0;padding:0;display:flex;align-items:center;user-select:none;-webkit-user-select:none}.inline-list .nav-link{display:flex;align-items:center;gap:8px;white-space:nowrap;width:100%;overflow:hidden}.inline-list .nav-favicon{width:16px;height:16px}.inline-list .nav-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;display:inline-block}.inline-list .nav-host{display:none;color:var(--muted);font-size:12px;margin-left:6px;flex-shrink:0}.modal{position:fixed;inset:0;background:var(--overlay);display:flex;align-items:center;justify-content:center;padding:20px;z-index:100}.dialog{width:100%;max-width:720px;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:16px;color:var(--text)}.form{display:flex;flex-direction:column;gap:12px}.form .row{display:flex;gap:12px}.form .row>label{flex:1;display:flex;flex-direction:column;color:var(--muted);font-size:13px;gap:8px}.form .row:before,.form .row:after{content:none!important}.form input,.form textarea{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:10px 12px;outline:none}.form input:focus,.form textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #4f7cff33}.form .flags{gap:24px}.form .row.flags{justify-content:space-between}.form .row.flags>label{flex:0 0 auto;flex-direction:row;align-items:center;gap:8px;font-size:13px;white-space:nowrap}.form .actions{justify-content:flex-end}.form .ghost{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:10px;padding:6px 10px;cursor:pointer;font-size:12px}.form .primary{background:linear-gradient(180deg,var(--primary),var(--primary-2));color:#fff;border:none;border-radius:10px;padding:6px 10px;font-weight:600;cursor:pointer;font-size:12px}.title-with-favicon{display:flex;align-items:center;gap:8px}.title-favicon{width:18px;height:18px;border-radius:4px;box-shadow:0 2px 6px var(--shadow);background:var(--surface)}.hero .actions .primary{background:linear-gradient(180deg,var(--primary),var(--primary-2));color:#fff;border:none;border-radius:10px;padding:10px 14px;font-weight:600;cursor:pointer}.admin-page{min-height:100vh;background:var(--bg)}.admin-content{max-width:960px;margin:0 auto;padding:0 20px 40px;display:flex;flex-direction:column;gap:20px}.admin-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:18px;color:var(--text)}.admin-card h2{margin:0 0 6px;font-size:18px}.section-header-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:6px}.section-header-row h2{margin:0}.admin-card .hint{margin:0 0 14px;color:var(--muted);font-size:13px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.stat-box{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px}.stat-box .label{color:var(--muted);font-size:12px}.stat-box .value{margin-top:4px;font-size:22px;font-weight:700}.source-list{margin-top:14px;display:flex;flex-direction:column;gap:8px}.source-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.source-row .name{font-size:13px;word-break:break-all}.source-row .count{color:var(--muted);font-size:12px;white-space:nowrap}.import-actions,.manage-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.file-picker{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}.import-result{margin-top:12px;padding:10px 12px;border-radius:10px;background:var(--surface);border:1px solid var(--border);font-size:13px;color:var(--text-soft)}.import-result.success{border-color:#10b981}.import-result.error{border-color:var(--error-border);color:var(--error-color);background:var(--error-bg)}.manage-toolbar select,.manage-toolbar input[type=search]{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:8px 12px;font-size:13px}.manage-table-wrap{margin-top:12px;overflow:auto;border:1px solid var(--border);border-radius:12px}.manage-table{width:100%;border-collapse:collapse;font-size:13px}.manage-table th,.manage-table td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.manage-table th{background:var(--surface);color:var(--muted);font-weight:600;position:sticky;top:0}.manage-table tr:last-child td{border-bottom:none}.manage-table .title-cell{max-width:220px;word-break:break-word}.manage-table .url-cell{max-width:280px;word-break:break-all;color:var(--muted)}.manage-table .source-cell{max-width:160px;word-break:break-all;color:var(--muted);font-size:12px}.manage-empty{padding:20px;text-align:center;color:var(--muted)}.readonly-note{padding:14px;border-radius:12px;background:var(--surface);border:1px solid var(--border);color:var(--muted);text-align:center}.admin-card .primary{background:linear-gradient(180deg,var(--primary),var(--primary-2));color:#fff;border:none;border-radius:10px;padding:8px 12px;font-weight:600;cursor:pointer;font-size:13px}.admin-card .ghost{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:10px;padding:6px 10px;cursor:pointer;font-size:12px}.admin-card .danger{background:transparent;border:1px solid var(--danger-border);color:var(--danger-color);border-radius:10px;padding:6px 10px;cursor:pointer;font-size:12px}.admin-card .danger:hover{background:var(--danger-hover-bg);color:var(--danger-hover-color)}.source-row .ghost{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:10px;padding:4px 8px;cursor:pointer;font-size:12px;flex-shrink:0}:root,[data-theme=dark]{--bg: #0f1220;--card: #14172a;--muted: #8b8fa7;--text: #e8eaf6;--text-soft: #cbd1ee;--primary: #4f7cff;--primary-2: #3e63ff;--border: #22263d;--surface: #0d1020;--surface-2: #121527;--empty-bg: #13172b;--nav-item-bg: #121527;--tag-bg: #0d1020;--chip-bg: #0d1020;--shadow: rgba(0, 0, 0, .35);--overlay: rgba(0, 0, 0, .45);--loading-overlay: rgba(15, 18, 32, .6);--badge-nav-border: #3a3f5f;--badge-nav-bg: #181a2b;--badge-nav-color: #ffd9a0;--badge-toread-border: #2e5d4b;--badge-toread-bg: #15231d;--badge-toread-color: #9cf3c7;--error-color: #ff7b7b;--error-bg: #3a1f20;--error-border: #502128;--danger-border: #5a2631;--danger-color: #ff9aa2;--danger-hover-bg: #3a1f20;--danger-hover-color: #ffc0c6;--notes-color: #9bb6ff;--status-bg: rgba(255, 255, 255, .06);--status-border: rgba(255, 255, 255, .12);--status-hover-bg: rgba(255, 255, 255, .1);--status-hover-border: rgba(255, 255, 255, .2);--status-text: #cbd5e1;--brand-logo-size: 48px;--green: #30b079;--green-2: #1e7f55;--red: #ff7b7b;--red-2: #3a1f20;--link: #8ba4ff;--link-hover: #a8b8ff;--btn-bg: #1a1a1a}[data-theme=light]{--bg: #f4f6fb;--card: #ffffff;--muted: #64748b;--text: #1e293b;--text-soft: #475569;--primary: #3b6ff5;--primary-2: #2952e8;--border: #dbe3ef;--surface: #f8fafc;--surface-2: #f1f5f9;--empty-bg: #f8fafc;--nav-item-bg: #f8fafc;--tag-bg: #f1f5f9;--chip-bg: #ffffff;--shadow: rgba(15, 23, 42, .08);--overlay: rgba(15, 23, 42, .35);--loading-overlay: rgba(244, 246, 251, .82);--badge-nav-border: #f0d9a8;--badge-nav-bg: #fff8eb;--badge-nav-color: #b45309;--badge-toread-border: #a7e3c8;--badge-toread-bg: #ecfdf5;--badge-toread-color: #047857;--error-color: #dc2626;--error-bg: #fef2f2;--error-border: #fecaca;--danger-border: #fca5a5;--danger-color: #dc2626;--danger-hover-bg: #fef2f2;--danger-hover-color: #b91c1c;--notes-color: #2952e8;--status-bg: rgba(15, 23, 42, .04);--status-border: rgba(15, 23, 42, .1);--status-hover-bg: rgba(15, 23, 42, .06);--status-hover-border: rgba(15, 23, 42, .14);--status-text: #475569;--link: #3b6ff5;--link-hover: #2952e8;--btn-bg: #eef2f7}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;min-width:320px;min-height:100vh;background:var(--bg);color:var(--text);font-family:Inter,Noto Sans TC,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6;transition:background .2s ease,color .2s ease}a{font-weight:500;color:var(--link);text-decoration:inherit}a:hover{color:var(--link-hover)}#root{width:100%}h1{font-size:3.2em;line-height:1.1;text-align:center}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--btn-bg);color:var(--text);cursor:pointer;transition:border-color .25s,background .2s}button:hover{border-color:var(--primary)}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.loading-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--loading-overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:9999}.loading-overlay .spinner{width:56px;height:56px;border-radius:50%;border:4px solid var(--border);border-top-color:var(--primary);animation:spin 1s linear infinite}.loading-overlay .text{margin-top:12px;color:var(--muted);font-size:14px;text-align:center}@keyframes spin{to{transform:rotate(360deg)}}.notice-bar{position:fixed;top:0;left:0;right:0;padding:10px 16px;color:#0f1220;font-weight:600;text-align:center;z-index:10000;box-shadow:0 2px 8px var(--shadow);display:flex;align-items:center;justify-content:center;gap:12px}.notice-bar .notice-close{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:inherit;font-size:18px;cursor:pointer}.notice-warning{background:#f59e0b}.notice-success{background:#10b981}.notice-error{background:#ef4444}.add-btn{width:36px;height:36px;border-radius:50%;padding:0;background:transparent;border:1px solid var(--border);color:var(--muted);font-size:22px;line-height:1;cursor:pointer;transition:border-color .15s,color .15s}.add-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.add-btn:disabled{opacity:.35;cursor:not-allowed}
