@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-cyrillic-ext-wght-normal-cHuGMAiY.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-cyrillic-wght-normal-DwHjdM4S.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-greek-wght-normal-ece1310W.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-vietnamese-wght-normal-D-yuW59g.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-latin-ext-wght-normal-CxNHBx-q.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-latin-wght-normal-D9elroTD.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-cyrillic-ext-700-normal-BmRLXWpJ.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-700-normal-DCQwxkRk.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-cyrillic-700-normal-D_uavGvn.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-700-normal-RFb1v-CK.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-greek-700-normal-wyJ6jzdA.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-700-normal-CkZN0sRy.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-vietnamese-700-normal-CkEo6LDy.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-700-normal-BV5B8Are.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-latin-ext-700-normal-aMgXseD4.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-700-normal-DZH6Xh-4.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-latin-700-normal-Bxkt5Cjx.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-700-normal-Bth3BMcD.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@layer tokens,base,components,pages,overrides;@layer tokens{:root{color-scheme:light;--color-bg: #f8faf9;--color-surface: #ffffff;--color-surface-hover: #f0f4f2;--color-text: #1a1e1d;--color-text-secondary: #5f6b67;--color-border: #e0e6e3;--color-accent: #33695f;--color-accent-hover: #2a574f;--color-accent-soft: #e4efec;--color-on-accent: #ffffff;--color-success: #46689b;--color-success-soft: #e8eef7;--color-danger: #b03a3a;--color-danger-soft: #f9eaea;--color-warning: #9a6317;--color-warning-soft: #f7efdf;--color-on-danger: #ffffff;--color-overlay: rgba(18, 26, 23, .5);--graph-node: #a0a8a4;--graph-node-seed: var(--color-accent);--graph-node-saved: var(--color-success);--graph-edge: #d6dcd8;--font-serif: "Source Serif 4 Variable", "Source Serif 4", "Source Serif Pro", Georgia, serif;--font-sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "Cascadia Mono", monospace;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-full: 999px;--shadow-sm: 0 1px 2px rgba(18, 26, 23, .06);--shadow-md: 0 4px 12px rgba(18, 26, 23, .09);--shadow-lg: 0 12px 32px rgba(18, 26, 23, .16);--focus-ring: 0 0 0 3px color-mix(in srgb, var(--color-accent) 30%, transparent);--nav-height: 56px;--bottomnav-height: 56px}[data-theme=dark]{color-scheme:dark;--color-bg: #101413;--color-surface: #171f1d;--color-surface-hover: #212b28;--color-text: #e9efec;--color-text-secondary: #96a49e;--color-border: #2f3b37;--color-accent: #86b8ab;--color-accent-hover: #9fc9be;--color-accent-soft: #1d312c;--color-on-accent: #0c1f1a;--color-success: #8aa8cf;--color-success-soft: #1b2735;--color-danger: #dd9b9b;--color-danger-soft: #331919;--color-warning: #d8b26c;--color-warning-soft: #2e2510;--color-on-danger: #2a1414;--color-overlay: rgba(4, 8, 7, .62);--graph-node: #71807a;--graph-edge: #35413c;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 4px 12px rgba(0, 0, 0, .45);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .55)}}@layer base{*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);line-height:1.6;min-height:100vh}a{color:var(--color-accent);text-decoration:none}a:hover{color:var(--color-accent-hover)}button{cursor:pointer;font-family:inherit;color:inherit}.container{max-width:1100px;margin:0 auto;padding:0 var(--space-lg)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}}@layer components{.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:.45rem var(--space-md);border-radius:var(--radius-sm);font-size:.875rem;font-weight:500;border:1px solid transparent;transition:background .15s ease,border-color .15s ease,color .15s ease;white-space:nowrap}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-accent);color:var(--color-on-accent);border-color:var(--color-accent)}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-text-secondary)}.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);background:transparent;border:none;border-radius:var(--radius-sm);color:var(--color-text-secondary);padding:var(--space-xs)}.btn-ghost:hover{color:var(--color-text);background:var(--color-surface-hover)}.btn-ghost:focus-visible{outline:none;box-shadow:var(--focus-ring)}.btn-danger{background:var(--color-danger);color:var(--color-on-danger);border-color:var(--color-danger)}.btn-danger:hover:not(:disabled){filter:brightness(.92)}.segmented{display:inline-flex;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);padding:2px;gap:2px}.segmented button{border:none;background:transparent;color:var(--color-text-secondary);font-size:.8rem;font-weight:500;padding:.25rem .65rem;border-radius:calc(var(--radius-sm) - 2px);transition:background .12s ease,color .12s ease}.segmented button:hover{color:var(--color-text)}.segmented button.active{background:var(--color-accent);color:var(--color-on-accent)}.segmented button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);box-shadow:var(--shadow-sm)}.input{width:100%;padding:.45rem var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.875rem;font-family:inherit;background:var(--color-surface);color:var(--color-text);transition:border-color .15s ease}.input:focus{outline:none;border-color:var(--color-accent);box-shadow:var(--focus-ring)}.input::placeholder{color:var(--color-text-secondary);opacity:.65}select.input{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.badge{display:inline-flex;align-items:center;gap:4px;padding:1px var(--space-sm);border-radius:var(--radius-full);font-size:.72rem;font-weight:500;background:var(--color-accent-soft);color:var(--color-accent)}.badge--success{background:var(--color-success-soft);color:var(--color-success)}.badge--danger{background:var(--color-danger-soft);color:var(--color-danger)}.badge--neutral{background:var(--color-surface-hover);color:var(--color-text-secondary)}.pill{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-text-secondary);font-size:.8rem;font-weight:500;padding:.25rem .75rem;transition:all .12s ease}.pill:hover{border-color:var(--color-text-secondary);color:var(--color-text)}.pill.active{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent)}.pill:focus-visible{outline:none;box-shadow:var(--focus-ring)}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--color-surface-hover) 25%,var(--color-border) 50%,var(--color-surface-hover) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.4s ease-in-out infinite}.skeleton-group{display:flex;flex-direction:column;gap:var(--space-sm)}.skeleton-cards,.skeleton-card{display:flex;flex-direction:column;gap:var(--space-md)}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.skeleton{animation:none}}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-sm);padding:var(--space-2xl) var(--space-lg);color:var(--color-text-secondary)}.empty-state-icon{display:flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:var(--radius-full);background:var(--color-accent-soft);color:var(--color-accent);margin-bottom:var(--space-xs)}.empty-state-title{font-size:1rem;font-weight:600;color:var(--color-text)}.empty-state-description{font-size:.88rem;max-width:380px}.empty-state-action{margin-top:var(--space-sm)}.toast-container{position:fixed;top:calc(var(--nav-height) + var(--space-md));right:var(--space-lg);z-index:1100;display:flex;flex-direction:column;gap:var(--space-sm);max-width:360px}.toast{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-size:.88rem;animation:toast-in .2s ease-out}.toast--success .toast-icon{color:var(--color-success)}.toast--error .toast-icon{color:var(--color-danger)}.toast--info .toast-icon{color:var(--color-accent)}.toast-icon{flex-shrink:0}.toast-message{flex:1}.toast-close{background:transparent;border:none;color:var(--color-text-secondary);display:flex;padding:2px;border-radius:var(--radius-sm)}.toast-close:hover{color:var(--color-text)}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@media(max-width:639px){.toast-container{top:auto;bottom:calc(var(--bottomnav-height) + var(--space-md));left:var(--space-md);right:var(--space-md);max-width:none}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:var(--color-overlay);display:flex;align-items:center;justify-content:center;padding:var(--space-md)}.modal{max-width:440px;width:100%;display:flex;flex-direction:column;gap:var(--space-md);animation:modal-in .15s ease-out}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}.modal-title{font-size:1.05rem;font-weight:600;color:var(--color-text)}.modal-close{padding:var(--space-xs)}@keyframes modal-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.confirm-message{font-size:.88rem;color:var(--color-text-secondary);line-height:1.5}.confirm-actions{display:flex;justify-content:flex-end;gap:var(--space-sm);margin-top:var(--space-xs)}.panel-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:var(--color-overlay)}.panel{position:fixed;top:0;right:0;bottom:0;width:min(460px,94vw);background:var(--color-surface);border-left:1px solid var(--color-border);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;animation:panel-in .18s ease-out}.panel-handle{display:none}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border);flex-shrink:0}.panel-title{font-weight:600;font-size:.9rem;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;overflow:hidden;text-overflow:ellipsis}.panel-body{flex:1;overflow-y:auto;padding:var(--space-lg)}@keyframes panel-in{0%{transform:translate(28px);opacity:0}to{transform:translate(0);opacity:1}}@media(max-width:767px){.panel{top:auto;left:0;right:0;bottom:0;width:100%;max-height:88vh;border-left:none;border-top:1px solid var(--color-border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;animation:sheet-in .2s ease-out}.panel-handle{display:block;width:36px;height:4px;border-radius:2px;background:var(--color-border);margin:var(--space-sm) auto 0;flex-shrink:0}@keyframes sheet-in{0%{transform:translateY(28px);opacity:0}to{transform:translateY(0);opacity:1}}}.link-chip{display:inline-flex;align-items:center;gap:5px;padding:.25rem .7rem;border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-text);font-size:.78rem;font-weight:500}.link-chip:hover{border-color:var(--color-accent);color:var(--color-accent)}.theme-toggle{padding:var(--space-sm)}.menu-root{position:relative;display:inline-flex}.menu-popover{position:absolute;top:calc(100% + 6px);min-width:200px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--space-xs);z-index:1200;display:flex;flex-direction:column;animation:menu-in .12s ease-out}.menu-popover--right{right:0}.menu-popover--left{left:0}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.menu-item{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:.45rem var(--space-sm);border:none;background:transparent;border-radius:var(--radius-sm);color:var(--color-text);font-size:.85rem;text-align:left;text-decoration:none}.menu-item:hover{background:var(--color-surface-hover);color:var(--color-text)}.menu-item--danger{color:var(--color-danger)}.menu-item--danger:hover{background:var(--color-danger-soft);color:var(--color-danger)}.menu-item-check{display:inline-flex;width:16px;justify-content:center;color:var(--color-accent)}.menu-item:disabled{opacity:.5;cursor:not-allowed}.menu-header{display:flex;flex-direction:column;padding:var(--space-sm);gap:1px}.menu-header-name{font-size:.85rem;font-weight:600;color:var(--color-text)}.menu-header-email{font-size:.75rem;color:var(--color-text-secondary)}.menu-separator{height:1px;background:var(--color-border);margin:var(--space-xs) 0}.menu-empty{padding:var(--space-sm);font-size:.82rem;color:var(--color-text-secondary)}.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.auth-loading{padding-top:2rem}.theme-segment-icon{margin-right:4px;vertical-align:-2px}.skeleton{width:100%;height:1rem}.skeleton[data-width="60%"]{width:60%}.skeleton[data-width="70%"]{width:70%}.skeleton[data-width="2.4rem"]{width:2.4rem}.skeleton[data-height="0.85rem"]{height:.85rem}.skeleton[data-height="1.1rem"]{height:1.1rem}.skeleton[data-height="1.5rem"]{height:1.5rem}.skeleton[data-height="4rem"]{height:4rem}@layer components{.topnav{position:fixed;top:0;left:0;right:0;height:var(--nav-height);display:flex;align-items:center;gap:var(--space-lg);padding:0 var(--space-lg);background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:100}.topnav-brand{display:flex;align-items:center;gap:var(--space-sm);color:var(--color-text);flex-shrink:0}.topnav-logo{color:var(--color-accent)}.topnav-wordmark{font-family:var(--font-serif);font-size:1.02rem;font-weight:650;letter-spacing:-.01em}.topnav-links{display:flex;align-items:center;gap:var(--space-xs);flex:1;min-width:0}.topnav-link{position:relative;display:inline-flex;align-items:center;padding:.35rem .7rem;border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:.875rem;font-weight:500;transition:color .12s ease,background .12s ease}.topnav-link:hover{color:var(--color-text);background:var(--color-surface-hover)}.topnav-link--active{color:var(--color-accent)}.topnav-link--active:after{content:"";position:absolute;left:.7rem;right:.7rem;bottom:-2px;height:2px;border-radius:2px;background:var(--color-accent)}.topnav-actions{display:flex;align-items:center;gap:var(--space-xs);flex-shrink:0}.topnav-iconbtn{padding:var(--space-sm)}.topnav-signin{font-size:.82rem;padding:.35rem .75rem;margin-left:var(--space-xs)}.user-menu-btn{display:inline-flex;background:transparent;border:none;padding:3px;border-radius:var(--radius-full);margin-left:var(--space-xs)}.user-menu-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.user-avatar{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-full);background:var(--color-accent);color:var(--color-on-accent);font-size:.78rem;font-weight:600}.tabbar{display:none;position:fixed;left:0;right:0;bottom:0;height:var(--bottomnav-height);background:var(--color-surface);border-top:1px solid var(--color-border);z-index:100;padding-bottom:env(safe-area-inset-bottom)}.tabbar-link{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:.62rem;font-weight:500;color:var(--color-text-secondary)}.tabbar-link--active{color:var(--color-accent)}.app-main{padding-top:var(--nav-height);min-height:100vh}.app-container{max-width:1100px;margin:0 auto;padding:var(--space-xl) var(--space-lg) var(--space-2xl)}.app-footer{display:flex;justify-content:center;gap:var(--space-lg);padding:var(--space-lg);border-top:1px solid var(--color-border);font-size:.8rem}@media(max-width:639px){.topnav{gap:var(--space-sm);padding:0 var(--space-md)}.topnav-links{display:none}.tabbar{display:flex}.app-main{padding-bottom:calc(var(--bottomnav-height) + var(--space-lg))}.app-container{padding:var(--space-lg) var(--space-md) var(--space-xl)}}}@layer pages{.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:var(--space-lg);background:var(--color-bg)}.auth-card{width:100%;max-width:380px;padding:var(--space-xl);box-shadow:var(--shadow-md)}.auth-header{text-align:center;margin-bottom:var(--space-lg)}.auth-logo{color:var(--color-accent);margin-bottom:var(--space-sm)}.auth-header h1{font-family:var(--font-serif);font-size:1.25rem;font-weight:650;letter-spacing:-.01em;color:var(--color-text)}.auth-header p{color:var(--color-text-secondary);font-size:.86rem;margin-top:var(--space-xs)}.auth-form{display:flex;flex-direction:column;gap:var(--space-md)}.auth-form label{display:flex;flex-direction:column;gap:var(--space-xs);font-size:.82rem;font-weight:500;color:var(--color-text)}.auth-submit{width:100%;justify-content:center;margin-top:var(--space-xs);padding-top:.55rem;padding-bottom:.55rem}.auth-error{background:var(--color-danger-soft);color:var(--color-danger);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);font-size:.84rem;margin-bottom:var(--space-md)}.auth-alt{text-align:center;margin-top:var(--space-lg);font-size:.84rem;color:var(--color-text-secondary)}.auth-help,.auth-message,.auth-forgot{font-size:.8rem;color:var(--color-text-secondary);font-weight:400}.auth-check{flex-direction:row!important;align-items:flex-start}.auth-check input{margin-top:.25rem}.auth-forgot{align-self:center}}@layer pages{.landing{display:flex;flex-direction:column;gap:var(--space-2xl);max-width:780px;margin:0 auto;padding-top:clamp(var(--space-lg),8vh,5rem)}.landing-hero{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-md)}.landing-logo{color:var(--color-accent)}.landing-title{font-family:var(--font-serif);font-size:2.1rem;font-weight:700;letter-spacing:-.015em;line-height:1.1}.landing-tagline{font-size:1.05rem;color:var(--color-text-secondary);max-width:460px}.landing-search{display:flex;gap:var(--space-sm);width:100%;max-width:560px;margin-top:var(--space-sm)}.landing-search-wrap{position:relative;flex:1;min-width:0}.landing-search-icon{position:absolute;left:var(--space-md);top:50%;transform:translateY(-50%);color:var(--color-text-secondary);pointer-events:none}.landing-search-input{padding-left:calc(var(--space-md) * 2 + 14px);padding-top:.7rem;padding-bottom:.7rem;font-size:.95rem;border-radius:var(--radius-md)}.landing-search-btn{padding-top:.7rem;padding-bottom:.7rem}.landing-hint{font-size:.84rem;color:var(--color-text-secondary)}.landing-ctas{display:flex;gap:var(--space-sm);flex-wrap:wrap;justify-content:center}.landing-features{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--color-border)}.landing-feature{display:flex;flex-direction:column;gap:var(--space-xs)}.landing-feature-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--radius-sm);background:var(--color-accent-soft);color:var(--color-accent);margin-bottom:var(--space-xs)}.landing-feature h3{font-size:.92rem;font-weight:600}.landing-feature p{font-size:.84rem;color:var(--color-text-secondary);line-height:1.55}@media(max-width:639px){.landing{padding-top:var(--space-lg);gap:var(--space-xl)}.landing-search{flex-direction:column}.landing-features{gap:var(--space-lg)}}}@layer pages{.dashboard{display:flex;flex-direction:column;gap:var(--space-xl)}.dashboard-header h1{font-family:var(--font-serif);font-size:1.35rem;font-weight:650;letter-spacing:-.01em}.dashboard-header p{font-size:.88rem;color:var(--color-text-secondary);margin-top:var(--space-xs)}.dashboard-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-md)}.stat-tile{display:flex;flex-direction:column;gap:2px;padding:var(--space-md) var(--space-lg)}.stat-value{font-family:var(--font-serif);font-size:1.5rem;font-weight:650;letter-spacing:-.01em}.stat-label{font-size:.78rem;color:var(--color-text-secondary)}.dashboard-recent{display:flex;flex-direction:column;gap:var(--space-md)}.dashboard-recent-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}.dashboard-recent-head h2{font-size:1rem;font-weight:600}.dashboard-viewall{font-size:.82rem;padding:var(--space-xs) var(--space-sm)}.dashboard-collections{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-md)}.dashboard-collection{display:flex;flex-direction:column;gap:var(--space-xs);color:var(--color-text);padding:var(--space-md) var(--space-lg);transition:border-color .12s ease}.dashboard-collection:hover{border-color:var(--color-accent);color:var(--color-text)}.dashboard-collection h3{font-size:.95rem;font-weight:600}.dashboard-collection-desc{font-size:.82rem;color:var(--color-text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.dashboard-collection-meta{font-size:.76rem;color:var(--color-text-secondary);margin-top:auto}}@layer components{.pd{display:flex;flex-direction:column;gap:var(--space-md)}.pd-title{font-family:var(--font-serif);font-size:1.12rem;font-weight:650;line-height:1.35}.pd-badges{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.pd-badges:empty{display:none}.pd-authors{font-size:.88rem;color:var(--color-text-secondary)}.pd-venue{font-size:.82rem;color:var(--color-text-secondary)}.pd-counts{display:flex;gap:var(--space-md);font-size:.82rem;color:var(--color-text-secondary);font-weight:500}.pd-section{display:flex;flex-direction:column;gap:var(--space-sm)}.pd-section h3{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary)}.pd-abstract{font-size:.88rem;line-height:1.6}.pd-links,.pd-topics{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.pd-versions{list-style:none;display:flex;flex-direction:column;gap:var(--space-xs)}.pd-version{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.82rem}.pd-version.active{border-color:var(--color-accent);background:var(--color-accent-soft)}.pd-version-actions{display:flex;align-items:center;gap:2px;flex-shrink:0}.pd-version-actions .btn-ghost{padding:3px;font-size:.72rem}.pd-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.pd-actions .btn{font-size:.8rem;padding:.35rem .75rem}.pd-signin{display:flex;flex-direction:column;gap:var(--space-sm);align-items:flex-start;font-size:.88rem;color:var(--color-text-secondary)}.pd-error{color:var(--color-danger);font-size:.88rem}.tag-editor{display:flex;flex-direction:column;gap:var(--space-sm)}.tag-editor-list{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.tag-editor-list:empty{display:none}.paper-tag{display:inline-flex;align-items:center;gap:4px;padding:1px var(--space-sm);border-radius:var(--radius-full);font-size:.74rem;font-weight:500;background:var(--color-surface-hover);color:var(--color-text)}.paper-tag button{display:inline-flex;background:transparent;border:none;color:var(--color-text-secondary);padding:0}.paper-tag button:hover{color:var(--color-danger)}.tag-editor-form{display:flex;gap:var(--space-sm)}.tag-editor-input{flex:1;font-size:.82rem}.notes-panel{display:flex;flex-direction:column;gap:var(--space-sm)}.notes-list{list-style:none;display:flex;flex-direction:column;gap:var(--space-sm)}.note-item{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);font-size:.85rem}.note-content{white-space:pre-wrap}.note-footer{display:flex;justify-content:space-between;align-items:center;margin-top:var(--space-xs)}.note-date{font-size:.72rem;color:var(--color-text-secondary)}.note-delete{padding:2px}.notes-form{display:flex;flex-direction:column;gap:var(--space-sm);align-items:flex-start}.notes-textarea{resize:vertical;font-family:inherit}.reading-state-select{max-width:220px}}@layer components{.paper-card{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-md) var(--space-lg)}.paper-card--dismissed{opacity:.5}.paper-title-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);min-width:0}.paper-title{font-family:var(--font-serif);font-size:.98rem;font-weight:600;color:var(--color-text);line-height:1.4}.paper-title-btn{background:transparent;border:none;padding:0;text-align:left;cursor:pointer}.paper-title-btn:hover{color:var(--color-accent)}.paper-title-btn:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}.paper-authors{font-size:.84rem;color:var(--color-text-secondary);display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.paper-meta{font-size:.78rem;color:var(--color-text-secondary)}.paper-sources{opacity:.75}.paper-abstract{font-size:.84rem;color:var(--color-text-secondary);line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:var(--space-xs)}.paper-topics{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-xs)}.paper-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);margin-top:var(--space-sm)}.paper-actions .btn{font-size:.78rem;padding:.3rem .7rem}}@layer pages{.search-page{display:flex;flex-direction:column;gap:var(--space-md)}.search-bar{position:sticky;top:var(--nav-height);z-index:20;display:flex;gap:var(--space-sm);padding:var(--space-sm) 0;background:var(--color-bg)}.search-input-wrap{position:relative;flex:1;min-width:0}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--color-text-secondary);pointer-events:none}.search-input{padding-left:38px;padding-top:.55rem;padding-bottom:.55rem;font-size:.92rem}.search-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm)}.search-meta{font-size:.8rem;color:var(--color-text-secondary)}.search-pills{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.search-list{display:flex;flex-direction:column;gap:var(--space-sm)}.search-error{color:var(--color-danger);font-size:.88rem}.version-picker{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-xs)}.pill--sm{font-size:.72rem;padding:.15rem .6rem}.dismiss-btn{font-size:.78rem;margin-left:auto}}@layer pages{.collections-page{display:flex;flex-direction:column;gap:var(--space-lg)}.page-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);flex-wrap:wrap}.page-header h1{font-family:var(--font-serif);font-size:1.35rem;font-weight:650;letter-spacing:-.01em}.collection-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-md)}.collection-grid:empty{display:none}.collection-item{position:relative;display:flex;flex-direction:column;padding:var(--space-md) var(--space-lg);transition:border-color .12s ease}.collection-item:hover{border-color:var(--color-accent)}.collection-link{display:flex;flex-direction:column;gap:var(--space-xs);color:var(--color-text);min-height:92px}.collection-link:hover{color:var(--color-text)}.collection-link h3{font-size:.95rem;font-weight:600;padding-right:var(--space-xl)}.collection-link p{font-size:.82rem;color:var(--color-text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.collection-item-meta{display:flex;align-items:center;gap:var(--space-sm);font-size:.76rem;color:var(--color-text-secondary);margin-top:auto;padding-top:var(--space-xs)}.collection-delete{position:absolute;top:var(--space-sm);right:var(--space-sm)}.collection-delete:hover{color:var(--color-danger);background:var(--color-danger-soft)}.collection-create-form{display:flex;flex-direction:column;gap:var(--space-md)}}@layer pages{.collection-detail{display:flex;flex-direction:column;gap:var(--space-lg)}.cd-notfound{color:var(--color-text-secondary);text-align:center;padding:var(--space-2xl) 0}.cd-header{display:flex;flex-direction:column;gap:var(--space-xs)}.cd-title-row{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.cd-title-row h1{font-family:var(--font-serif);font-size:1.35rem;font-weight:650;letter-spacing:-.01em}.cd-description{font-size:.9rem;color:var(--color-text-secondary);max-width:640px}.cd-meta{font-size:.8rem;color:var(--color-text-secondary)}.cd-toolbar{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-sm)}.cd-edit-form{display:flex;flex-direction:column;gap:var(--space-sm);max-width:520px}.cd-edit-actions{display:flex;justify-content:flex-end;gap:var(--space-sm)}.cd-add-form{display:flex;gap:var(--space-sm)}.cd-add-form .input{flex:1}.cd-papers{display:flex;flex-direction:column;gap:var(--space-sm)}.cd-state{max-width:170px}.cd-state .input{font-size:.78rem;padding:.25rem var(--space-sm)}.cd-remove{margin-left:auto}.cd-remove:hover{color:var(--color-danger);background:var(--color-danger-soft)}.cd-paper-tags{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-xs)}.cd-paper-fallback{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md) var(--space-lg)}.cd-notes-section{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-md)}.cd-notes{display:flex;flex-direction:column;gap:var(--space-sm);width:100%;max-width:640px}.cd-note-form{display:flex;flex-direction:column;gap:var(--space-sm);align-items:flex-start;width:100%}.cd-note-form textarea{resize:vertical;font-family:inherit}.cd-note{width:100%;padding:var(--space-sm) var(--space-md);font-size:.87rem}.cd-note-meta{display:flex;justify-content:space-between;align-items:center;margin-top:var(--space-xs);font-size:.74rem;color:var(--color-text-secondary)}@media(max-width:639px){.cd-add-form{flex-direction:column}}}@layer pages{.library-page{display:flex;flex-direction:column;gap:var(--space-lg)}.library-header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-md)}.library-header h1{font-family:var(--font-serif);font-size:1.35rem;font-weight:650;letter-spacing:-.01em}.library-subtitle{font-size:.85rem;color:var(--color-text-secondary);max-width:560px;margin-top:var(--space-xs)}.library-toolbar{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.library-list{display:flex;flex-direction:column;gap:var(--space-sm)}.library-entry-tags{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-xs)}.library-delete{margin-left:auto}.library-delete:hover{color:var(--color-danger);background:var(--color-danger-soft)}.library-entry-fallback{padding:var(--space-md) var(--space-lg)}}.force-graph-container canvas{display:block;-webkit-user-select:none;user-select:none;outline:none;-webkit-tap-highlight-color:transparent}.force-graph-container .clickable{cursor:pointer}.force-graph-container .grabbable{cursor:move;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.force-graph-container .grabbable:active{cursor:grabbing;cursor:-moz-grabbing;cursor:-webkit-grabbing}.float-tooltip-kap{position:absolute;width:max-content;max-width:max(50%,150px);padding:3px 5px;border-radius:3px;font:12px sans-serif;color:#eee;background:#0009;pointer-events:none}@layer pages{.graph-screen{position:fixed;top:var(--nav-height);left:0;right:0;bottom:0;overflow:hidden;background:var(--color-bg)}.graph-screen .graph-canvas-container{position:absolute;top:0;right:0;bottom:0;left:0}.graph-empty{padding-top:var(--space-2xl)}.graph-screen .graph-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding-top:0}.graph-center-status{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:var(--space-sm);color:var(--color-text-secondary);font-size:.9rem}@keyframes graph-spin{to{transform:rotate(360deg)}}.spin{animation:graph-spin .8s linear infinite}.graph-overlay{position:absolute;display:flex;align-items:center;gap:var(--space-sm);z-index:10}.graph-overlay--tl{top:var(--space-md);left:var(--space-md)}.graph-overlay--tr{top:var(--space-md);right:var(--space-md);gap:var(--space-xs)}.graph-overlay--tr button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-secondary);transition:color .1s ease,border-color .1s ease}.graph-overlay--tr button:hover{color:var(--color-text);border-color:var(--color-text-secondary)}.graph-back{background:var(--color-surface);border:1px solid var(--color-border);width:32px;height:32px}.graph-chip{display:inline-flex;align-items:center;gap:var(--space-sm);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);padding:.25rem .8rem;font-size:.8rem;font-weight:600}.graph-chip-mode{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-accent);background:var(--color-accent-soft);border-radius:var(--radius-full);padding:1px 8px}.graph-counts{font-size:.75rem;color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);padding:.25rem .7rem}.graph-expandbar{position:absolute;bottom:var(--space-lg);left:50%;transform:translate(-50%);display:flex;align-items:center;gap:var(--space-sm);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-sm) var(--space-md);z-index:10;max-width:calc(100vw - 2 * var(--space-md));flex-wrap:wrap;justify-content:center}.graph-limit{width:auto;font-size:.8rem;padding:.25rem var(--space-sm)}.graph-expand-btn{font-size:.82rem}.graph-node-card{position:absolute;top:calc(var(--space-md) + 44px);right:var(--space-md);width:280px;z-index:10;padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-sm)}.graph-node-card h4{font-size:.88rem;font-weight:600;line-height:1.35}.graph-node-authors{font-size:.78rem;color:var(--color-text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.graph-node-meta{font-size:.75rem;color:var(--color-text-secondary)}.graph-node-actions{display:flex;gap:var(--space-xs)}.graph-node-actions .btn{font-size:.78rem;padding:.3rem .7rem}.graph-legend{position:absolute;bottom:var(--space-lg);left:var(--space-md);z-index:10;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.75rem;color:var(--color-text-secondary);max-width:240px}.graph-legend summary{cursor:pointer;padding:var(--space-xs) var(--space-sm);font-weight:500;-webkit-user-select:none;user-select:none}.graph-legend-body{display:flex;flex-direction:column;gap:var(--space-xs);padding:0 var(--space-sm) var(--space-sm)}.graph-legend-body>span{display:flex;align-items:center;gap:6px}.legend-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--graph-node)}.legend-dot.seed{background:var(--graph-node-seed)}.legend-dot.saved{background:var(--graph-node-saved)}.legend-line{display:inline-block;width:20px;height:0;border-top:2px solid var(--graph-edge)}.legend-hint{font-style:italic}@media(max-width:639px){.graph-screen{bottom:var(--bottomnav-height)}.graph-counts{display:none}.graph-expandbar{bottom:var(--space-sm);padding:var(--space-xs) var(--space-sm);gap:var(--space-xs)}.graph-node-card{top:auto;bottom:calc(var(--space-lg) + 56px);left:var(--space-md);right:var(--space-md);width:auto}.graph-legend{display:none}}}@layer pages{.settings{display:flex;flex-direction:column;gap:var(--space-md);max-width:560px}.settings h1{font-family:var(--font-serif);font-size:1.35rem;font-weight:650;letter-spacing:-.01em;margin-bottom:var(--space-xs)}.settings-section{display:flex;flex-direction:column;gap:var(--space-md)}.settings-section h2{display:flex;align-items:center;gap:var(--space-xs);font-size:.95rem;font-weight:600}.settings-field{display:flex;flex-direction:column;gap:var(--space-xs);font-size:.84rem;font-weight:500}.settings-row{display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap}.settings-label{font-size:.84rem;font-weight:500;min-width:70px}.settings-saved{font-size:.84rem;color:var(--color-success)}.settings-hint{font-size:.8rem;color:var(--color-text-secondary);line-height:1.5}.settings-self-start{align-self:flex-start}.settings-zotero-status{display:flex;align-items:center;gap:var(--space-sm);font-size:.85rem}.settings-zotero-status svg{color:var(--color-success)}.settings-zotero-status code{font-size:.75rem;color:var(--color-text-secondary)}.settings-zotero-form{display:flex;flex-direction:column;gap:var(--space-sm)}.settings-danger h2{color:var(--color-danger)}.settings-danger-btn{align-self:flex-start;border-color:var(--color-danger);color:var(--color-danger)}.settings-danger-btn:hover:not(:disabled){background:var(--color-danger-soft);border-color:var(--color-danger)}}@layer pages{.legal-page{max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:var(--space-md)}.legal-page h1{font-family:var(--font-serif);font-size:1.6rem}.legal-page h2{font-size:1.05rem;margin-top:var(--space-md)}.legal-page p,.legal-page li{color:var(--color-text-secondary);line-height:1.75}.legal-page ul{padding-left:var(--space-xl)}}
