@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-vietnamese-400-normal-CRcqvyg1.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-400-normal-BuGn0gnm.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-latin-ext-400-normal-CiZNW1ec.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-ext-400-normal-DYBYyMQr.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-latin-400-normal-PpnXBOrz.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-400-normal-bXgqVju9.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-vietnamese-500-normal-DREgrEoJ.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-500-normal-CfdwVo8-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-latin-ext-500-normal-h0Fp6aX0.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-ext-500-normal-CK0UkkKf.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-latin-500-normal-B6LVzGNe.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-500-normal-BJkVuMHw.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-vietnamese-600-normal-nyU-ZL2p.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-600-normal-DkpCIyan.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-latin-ext-600-normal-BNd8euf0.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-ext-600-normal-BeUwKxhG.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/be-vietnam-pro-latin-600-normal-BZDkUTrt.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-600-normal-5IO4e7bK.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/be-vietnam-pro-vietnamese-700-normal-Csr0PCuG.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-700-normal-By_5yT39.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/be-vietnam-pro-latin-ext-700-normal-C8_gqRu2.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-ext-700-normal-4Hjo2OtD.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/be-vietnam-pro-latin-700-normal-DlW1Zbsh.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-700-normal-C2EtzaOi.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f5eee0;--surface:#fffdf8;--surface-2:#fbf5e9;--surface-3:#f1e8d8;--surface-raised:#fff;--border:#e6dcc8;--border-strong:#d4c7ad;--hover:#46321e12;--text:#33291f;--text-h:#1c140c;--text-muted:#7d7264;--text-faint:#b0a594;--accent:#ea5b2e;--accent-hover:#d94f26;--accent-active:#c4451f;--accent-text:#b53e1b;--accent-bg:#ea5b2e1f;--accent-bg-strong:#ea5b2e38;--on-accent:#fff;--accent-contrast:var(--on-accent);--accent-2:#199384;--accent-2-hover:#147a6e;--accent-2-text:#0f6b60;--accent-2-bg:#1993841f;--success:#2f9e5b;--success-text:#227a45;--success-bg:#2f9e5b1f;--warning:#e0a526;--warning-text:#8a5a00;--warning-bg:#e0a52624;--info:#3a78c9;--info-text:#245a9e;--info-bg:#3a78c91a;--danger:#bf4630;--danger-hover:#a93b27;--danger-text:#a13a25;--danger-bg:#bf46301f;--star:#f5b731;--star-text:#c98d0f;--laser:#ff3b30;--on-laser:#fff;--paper:#fff;--paper-edge:#dcd5c8;--paper-ink:#2f2a24;--overlay:#1c140c73;--overlay-soft:#1c140c47;--shadow-sm:0 2px 6px #46321e14;--shadow:0 6px 20px #46321e1f;--shadow-lg:0 10px 30px #46321e29, 0 0 0 1px #46321e0d;--sans:"Be Vietnam Pro", system-ui, "Segoe UI", Roboto, sans-serif;--font-display:"Fraunces Variable", "Iowan Old Style", "Palatino Linotype", Georgia, "Noto Serif", serif;--radius-sm:7px;--radius:10px;--radius-lg:16px;--tap:44px;--dur-fast:.12s;--dur-base:.2s;--dur-slow:.32s;--ease-out:cubic-bezier(.2, .7, .2, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--ease-spring-soft:cubic-bezier(.22, 1.2, .36, 1);--tb-bg:var(--surface);--tb-hover:var(--hover);--tb-active:var(--accent);--tb-active-contrast:var(--on-accent);--tb-icon:var(--text);--tb-icon-dim:var(--text-muted);--tb-border:var(--border);--tb-divider:var(--border-strong);--fm-bg:var(--surface-raised);--fm-border:var(--border);--fm-shadow:var(--shadow-lg);--fm-radius:14px;--fm-item-selected:var(--accent-bg);--fm-text:var(--text);--fm-text-muted:var(--text-muted);font:16px/1.5 var(--sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#1b1815;--surface:#24201b;--surface-2:#2c2721;--surface-3:#362f28;--surface-raised:#2f2924;--border:#3a332b;--border-strong:#4a4136;--hover:#ffffff14;--text:#e6ddd0;--text-h:#f8f2e8;--text-muted:#a2968a;--text-faint:#6f655a;--accent:#f4744d;--accent-hover:#f88a68;--accent-active:#ef6a3f;--accent-text:#f79a7c;--accent-bg:#f4744d2e;--accent-bg-strong:#f4744d4d;--on-accent:#1b1512;--accent-2:#3fb8a8;--accent-2-hover:#5cc9ba;--accent-2-text:#7ad6c8;--accent-2-bg:#3fb8a82e;--success:#4dbf7a;--success-text:#86d9a6;--success-bg:#4dbf7a29;--warning:#f0b83f;--warning-text:#f6cf78;--warning-bg:#f0b83f29;--info:#6da3ec;--info-text:#9dc2f4;--info-bg:#6da3ec24;--danger:#e8785f;--danger-hover:#f08d77;--danger-text:#f3a08c;--danger-bg:#e8785f29;--star:#f7c247;--star-text:#f7c247;--overlay:#0009;--overlay-soft:#0006;--shadow-sm:0 2px 6px #0006;--shadow:0 6px 20px #00000080;--shadow-lg:0 10px 30px #0009, 0 0 0 1px #ffffff0f}*{box-sizing:border-box}html,body{overscroll-behavior:none;-webkit-tap-highlight-color:transparent;min-height:100svh;margin:0}body{touch-action:manipulation}#root{min-height:100svh}h1,h2,h3{color:var(--text-h);font-family:var(--font-display);letter-spacing:-.015em;font-optical-sizing:auto;margin:0;font-weight:600}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;transition:background var(--dur-fast) ease, border-color var(--dur-fast) ease, color var(--dur-fast) ease, box-shadow var(--dur-fast) ease, transform 80ms ease}button:active{transform:translateY(.5px)scale(.985)}a{color:var(--accent-text)}::selection{background:var(--accent-bg-strong)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--border-strong);background-clip:padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-track{background:0 0}.app-loading{min-height:100svh;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:14px;font-size:14px;display:flex}@keyframes fade-in{0%{opacity:0}}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}}@keyframes pop-in{0%{opacity:0;transform:scale(.94)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes shake{20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}@keyframes tool-pop{0%{transform:scale(.9)}60%{transform:scale(1.06)}to{transform:none}}@keyframes star-pop{0%{transform:scale(1)}40%{transform:scale(1.35)rotate(-8deg)}to{transform:none}}@keyframes check-draw{to{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){:root{--dur-fast:0s;--dur-base:0s;--dur-slow:0s}:not(.spinner):not(.imp-progress-fill),:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.spinner{--spinner-size:20px;width:var(--spinner-size);height:var(--spinner-size);border:2px solid var(--accent-bg-strong);border-top-color:var(--accent);border-radius:50%;flex-shrink:0;animation:.8s linear infinite spin;display:inline-block}.toaster{left:50%;bottom:max(24px, env(safe-area-inset-bottom));z-index:300;pointer-events:none;flex-direction:column;align-items:center;gap:8px;max-width:calc(100vw - 32px);display:flex;position:fixed;transform:translate(-50%)}.toast{background:var(--text-h);color:var(--surface);box-shadow:var(--shadow);white-space:nowrap;text-overflow:ellipsis;border-left:3px solid #0000;border-radius:999px;max-width:100%;padding:8px 16px;font-size:13px;overflow:hidden}.toast-success{border-left-color:var(--success)}.toast-error{border-left-color:var(--danger)}@media (width<=480px){.toaster{bottom:calc(72px + env(safe-area-inset-bottom))}}.auth-page{min-height:100svh;padding:max(24px, env(safe-area-inset-top)) 24px max(24px, env(safe-area-inset-bottom));background-image:radial-gradient(ellipse 60% 50% at 15% 0%, var(--accent-bg) 0%, transparent 70%), radial-gradient(var(--border) .5px, transparent .5px);animation:fade-in var(--dur-base) ease both;background-size:100% 100%,22px 22px;justify-content:center;align-items:center;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:380px;box-shadow:var(--shadow-lg);animation:rise-in .36s var(--ease-out) both;padding:36px 32px}.auth-logo{text-align:center;font-family:var(--font-display);letter-spacing:-.02em;color:var(--accent-text);margin-bottom:24px;font-size:28px;font-weight:700}.auth-card h1{text-align:center;margin-bottom:20px;font-size:20px}.field{animation:rise-in .3s var(--ease-out) both;flex-direction:column;gap:6px;margin-bottom:16px;animation-delay:80ms;display:flex}.field:nth-child(2){animation-delay:.14s}.field:nth-child(3){animation-delay:.2s}.field:nth-child(4){animation-delay:.26s}.field label{color:var(--text-muted);font-size:13px}.field input{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);outline:none;min-height:46px;padding:12px 14px;font-size:16px;transition:border-color .14s,box-shadow .14s}.field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg);background:var(--surface-raised)}.auth-error{color:var(--danger-text);background:var(--danger-bg);border-radius:var(--radius-sm);animation:shake .4s var(--ease-out);margin-bottom:16px;padding:8px 10px;font-size:13px}.submit-btn{background:var(--accent);width:100%;min-height:48px;color:var(--accent-contrast);border-radius:var(--radius);box-shadow:var(--shadow-sm);border:none;margin-top:4px;padding:13px;font-weight:600}.submit-btn:hover:not(:disabled){background:var(--accent-hover);box-shadow:var(--shadow)}.submit-btn:disabled{opacity:.6;cursor:not-allowed}.switch-link{text-align:center;color:var(--text-muted);margin-top:18px;font-size:14px}.nb-card{cursor:pointer;width:100%;animation:rise-in var(--dur-slow) var(--ease-out) both;animation-delay:min(calc(var(--i,0) * 28ms), .32s)}.nb-cover{aspect-ratio:4/5;width:100%;box-shadow:var(--shadow);transition:transform var(--dur-base) var(--ease-spring-soft), box-shadow var(--dur-base) ease;border-radius:6px 10px 10px 6px;position:relative}.nb-card:active .nb-cover{transform:translateY(-1px)scale(.99)}.nb-card:hover .nb-cover{box-shadow:var(--shadow), #3c32231a 0 12px 28px;transform:translateY(-4px)}.nb-cover-spine{background:#0000002e;border-radius:6px 0 0 6px;width:10px;position:absolute;top:0;bottom:0;left:0}.nb-cover-icon{filter:drop-shadow(0 1px 2px #00000040);pointer-events:none;flex-wrap:wrap;place-content:center;align-items:center;gap:2px;padding:14px;font-size:46px;display:flex;position:absolute;inset:0}.nb-cover-icon.multi{font-size:26px}.nb-fav-btn{color:#ffffffd9;text-shadow:0 1px 2px #0006;background:0 0;border:none;padding:4px;font-size:18px;line-height:1;position:absolute;top:6px;left:14px}.nb-fav-btn.on{color:var(--star);animation:star-pop var(--dur-slow) var(--ease-out)}.nb-menu-btn{color:#fff;background:#00000040;border:none;border-radius:50%;width:26px;height:26px;line-height:1;position:absolute;top:8px;right:8px}.nb-menu-btn:hover{background:#0006}.nb-menu{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);z-index:10;border-radius:8px;min-width:150px;position:absolute;top:38px;right:8px;overflow:hidden}.nb-menu button{text-align:left;background:var(--surface);width:100%;color:var(--text);border:none;padding:10px 14px;font-size:13px;display:block}.nb-menu button:hover{background:var(--bg)}.nb-menu button.danger{color:var(--danger)}.nb-title{font-family:var(--font-display);color:var(--text-h);text-overflow:ellipsis;white-space:nowrap;margin-top:10px;font-size:15px;font-weight:600;overflow:hidden}.nb-row{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:border-color var(--dur-fast) ease, background var(--dur-fast) ease;animation:rise-in var(--dur-slow) var(--ease-out) both;animation-delay:min(calc(var(--i,0) * 24ms), .28s);align-items:center;gap:14px;padding:10px 12px;display:flex}.nb-row:hover{border-color:var(--accent);background:var(--surface-2)}.nb-row-cover{width:40px;height:52px;box-shadow:var(--shadow-sm);border-radius:3px 6px 6px 3px;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.nb-row-icons{filter:drop-shadow(0 1px 1px #00000040);flex-wrap:wrap;place-content:center;align-items:center;gap:1px;font-size:18px;display:flex}.nb-row-icons.multi{font-size:11px}.nb-row-info{flex:1;min-width:0}.nb-row-info .nb-title{margin-top:0}.nb-row-actions{align-items:center;gap:6px;display:flex}.nb-row-actions .nb-fav-btn{color:var(--text-muted);text-shadow:none;position:static}.nb-row-actions .nb-fav-btn.on{color:var(--star-text)}.nb-menu-wrap{position:relative}.nb-row .nb-menu-btn{color:var(--text-muted);background:0 0;position:static}.nb-row .nb-menu-btn:hover{background:var(--surface-2)}@media (pointer:coarse){.nb-menu-btn{width:38px;height:38px;font-size:18px}.nb-fav-btn{padding:6px;font-size:22px}.nb-menu button{padding:14px 16px;font-size:15px}}.nb-meta{color:var(--text-muted);margin-top:2px;font-size:12px}.modal-backdrop{background:var(--overlay);z-index:100;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:420px;max-height:min(90svh,720px);box-shadow:var(--shadow);padding:24px;padding-bottom:max(24px, env(safe-area-inset-bottom));overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.modal-header h2{font-size:18px}.modal-close{color:var(--text-muted);border-radius:var(--radius);background:0 0;border:none;justify-content:center;align-items:center;width:40px;height:40px;font-size:18px;line-height:1;display:flex}.modal-close:hover{background:var(--surface-2);color:var(--text-h)}:is(.modal-box:has(.tc-columns),.modal-box:has(.cam-body)){max-width:min(760px,100vw - 32px)}.modal-box:has(.nb-layout){max-width:min(920px,100vw - 32px)}.modal-box:has(.imp-body){max-width:min(540px,100vw - 32px)}.cp-panel{-webkit-user-select:none;user-select:none;flex-direction:column;gap:10px;width:264px;display:flex}.cp-tabs{width:100%}.cp-tabs button{flex:1;justify-content:center}.cp-grid{flex-direction:column;gap:3px;display:flex}.cp-grid-row{gap:3px;display:flex}.cp-grid-cell{aspect-ratio:1;cursor:pointer;border:1px solid #00000014;border-radius:4px;flex:1;min-width:0;padding:0}.cp-grid-cell.selected{outline:2px solid var(--tb-active);outline-offset:1px}.cp-spectrum-wrap{flex-direction:column;gap:10px;display:flex}.cp-spectrum{cursor:crosshair;touch-action:none;border-radius:8px;height:150px;position:relative}.cp-spectrum-cursor{pointer-events:none;border:2px solid #fff;border-radius:50%;width:16px;height:16px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #0006}.cp-hue{appearance:none;background:linear-gradient(90deg,red,#ff0,#0f0,#0ff,#00f,#f0f,red);border-radius:999px;width:100%;height:14px}.cp-hue::-webkit-slider-thumb{appearance:none;background:#fff;border:1px solid #0000004d;border-radius:50%;width:18px;height:18px;box-shadow:0 1px 3px #0000004d}.cp-sliders{flex-direction:column;gap:8px;display:flex}.cp-slider-row{align-items:center;gap:8px;font-size:12px;display:flex}.cp-slider-row span{width:14px;color:var(--fm-text-muted)}.cp-slider-row b{text-align:right;font-variant-numeric:tabular-nums;width:28px;font-weight:500}.cp-slider-row input[type=range]{appearance:none;border-radius:999px;flex:1;height:10px}.cp-slider-r{background:linear-gradient(90deg,#000,red)}.cp-slider-g{background:linear-gradient(90deg,#000,#0f0)}.cp-slider-b{background:linear-gradient(90deg,#000,#00f)}.cp-slider-row input[type=range]::-webkit-slider-thumb{appearance:none;background:#fff;border:1px solid #0000004d;border-radius:50%;width:16px;height:16px}.cp-footer{border-top:1px solid var(--fm-border);align-items:center;gap:6px;padding-top:8px;display:flex}.cp-eyedropper{border:1px solid var(--fm-border);width:30px;height:30px;color:var(--fm-text);background:0 0;border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex}.cp-eyedropper:hover{background:var(--tb-hover)}.cp-preview{border:1px solid #0000001f;border-radius:8px;flex-shrink:0;width:28px;height:28px}.cp-hex{border:1px solid var(--fm-border);min-width:0;height:30px;color:var(--fm-text);background:0 0;border-radius:8px;flex:1;padding:0 8px;font-family:monospace;font-size:12px}.cp-add{background:var(--tb-active);height:30px;color:var(--on-accent);white-space:nowrap;border:none;border-radius:8px;padding:0 8px;font-size:12px}.nb-layout{grid-template-columns:1fr 220px;align-items:start;gap:24px;display:grid}.nb-fields{min-width:0}.nb-preview{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);flex-direction:column;align-items:center;padding:14px;display:flex;position:sticky;top:0}.nb-preview-title{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);align-self:flex-start;margin-bottom:10px;font-size:11px;font-weight:700}.nb-cover-preview{aspect-ratio:4/5;width:120px;box-shadow:var(--shadow);border-radius:6px 10px 10px 6px;position:relative}.nb-cover-preview-spine{background:#0000002e;border-radius:6px 0 0 6px;width:8px;position:absolute;top:0;bottom:0;left:0}.nb-cover-preview-icons{filter:drop-shadow(0 1px 2px #00000040);flex-wrap:wrap;place-content:center;align-items:center;gap:2px;padding:10px;font-size:22px;display:flex;position:absolute;inset:0}.nb-cover-preview-name{font-family:var(--font-display);color:var(--text-h);text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:100%;margin-top:10px;font-size:13px;font-weight:600;overflow:hidden}.nb-paper-big-preview{border:1px solid var(--border);background:var(--paper);border-radius:8px;width:100%;margin-top:18px;overflow:hidden}.nb-paper-big-preview img{width:100%;height:auto;display:block}.nb-paper-big-label{color:var(--text-h);text-align:center;margin-top:8px;font-size:13px;font-weight:600}.nb-paper-big-hint{color:var(--text-muted);text-align:center;margin-top:2px;font-size:11px}@media (width<=640px){.nb-layout{grid-template-columns:1fr}.nb-preview{position:static}}.nb-field{margin-bottom:18px}.nb-field>label{color:var(--text-muted);margin-bottom:8px;font-size:13px;display:block}.nb-field input[type=text]{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);outline:none;width:100%;min-height:46px;padding:12px 14px;font-size:16px}.nb-field input[type=text]:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}.nb-icons{flex-wrap:wrap;gap:6px;display:flex}.nb-icon{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);width:40px;height:40px;color:var(--text-muted);justify-content:center;align-items:center;font-size:20px;line-height:1;display:flex}.nb-icon.selected{border-color:var(--accent);background:var(--accent-bg)}.nb-swatches{flex-wrap:wrap;gap:8px;display:flex}.nb-swatch{border:2px solid var(--surface);width:32px;height:32px;box-shadow:0 0 0 1px var(--border);border-radius:50%;padding:0}.nb-swatch.selected{box-shadow:0 0 0 2px var(--accent);transform:scale(1.08)}.nb-swatch-custom{border:2px solid var(--surface);justify-content:center;align-items:center;font-size:14px;display:flex}.nb-rgb-picker{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);margin-top:10px;padding:12px}.nb-rgb-picker .cp-panel{width:100%}.nb-icons-selected{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:8px;display:flex}.nb-icon-chip{border:1px solid var(--border);background:var(--surface-2);border-radius:999px;align-items:center;gap:4px;padding:4px 8px;font-size:14px;display:inline-flex}.nb-icon-chip-x{color:var(--text-muted);font-size:10px}.nb-icons-clear{color:var(--text-muted);border:1px dashed var(--border);background:0 0;border-radius:999px;padding:4px 8px;font-size:12px}.nb-icon:disabled{opacity:.35;cursor:not-allowed}@media (pointer:coarse){.nb-swatch{width:40px;height:40px}.nb-icon{width:46px;height:46px;font-size:22px}}.nb-paper-groups{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);-webkit-overflow-scrolling:touch;overscroll-behavior:contain;max-height:320px;padding:10px;overflow-y:auto}.nb-paper-group+.nb-paper-group{margin-top:14px}.nb-paper-group-label{z-index:1;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);background:var(--surface-2);margin:-2px -4px 8px;padding:4px;font-size:11px;font-weight:700;position:sticky;top:-10px}.nb-paper-options{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.nb-paper-option{border:2px solid var(--border);background:var(--bg);color:var(--text-muted);border-radius:8px;flex-direction:column;align-items:center;gap:6px;padding:6px;font-size:11px;line-height:1.25;display:flex}.nb-paper-option.selected{border-color:var(--accent);color:var(--text-h)}.nb-paper-preview{background:var(--paper);border-radius:4px;justify-content:center;align-items:center;width:100%;height:76px;display:flex;overflow:hidden}.nb-paper-preview img{object-fit:contain;max-width:100%;max-height:100%;display:block}.nb-paper-label{text-align:center;align-items:center;min-height:26px;display:flex}@media (width<=520px){.nb-paper-options{grid-template-columns:repeat(3,1fr)}}.nb-error{color:var(--danger);margin-bottom:12px;font-size:13px}.nb-submit{background:var(--accent);width:100%;min-height:48px;color:var(--accent-contrast);border-radius:var(--radius);border:none;padding:13px;font-weight:600}.nb-submit:hover:not(:disabled){background:var(--accent-hover)}.nb-submit:disabled{opacity:.6;cursor:not-allowed}.imp-body{flex-direction:column;gap:16px;display:flex}.imp-dropzone{border:1.5px dashed var(--border);border-radius:var(--radius);background:var(--surface-2);cursor:pointer;outline:none;padding:22px 18px;transition:border-color .15s,background .15s;position:relative}.imp-dropzone:hover,.imp-dropzone:focus-visible{border-color:var(--accent)}.imp-dropzone.over{border-color:var(--accent);background:var(--accent-bg)}.imp-dropzone.has-file{border-style:solid;padding:14px 16px}.imp-dropzone.disabled{cursor:default;opacity:.75}.imp-dropzone input{display:none}.imp-dropzone-empty{text-align:center}.imp-dropzone-icon{margin-bottom:8px;font-size:30px;line-height:1}.imp-dropzone-title{color:var(--text-h);font-size:14px;font-weight:600}.imp-dropzone-hint{color:var(--text-muted);margin-top:4px;font-size:12px}.imp-file{align-items:center;gap:12px;min-width:0;display:flex}.imp-file-badge{border-radius:var(--radius-sm);letter-spacing:.04em;color:var(--on-accent);flex-shrink:0;padding:6px 9px;font-size:12px;font-weight:700}.imp-file-badge.pdf{background:var(--danger)}.imp-file-badge.word{background:var(--info)}.imp-file-info{flex:1;min-width:0}.imp-file-name{color:var(--text-h);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.imp-file-meta{color:var(--text-muted);margin-top:2px;font-size:12px}.imp-file-change{color:var(--accent-text);flex-shrink:0;font-size:12px;font-weight:600}.imp-warning{border-radius:var(--radius-sm);background:var(--warning-bg);color:var(--warning-text);margin:-6px 0 0;padding:8px 12px;font-size:13px}.imp-field>label{color:var(--text-muted);margin-bottom:8px;font-size:13px;display:block}.imp-field input[type=text]{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);outline:none;width:100%;min-height:46px;padding:12px 14px;font-size:16px}.imp-field input[type=text]:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}.imp-paper-options{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.imp-paper-option{border:2px solid var(--border);background:var(--bg);color:var(--text-muted);border-radius:8px;flex-direction:column;align-items:center;gap:6px;padding:6px;font-size:12px;display:flex}.imp-paper-option.selected{border-color:var(--accent);color:var(--text-h)}.imp-paper-option:disabled{opacity:.6}.imp-paper-preview{background:var(--paper);border-radius:4px;justify-content:center;align-items:center;width:100%;height:64px;display:flex;overflow:hidden}.imp-paper-preview img{object-fit:contain;max-width:100%;max-height:100%;display:block}.imp-explain{color:var(--text-muted);margin:-4px 0 0;font-size:12.5px;line-height:1.45}.imp-progress{flex-direction:column;gap:6px;display:flex}.imp-progress-label{color:var(--text);font-size:13px}.imp-progress-bar{background:var(--border);border-radius:999px;height:6px;position:relative;overflow:hidden}.imp-progress-fill{background:var(--accent);border-radius:999px;width:0;height:100%;transition:width .2s}.imp-progress-bar.indeterminate .imp-progress-fill{width:35%;animation:1.1s ease-in-out infinite imp-indeterminate}@keyframes imp-indeterminate{0%{transform:translate(-100%)}to{transform:translate(300%)}}.imp-error{color:var(--danger);margin:0;font-size:13px}.imp-submit{border-radius:var(--radius);background:var(--accent);width:100%;min-height:48px;color:var(--accent-contrast);border:none;padding:13px;font-weight:600}.imp-submit:hover:not(:disabled){background:var(--accent-hover)}.imp-submit:disabled{opacity:.6;cursor:not-allowed}.imp-done{text-align:center;flex-direction:column;align-items:center;gap:12px;display:flex}.imp-done-icon{font-size:36px;line-height:1}.imp-done-title{color:var(--text);margin:0;font-size:14px}.imp-notes{border-radius:var(--radius-sm);background:var(--warning-bg);width:100%;color:var(--warning-text);text-align:left;margin:0;padding:10px 14px 10px 28px;font-size:13px;line-height:1.45}.imp-notes li+li{margin-top:4px}.imp-done .imp-submit{margin-top:6px}@media (width<=420px){.imp-paper-options{grid-template-columns:repeat(2,1fr)}}.share-desc{color:var(--text);margin:0 0 18px;font-size:14px;line-height:1.55}.share-link-row{gap:8px;margin-bottom:14px;display:flex}.share-link{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);min-width:0;min-height:44px;color:var(--text);flex:1;padding:11px 12px;font-size:14px}.share-copy{border-radius:var(--radius);background:var(--accent);min-height:44px;color:var(--accent-contrast);white-space:nowrap;border:none;padding:0 16px;font-weight:600}.share-actions{justify-content:space-between;align-items:center;display:flex}.share-open{color:var(--accent-text);font-size:14px;text-decoration:none}.share-revoke{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-height:40px;color:var(--danger);padding:9px 14px}.share-enable{border-radius:var(--radius);background:var(--accent);width:100%;min-height:48px;color:var(--accent-contrast);border:none;padding:13px;font-weight:600}.share-error{color:var(--danger);margin-top:12px;font-size:13px}.theme-toggle{--idx:0;border:1px solid var(--border);background:var(--surface-2);isolation:isolate;border-radius:999px;grid-auto-columns:1fr;grid-auto-flow:column;gap:2px;padding:3px;display:inline-grid;position:relative}.theme-toggle:before{content:"";background:var(--surface-raised);width:calc(33.3333% - 3.33333px);box-shadow:var(--shadow-sm);transform:translateX(calc(var(--idx) * (100% + 2px)));transition:transform var(--dur-base) var(--ease-spring-soft);z-index:0;border-radius:999px;position:absolute;top:3px;bottom:3px;left:3px}.theme-toggle button{z-index:1;min-height:30px;color:var(--text-muted);white-space:nowrap;background:0 0;border:none;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:13px;display:inline-flex;position:relative}.theme-toggle button:hover{color:var(--text-h)}.theme-toggle button.on{color:var(--accent-text);font-weight:600}.theme-toggle button svg{transition:transform var(--dur-base) var(--ease-spring)}.theme-toggle button.on svg{transform:rotate(-12deg)scale(1.08)}.theme-toggle.compact button{width:34px;padding:0}@media (pointer:coarse){.theme-toggle button{min-height:36px}.theme-toggle.compact button{width:40px}}.empty-state{text-align:center;color:var(--text-muted);animation:rise-in var(--dur-slow) var(--ease-out) both;flex-direction:column;align-items:center;padding:48px 16px;display:flex}.empty-state-icon{margin-bottom:14px;font-size:44px;line-height:1;animation:3.2s ease-in-out infinite float}.empty-state-title{font-family:var(--font-display);color:var(--text-h);font-size:18px;font-weight:600}.empty-state-hint{max-width:320px;margin-top:6px;font-size:14px}.empty-state-action{margin-top:18px}.skeleton{background:linear-gradient(90deg, var(--surface-2) 25%, var(--surface-3) 50%, var(--surface-2) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.4s ease-in-out infinite shimmer}.skeleton-card{width:100%;max-width:170px;animation:fade-in var(--dur-slow) ease both;animation-delay:calc(var(--i,0) * 40ms)}.skeleton-cover{aspect-ratio:4/5;border-radius:6px 10px 10px 6px}.skeleton-line{width:80%;height:12px;margin-top:12px}.skeleton-line.short{width:45%;margin-top:8px}.library-page{min-height:100svh;animation:fade-in var(--dur-base) ease both;flex-direction:column;display:flex}.library-header{padding:14px max(32px, env(safe-area-inset-right)) 14px max(32px, env(safe-area-inset-left));padding-top:max(14px, env(safe-area-inset-top));border-bottom:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-sm);z-index:10;justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.library-logo{font-family:var(--font-display);color:var(--accent-text);letter-spacing:-.02em;font-size:22px;font-weight:700}.library-user{color:var(--text-muted);align-items:center;gap:12px;font-size:14px;display:flex}.library-user button{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--text);padding:8px 14px}.library-user button:hover{border-color:var(--accent);color:var(--accent-text)}.library-body{flex:1;min-height:0;display:flex}.library-sidebar{width:208px;padding:20px 12px;padding-left:max(12px, env(safe-area-inset-left));border-right:1px solid var(--border);background:var(--surface);flex-direction:column;flex-shrink:0;gap:4px;display:flex}.library-nav-item{border-radius:var(--radius);width:100%;color:var(--text);text-align:left;background:0 0;border:none;align-items:center;gap:10px;padding:11px 14px;font-size:15px;display:flex}.library-nav-item:hover{background:var(--surface-2)}.library-nav-item.active{background:var(--accent-bg);color:var(--accent-text);font-weight:600}.library-nav-count{color:var(--text-muted);background:var(--bg);border-radius:999px;margin-left:auto;padding:1px 8px;font-size:12px}.library-main{min-width:0;padding:28px max(28px, env(safe-area-inset-right)) max(28px, env(safe-area-inset-bottom)) 28px;flex:1;overflow-y:auto}.library-controls{flex-wrap:wrap;gap:12px;margin-bottom:24px;display:flex}.library-search{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);outline:none;flex:1;min-width:200px;min-height:44px;padding:10px 14px;font-size:15px}.library-search:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}.library-sort{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-height:44px;color:var(--text);padding:0 12px}.library-view-toggle{border:1px solid var(--border);border-radius:var(--radius);display:flex;overflow:hidden}.library-view-toggle button{background:var(--surface);width:44px;min-height:44px;color:var(--text-muted);border:none;font-size:18px}.library-view-toggle button.active{background:var(--accent);color:var(--accent-contrast)}.library-list{flex-direction:column;gap:8px;max-width:720px;display:flex}@media (width<=720px){.library-sidebar{width:64px;padding:16px 6px}.library-nav-item{flex-direction:column;gap:2px;padding:10px 4px;font-size:11px}.library-nav-count{margin-left:0}.library-main{padding:20px 16px}}.library-toolbar{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.library-toolbar-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}@media (width<=560px){.library-toolbar{flex-wrap:wrap;gap:12px}.library-toolbar-actions{width:100%}.library-toolbar-actions button{flex:1}}.library-import-btn{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-height:44px;color:var(--text);align-items:center;gap:6px;padding:11px 16px;font-weight:600;display:inline-flex}.library-import-btn:hover{border-color:var(--accent);color:var(--accent-text)}.library-drop-error{align-items:center;gap:8px;margin:-8px 0 16px;display:flex}.library-drop-error-close{color:inherit;border-radius:var(--radius-sm);background:0 0;border:none;padding:4px 6px;font-size:12px}.library-drop-error-close:hover{background:var(--surface-2)}.library-drop-overlay{z-index:90;background:color-mix(in srgb, var(--accent) 18%, transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);pointer-events:none;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.library-drop-card{border:2px dashed var(--accent);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow);text-align:center;padding:28px 36px}.library-drop-icon{margin-bottom:10px;font-size:40px;line-height:1}.library-drop-title{color:var(--text-h);font-size:17px;font-weight:600}.library-drop-hint{color:var(--text-muted);margin-top:4px;font-size:13px}.library-new-btn{border-radius:var(--radius);background:var(--accent);min-height:44px;color:var(--accent-contrast);box-shadow:var(--shadow-sm);border:none;padding:11px 20px;font-weight:600}.library-new-btn:hover{background:var(--accent-hover);box-shadow:var(--shadow)}.library-status{color:var(--text-muted)}.library-status.error{color:var(--danger)}.library-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));justify-items:center;gap:28px 24px;display:grid}.library-item{width:100%;max-width:170px}.library-item-row{width:100%}.library-grid.is-refreshing,.library-list.is-refreshing{opacity:.6;transition:opacity var(--dur-base) ease;pointer-events:none}@media (width<=640px){.library-user>span{display:none}.library-main{padding:20px 16px}.library-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:22px 16px}}.editor-layout{flex-direction:column;height:100svh;display:flex}.editor-topbar{padding:0 max(10px, env(safe-area-inset-right)) 0 max(10px, env(safe-area-inset-left));padding-top:env(safe-area-inset-top);border-bottom:1px solid var(--tb-border);background:var(--tb-bg);z-index:40;flex-shrink:0;align-items:center;gap:8px;display:flex;position:relative}.editor-save-slot{text-align:right;flex-shrink:0;min-width:70px;font-size:12px}.editor-save-slot .save-indicator:not(.saved):not(.error){color:var(--tb-icon-dim)}.editor-save-slot .save-retry-btn{color:var(--tb-icon)}.editor-layout.immersive .editor-topbar,.editor-layout.immersive .editor-bottombar,.editor-layout.immersive .page-sidebar-slot{display:none}.editor-immersive-exit{top:max(8px, env(safe-area-inset-top));z-index:50;border:1px solid var(--fm-border);background:var(--fm-bg);color:var(--fm-text);box-shadow:var(--fm-shadow);opacity:.9;border-radius:999px;padding:6px 16px;font-size:13px;position:fixed;left:50%;transform:translate(-50%)}.editor-immersive-exit:hover{opacity:1}.editor-body{flex:1;min-height:0;display:flex;position:relative}.editor-main{flex:1;min-width:0;display:flex;position:relative}.editor-overlays{pointer-events:none;z-index:30;position:absolute;inset:0}.editor-overlays>*{pointer-events:auto}.editor-canvas-area{padding:64px 32px 32px;padding-bottom:max(32px, env(safe-area-inset-bottom));background:var(--bg);background-image:radial-gradient(var(--border) .5px, transparent .5px);background-size:22px 22px;flex-direction:column;flex:1;align-items:center;display:flex;overflow:auto}.editor-bottombar{z-index:40;flex-shrink:0}@media (width<=820px){.editor-canvas-area{padding:60px 16px 16px;padding-bottom:max(16px, env(safe-area-inset-bottom))}}@media (width<=480px){.editor-topbar{padding-left:max(4px, env(safe-area-inset-left));padding-right:max(4px, env(safe-area-inset-right))}.editor-save-slot{min-width:0}.editor-canvas-area{padding:12px 12px 72px}.has-bottom-toolbar .fm-dock-bottom{bottom:8px}}.text-box-layer{cursor:text;width:100%;height:100%;position:absolute;top:0;left:0}.text-box-static{white-space:pre-wrap;word-break:break-word;cursor:move;touch-action:none;outline:1px dashed #0000;font-family:system-ui,sans-serif;line-height:1.3;position:absolute}.text-box-static.selected{outline-color:var(--accent)}.text-box-static.text-box-link{cursor:pointer;text-decoration:underline;color:var(--accent)!important}.text-box-resize-handle{background:var(--accent);border:2px solid var(--paper);cursor:ew-resize;touch-action:none;border-radius:4px;width:12px;height:26px;position:absolute;top:50%;right:-6px;transform:translateY(-50%);box-shadow:0 1px 3px #00000040}.text-box-marquee{border:1.5px dashed var(--accent);background:var(--info-bg);pointer-events:none;border-radius:4px;position:absolute}.text-box-editing{border:1px dashed var(--accent);resize:none;background:#ffffffe6;outline:none;min-height:1.6em;padding:2px;font-family:system-ui,sans-serif;line-height:1.3;position:absolute;overflow:hidden}.image-layer{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.image-box{pointer-events:none;outline:1px dashed #0000;position:absolute}.image-box.interactive{cursor:move;pointer-events:auto;touch-action:none}.image-box.selected{outline-color:var(--accent)}.image-box.locked.interactive{cursor:default}.image-box.locked.selected{outline-style:solid;outline-color:var(--text-muted)}.image-lock-btn{border:1px solid var(--border);background:var(--surface);width:24px;height:24px;box-shadow:var(--shadow);cursor:pointer;touch-action:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:12px;line-height:1;display:flex;position:absolute;top:-12px;right:-12px}.image-box img{object-fit:fill;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%}.image-resize-handle{background:var(--accent);border:2px solid var(--paper);cursor:nwse-resize;touch-action:none;border-radius:50%;width:12px;height:12px;position:absolute;bottom:-6px;right:-6px}.image-crop-btn{right:16px}.file-attach-layer{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.file-attach-box{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow,0 1px 3px #0000001f);pointer-events:none;border-radius:10px;outline:1px dashed #0000;align-items:center;gap:10px;padding:0 12px;display:flex;position:absolute;overflow:hidden}.file-attach-box.interactive{cursor:pointer;pointer-events:auto;touch-action:none}.file-attach-box.selected{outline-color:var(--accent)}.file-attach-box.locked.interactive{cursor:default}.file-attach-box.locked.selected{outline-style:solid;outline-color:var(--text-muted)}.file-attach-icon{-webkit-user-select:none;user-select:none;flex-shrink:0;font-size:22px;line-height:1}.file-attach-info{flex-direction:column;gap:2px;min-width:0;display:flex}.file-attach-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.file-attach-kind{color:var(--text-muted);font-size:11px}.file-attach-lock-btn{border:1px solid var(--border);background:var(--surface);width:24px;height:24px;box-shadow:var(--shadow);cursor:pointer;touch-action:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:12px;line-height:1;display:flex;position:absolute;top:-12px;right:-12px}.table-layer{z-index:5;pointer-events:none;position:absolute;inset:0}.table-box{background:var(--surface);touch-action:none;outline:1px solid #0000;position:absolute}.table-box.selected{outline:1.5px solid var(--accent)}.table-grid{border-top:1px solid var(--border);border-left:1px solid var(--border);box-sizing:border-box;width:100%;height:100%;display:grid}.table-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);white-space:pre-wrap;word-break:break-word;box-sizing:border-box;padding:4px 6px;line-height:1.3;overflow:hidden}textarea.table-cell.editing{border:1.5px solid var(--accent);background:var(--surface);color:inherit;font-family:var(--sans);resize:none;outline:none}.table-grip{background:var(--accent);border:2px solid var(--surface);cursor:move;touch-action:none;border-radius:50%;width:20px;height:20px;position:absolute;top:-11px;left:-11px}.table-tools{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);white-space:nowrap;gap:4px;padding:4px;display:flex;position:absolute;top:-42px;left:0}.table-tools button{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:var(--radius-sm);padding:4px 8px;font-size:12px}.table-tools button:disabled{opacity:.4}.table-tools button.danger{color:var(--danger)}@media (pointer:coarse){.table-grip{width:28px;height:28px;top:-15px;left:-15px}.table-tools button{padding:8px 12px;font-size:14px}}.tape-layer{pointer-events:none;z-index:6;position:absolute;inset:0}.tape-layer.active{pointer-events:auto;cursor:crosshair;touch-action:none}.tape-strip{border-radius:3px;transition:opacity .15s;position:absolute;box-shadow:inset 0 0 0 1px #00000014}.tape-strip.revealed{opacity:.22;outline-offset:-1px;outline:1px dashed #00000059}.tape-draft{opacity:.7;border-radius:3px;outline:1px dashed #0006;position:absolute}.popover{z-index:60;background:var(--fm-bg);color:var(--fm-text);border:1px solid var(--fm-border);box-shadow:var(--fm-shadow);max-width:calc(100vw - 16px);max-height:calc(100vh - 16px);transform-origin:var(--pop-origin,top center);animation:pop-in var(--dur-base) var(--ease-spring-soft) both;border-radius:12px;padding:10px;font-size:13px;position:fixed;overflow:auto}.popover-title{color:var(--fm-text-muted);text-transform:uppercase;letter-spacing:.04em;margin:2px 0 8px;font-size:12px;font-weight:600}.popover-row{justify-content:space-between;align-items:center;gap:12px;min-height:32px;padding:6px 0;display:flex}.popover-row+.popover-row{border-top:1px solid var(--fm-border)}.popover-row>label:not(.switch){cursor:pointer;flex:1;align-items:center;gap:8px;display:flex}.popover-row input[type=range]{width:120px}.popover-hint{color:var(--fm-text-muted);font-size:11px}.segmented{background:var(--tb-hover);border-radius:8px;gap:2px;padding:2px;display:inline-flex}.segmented button{color:var(--fm-text);background:0 0;border:none;border-radius:6px;align-items:center;gap:4px;padding:4px 10px;font-size:12px;display:inline-flex}.segmented button.selected{background:var(--fm-bg);color:var(--accent-text);box-shadow:0 1px 2px #0000001f}.switch{flex-shrink:0;width:38px;height:22px;position:relative}.switch input{opacity:0;width:0;height:0;position:absolute}.switch span{background:var(--border-strong);transition:background var(--dur-base) ease;border-radius:999px;position:absolute;inset:0}.switch span:after{content:"";background:var(--surface-raised);width:18px;height:18px;transition:transform var(--dur-base) var(--ease-spring-soft);border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0000004d}.switch input:checked+span{background:var(--accent)}.switch input:checked+span:after{transform:translate(16px)}.popover-btn{border:1px solid var(--fm-border);width:100%;color:var(--fm-text);text-align:left;background:0 0;border-radius:8px;padding:8px 10px;font-size:13px}.popover-btn:hover{background:var(--tb-hover)}.popover-btn.danger{color:var(--danger)}.popover-btn+.popover-btn{margin-top:6px}.sticky-layer{z-index:7;position:absolute;inset:0}.sticky-layer.creating{cursor:copy}.sticky-note{color:var(--paper-ink);touch-action:none;border-radius:4px;flex-direction:column;display:flex;position:absolute;overflow:hidden;box-shadow:0 3px 10px #0000002e}.sticky-note.active{outline:1.5px solid var(--tb-active)}.sticky-head{cursor:move;background:#0000000f;flex-shrink:0;align-items:center;gap:2px;padding:4px 6px;display:flex}.sticky-colors{flex:1;gap:3px;display:flex}.sticky-color{cursor:pointer;border:1px solid #0000002e;border-radius:50%;width:12px;height:12px;padding:0}.sticky-color.selected{box-shadow:0 0 0 2px #00000059}.sticky-btn{color:#0009;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;display:inline-flex}.sticky-btn:hover{background:#0000001a}.sticky-text{resize:none;width:100%;font:inherit;color:inherit;background:0 0;border:none;outline:none;flex:1;padding:8px 10px;line-height:1.35}.sticky-resize{cursor:nwse-resize;touch-action:none;background:linear-gradient(135deg,#0000 50%,#00000040 50%);width:16px;height:16px;position:absolute;bottom:0;right:0}.sticky-chip{cursor:pointer;touch-action:none;border:none;border-radius:8px;padding:0;position:absolute;box-shadow:0 2px 6px #0003}.sticky-chip:after{content:"";background:#0000001f;border-radius:0 0 6px;width:30%;height:30%;position:absolute;bottom:4px;right:4px}.convert-text-popup{background:var(--surface);border:1px solid var(--border);width:240px;box-shadow:var(--shadow);z-index:25;cursor:default;border-radius:12px;flex-direction:column;gap:8px;margin-top:10px;padding:12px;display:flex;position:absolute;top:100%;left:50%;transform:translate(-50%)}.convert-text-header{color:var(--text-h);font-size:13px;font-weight:600}.convert-text-progress{color:var(--text-muted);flex-direction:column;gap:6px;font-size:12px;display:flex}.convert-text-progress-bar{background:var(--bg);border-radius:3px;height:5px;overflow:hidden}.convert-text-progress-fill{background:var(--accent);height:100%;transition:width .15s ease-out}.convert-text-error{color:var(--danger);margin:0;font-size:12px}.convert-text-textarea{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);resize:vertical;border-radius:8px;padding:8px;font-family:inherit;font-size:13px}.convert-text-actions{gap:8px;display:flex}.convert-text-actions button{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;flex:1;padding:7px;font-size:13px}.convert-text-actions button:hover:not(:disabled){background:var(--bg)}.convert-text-convert{font-weight:600;background:var(--accent)!important;color:var(--accent-contrast)!important;border:none!important}.convert-text-convert:disabled{opacity:.5;cursor:not-allowed}.selection-toolbar{z-index:20;pointer-events:auto;position:absolute;transform:translate(-50%)}.selection-toolbar.above{transform:translate(-50%,calc(-100% - 10px))}.selection-toolbar.below{transform:translate(-50%,10px)}.selection-toolbar-bar{animation:pop-in var(--dur-base) var(--ease-spring-soft) both;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);white-space:nowrap;border-radius:999px;align-items:center;gap:3px;padding:5px;display:flex}.selection-toolbar-bar>*+*{margin-left:1px}.selection-toolbar-swatch-wrap,.selection-toolbar-item-wrap{display:flex;position:relative}.selection-toolbar-swatch{border:2px solid var(--surface);width:26px;height:26px;box-shadow:0 0 0 1px var(--border);border-radius:50%;padding:0}.selection-toolbar-colors{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);z-index:22;border-radius:999px;align-items:center;gap:6px;margin-top:6px;padding:8px;display:flex;position:absolute;top:100%;left:50%;transform:translate(-50%)}.selection-toolbar-color-dot{border:2px solid var(--surface);width:22px;height:22px;box-shadow:0 0 0 1px var(--border);border-radius:50%;padding:0}.selection-toolbar-btn{width:32px;height:32px;color:var(--text);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:inline-flex}.selection-toolbar-btn:hover{background:var(--bg)}.selection-toolbar-btn.danger{color:var(--danger)}.selection-toolbar-text-popover{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);z-index:22;white-space:nowrap;border-radius:12px;align-items:center;gap:6px;margin-top:6px;padding:8px;display:flex;position:absolute;top:100%;left:50%;transform:translate(-50%)}.selection-toolbar-text-popover button{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:6px;padding:5px 8px;font-size:12px}.selection-toolbar-text-popover button.selected{border-color:var(--accent);background:var(--accent-bg);color:var(--accent-text)}.selection-toolbar-more-menu{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);z-index:22;border-radius:8px;min-width:100px;margin-top:6px;position:absolute;top:100%;right:0;overflow:hidden}.selection-toolbar-more-menu button{text-align:left;background:var(--surface);width:100%;color:var(--text);border:none;padding:8px 12px;font-size:13px;display:block}.selection-toolbar-more-menu button:hover:not(:disabled){background:var(--bg)}.selection-toolbar-more-menu button:disabled{opacity:.4;cursor:not-allowed}@media (pointer:coarse){.selection-toolbar-btn,.selection-toolbar-swatch{width:40px;height:40px}}.selection-toolbar-swatch.fill{background-image:linear-gradient(45deg,#ddd 25%,#0000 25% 75%,#ddd 75%),linear-gradient(45deg,#ddd 25%,#0000 25% 75%,#ddd 75%);background-position:0 0,4px 4px;background-size:8px 8px;border-radius:6px}.popover-btn svg{vertical-align:-2px;margin-right:6px}.selection-layer{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.selection-layer.active{pointer-events:auto;cursor:crosshair;touch-action:none}.selection-lasso-svg{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;overflow:visible}.selection-lasso-path{fill:var(--accent-bg);stroke:var(--accent);stroke-width:1.5px;stroke-dasharray:5 4}.selection-frame{border:1.5px dashed var(--accent);background:var(--accent-bg);cursor:move;pointer-events:none;position:absolute}.selection-handle,.selection-endpoint{background:var(--paper);border:2px solid var(--accent);pointer-events:auto;touch-action:none;border-radius:50%;width:12px;height:12px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 1px 3px #00000040}.selection-endpoint{cursor:move;width:14px;height:14px}.selection-handle-n{cursor:ns-resize;top:0;left:50%}.selection-handle-s{cursor:ns-resize;top:100%;left:50%}.selection-handle-e{cursor:ew-resize;top:50%;left:100%}.selection-handle-w{cursor:ew-resize;top:50%;left:0}.selection-handle-ne{cursor:nesw-resize;top:0;left:100%}.selection-handle-nw{cursor:nwse-resize;top:0;left:0}.selection-handle-se{cursor:nwse-resize;top:100%;left:100%}.selection-handle-sw{cursor:nesw-resize;top:100%;left:0}@media (pointer:coarse){.selection-handle,.selection-endpoint{width:18px;height:18px}}.ruler-overlay{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.ruler-bar{pointer-events:none;background:color-mix(in srgb, var(--warning) 30%, transparent);border:1px solid color-mix(in srgb, var(--warning-text) 65%, transparent);border-radius:6px;position:absolute}.ruler-move-handle,.ruler-rotate-handle{background:var(--accent);border:2px solid var(--paper);pointer-events:auto;touch-action:none;border-radius:50%;width:18px;height:18px;margin:-9px;position:absolute}.ruler-move-handle{cursor:move}.ruler-rotate-handle{cursor:grab}.zw-rect{border:2px solid var(--tb-active);background:color-mix(in srgb, var(--accent) 6%, transparent);cursor:move;z-index:12;touch-action:none;box-sizing:border-box;position:absolute}.zw-handle{background:var(--paper);border:2px solid var(--tb-active);touch-action:none;border-radius:50%;width:12px;height:12px;position:absolute}.zw-n{cursor:ns-resize;top:-7px;left:50%;transform:translate(-50%)}.zw-s{cursor:ns-resize;bottom:-7px;left:50%;transform:translate(-50%)}.zw-e{cursor:ew-resize;top:50%;right:-7px;transform:translateY(-50%)}.zw-w{cursor:ew-resize;top:50%;left:-7px;transform:translateY(-50%)}.zw-ne{cursor:nesw-resize;top:-7px;right:-7px}.zw-nw{cursor:nwse-resize;top:-7px;left:-7px}.zw-se{cursor:nwse-resize;bottom:-7px;right:-7px}.zw-sw{cursor:nesw-resize;bottom:-7px;left:-7px}.page-wrapper{box-shadow:var(--shadow);background:var(--paper);flex-shrink:0;position:relative}.page-layer{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.page-layer-live{pointer-events:auto;touch-action:none}.page-layer-pan{cursor:grab}.page-layer-pan:active{cursor:grabbing}.scribble-erase-badge{background:var(--text-h);color:var(--surface);box-shadow:var(--shadow-sm);pointer-events:none;white-space:nowrap;border-radius:999px;padding:5px 10px;font-size:12px;animation:.8s ease-out forwards scribble-badge-fade;position:absolute;transform:translate(-50%,-120%)}@keyframes scribble-badge-fade{0%{opacity:0;transform:translate(-50%,-100%)}15%{opacity:1;transform:translate(-50%,-130%)}75%{opacity:1}to{opacity:0;transform:translate(-50%,-150%)}}.page-layer-eyedropper{cursor:crosshair}.page-layer-capture{z-index:50}.navbar{align-items:center;gap:8px;width:100%;min-width:0;height:48px;display:flex}.nav-left,.nav-right{flex-shrink:0;align-items:center;gap:2px;display:flex}.nav-left{flex:1 1 0;min-width:0}.nav-right{flex:1 1 0;justify-content:flex-end}.nav-center{flex:0 auto;justify-content:center;min-width:0;display:flex;position:relative}.nav-tools{scrollbar-width:none;-webkit-overflow-scrolling:touch;align-items:center;gap:2px;min-width:0;padding:0 4px;display:flex;overflow-x:auto}.nav-tools::-webkit-scrollbar{display:none}.nav-title{color:var(--tb-icon-dim);text-overflow:ellipsis;white-space:nowrap;min-width:0;margin-left:6px;font-size:13px;overflow:hidden}.nav-btn{width:36px;height:36px;color:var(--tb-icon);background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;text-decoration:none;display:inline-flex}.nav-btn:hover:not(:disabled){background:var(--tb-hover)}.nav-btn:disabled{opacity:.3;cursor:not-allowed}.nav-btn.active-soft{background:var(--tb-hover);color:var(--tb-active)}.nav-tool{width:36px;height:36px;color:var(--tb-icon);background:0 0;border:none;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.nav-tool:hover{background:var(--tb-hover)}.nav-tool.active{background:var(--tb-active);color:var(--tb-active-contrast)}.nav-tool.active:not(.nav-tool-toggle){background:0 0}.nav-tool-indicator{background:var(--tb-active);z-index:0;border-radius:9px;position:absolute;inset:0}.nav-tool-icon{z-index:1;justify-content:center;align-items:center;display:inline-flex;position:relative}.nav-tool.active .nav-tool-icon{animation:tool-pop var(--dur-base) var(--ease-out)}.nav-tool-more{width:24px;color:var(--tb-icon-dim)}.nav-tool-more.open{background:var(--tb-hover)}.nav-divider{background:var(--tb-divider);flex-shrink:0;width:1px;height:22px;margin:0 4px}.toolbar-menu{position:relative}.toolbar-menu-trigger{height:34px;color:var(--tb-icon);background:0 0;border:none;border-radius:999px;align-items:center;gap:5px;padding:0 9px;display:inline-flex}.toolbar-menu-trigger:hover,.toolbar-menu-trigger.open{background:var(--tb-hover)}.toolbar-menu-trigger.active{color:var(--tb-active-contrast);background:var(--tb-active)}.toolbar-menu-label{white-space:nowrap;font-size:13px}.toolbar-menu-caret{opacity:.7}.toolbar-menu-list{background:var(--fm-bg);color:var(--fm-text);border:1px solid var(--fm-border);box-shadow:var(--fm-shadow);z-index:70;border-radius:12px;min-width:220px;max-height:calc(100vh - 80px);margin-top:6px;padding:5px;position:absolute;top:100%;overflow-y:auto}.toolbar-menu-list.align-left{left:0}.toolbar-menu-list.align-right{right:0}.toolbar-menu-list button{text-align:left;width:100%;color:var(--fm-text);background:0 0;border:none;border-radius:8px;align-items:center;gap:9px;padding:8px 10px;font-size:13px;display:flex}.toolbar-menu-list button:hover:not(:disabled){background:var(--tb-hover)}.toolbar-menu-list button:disabled{opacity:.4;cursor:not-allowed}.toolbar-menu-check{width:14px;color:var(--tb-active);flex:0 0 14px;justify-content:center;align-items:center;display:inline-flex}.toolbar-menu-icon{color:var(--fm-text-muted);align-items:center;display:inline-flex}.toolbar-menu-list button.checked .toolbar-menu-icon{color:var(--tb-active)}.toolbar-menu-text{white-space:nowrap;flex:auto}.toolbar-menu-hint{color:var(--fm-text-muted);white-space:nowrap;font-size:11px}.toolbar-menu-group+.toolbar-menu-group{border-top:1px solid var(--fm-border);margin-top:4px;padding-top:4px}.toolbar-menu-section{letter-spacing:.04em;text-transform:uppercase;color:var(--fm-text-muted);padding:4px 10px 3px;font-size:11px;font-weight:600}.toolbar-text-format{align-items:center;gap:3px;display:flex}.toolbar-text-format>*{flex:none}.toolbar-text-format button,.toolbar-text-align button{width:28px;height:28px;color:var(--fm-text);background:0 0;border:none;border-radius:7px;justify-content:center;align-items:center;font-size:12px;line-height:1;display:inline-flex}.toolbar-text-format button:hover,.toolbar-text-align button:hover{background:var(--tb-hover)}.toolbar-text-format button.selected,.toolbar-text-align button.selected,.toolbar-heading-levels button.selected{background:var(--fm-item-selected);color:var(--accent-text)}.toolbar-text-format select{border:1px solid var(--fm-border);height:28px;color:var(--fm-text);background:0 0;border-radius:7px;max-width:110px;padding:0 4px;font-size:12px}.toolbar-text-align,.toolbar-heading-levels{gap:2px;display:flex}.toolbar-text-format>.toolbar-heading-levels:first-child{border-right:1px solid var(--fm-border);padding-right:4px}.toolbar-text-bg{align-items:center;gap:3px;display:flex}.toolbar-text-bg .toolbar-text-bg-dot{border:1px solid var(--fm-border);cursor:pointer;border-radius:50%;width:18px;min-width:18px;height:18px;padding:0}.toolbar-text-bg .toolbar-text-bg-dot.none{background:var(--fm-bg) linear-gradient(to top left, transparent calc(50% - 1px), var(--danger), transparent calc(50% + 1px))}.toolbar-text-bg .toolbar-text-bg-dot.selected{box-shadow:0 0 0 2px var(--tb-active)}.toolbar-text-link.selected{color:var(--accent-text)}.bottom-toolbar{padding:6px max(8px, env(safe-area-inset-right)) max(6px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left));background:var(--tb-bg);border-top:1px solid var(--tb-border);scrollbar-width:none;-webkit-overflow-scrolling:touch;align-items:center;gap:2px;display:flex;overflow-x:auto}.bottom-toolbar::-webkit-scrollbar{display:none}@media (pointer:coarse){.nav-btn,.nav-tool{width:var(--tap);height:var(--tap)}.navbar{height:52px}.toolbar-menu-list button{padding:12px;font-size:15px}.toolbar-text-format button,.toolbar-text-align button{width:36px;height:36px;font-size:14px}}.save-indicator{color:var(--text-muted);white-space:nowrap;animation:fade-in var(--dur-base) ease both;align-items:center;gap:5px;font-size:13px;display:inline-flex}.save-indicator.saved{color:var(--success-text)}.save-indicator.error{color:var(--danger)}.save-check{flex-shrink:0}.save-check-path{stroke-dasharray:1;stroke-dashoffset:1px;animation:check-draw .35s var(--ease-out) 50ms forwards}.save-retry-btn{color:var(--accent-text);background:0 0;border:none;padding:0;font-size:13px;text-decoration:underline}.page-thumb{border:2px solid var(--border);background:var(--surface);transition:border-color var(--dur-base) ease, box-shadow var(--dur-base) ease, transform var(--dur-base) var(--ease-spring);border-radius:6px;flex-direction:column;align-items:center;gap:4px;padding:4px;display:flex}.page-thumb:hover{border-color:var(--border-strong);transform:translateY(-1px)}.page-thumb.active{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}.page-thumb canvas{border:1px solid var(--paper-edge);background:var(--paper);display:block}.page-thumb-number{color:var(--text-muted);font-size:11px}.page-thumb-tags{cursor:pointer;border-radius:6px;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px;max-width:64px;padding:2px 4px;display:flex}.page-thumb-tags:hover{background:var(--accent-bg)}.page-thumb-tag-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;box-shadow:inset 0 0 0 1px #0000001a}.page-thumb-tags.filtering .page-thumb-tag-dot:not(.hit){opacity:.35}.page-thumb-tag-dot.hit{box-shadow:0 0 0 1.5px var(--surface), 0 0 0 3px var(--accent)}.page-thumb-tag-more{color:var(--text-muted);font-size:9px;line-height:1}.page-sidebar-slot{--page-cols:1;--sidebar-w:calc(var(--page-cols) * 84px + (var(--page-cols) - 1) * 10px + 16px);width:0;transition:width var(--dur-slow) var(--ease-out);flex-shrink:0;overflow:hidden}.page-sidebar-slot.open{width:var(--sidebar-w)}.page-sidebar{width:var(--sidebar-w);border-right:1px solid var(--border);background:var(--surface);grid-template-columns:repeat(var(--page-cols), 1fr);align-content:start;justify-items:center;gap:10px;height:100%;padding:12px 8px;display:grid;overflow-y:auto}.page-sidebar-layout-toggle{grid-column:1/-1;justify-content:center;gap:4px;margin-bottom:2px;display:flex}.page-sidebar-layout-toggle button{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2);width:24px;height:22px;color:var(--text-muted);font-size:11px}.page-sidebar-layout-toggle button.active{border-color:var(--accent);color:var(--text-h);background:var(--accent-bg)}.page-tag-bar{border-bottom:1px solid var(--border);flex-direction:column;grid-column:1/-1;gap:6px;width:100%;padding-bottom:8px;display:flex}.page-tag-bar-head{justify-content:space-between;align-items:center;gap:6px;min-height:18px;display:flex}.page-tag-bar-toggle{color:var(--text-muted);text-align:left;white-space:nowrap;background:0 0;border:none;align-items:center;gap:4px;padding:0;font-size:11px;font-weight:600;display:inline-flex}.page-tag-bar-toggle:hover{color:var(--text-h)}.page-tag-bar-chevron{width:10px;font-size:10px}.page-tag-bar-clear{color:var(--accent-text);white-space:nowrap;background:0 0;border:none;align-items:center;gap:3px;padding:0;font-size:11px;display:inline-flex}.page-tag-bar-clear:hover{text-decoration:underline}.page-sidebar.cols-1 .page-tag-chip{border-radius:6px;width:100%;padding:3px 6px}.page-sidebar.cols-1 .page-tag-chip-count{margin-left:auto;padding-left:4px}.page-sidebar.cols-1 .page-tag-bar-clear-text{display:none}.page-tag-chips{flex-wrap:wrap;gap:4px;display:flex}.page-tag-chip{border:1px solid var(--border);background:var(--surface-2);max-width:100%;color:var(--text);text-align:left;white-space:normal;overflow-wrap:anywhere;border-radius:999px;align-items:flex-start;gap:5px;padding:3px 8px 3px 6px;font-size:11px;line-height:1.3;display:inline-flex}.page-tag-chip:hover{border-color:var(--accent);color:var(--text-h)}.page-tag-chip.active{border-color:var(--accent);background:var(--accent-bg);color:var(--text-h);font-weight:600}.page-tag-chip-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:3px;box-shadow:inset 0 0 0 1px #0000001a}.page-tag-chip-name{min-width:0}.page-tag-chip-count{color:var(--text-muted);flex-shrink:0;font-weight:400}.page-tag-empty{color:var(--text-muted);text-align:center;grid-column:1/-1;padding:12px 4px;font-size:12px;line-height:1.4}.page-add-wrapper{width:100%;position:relative}.page-add-btn{border-radius:var(--radius-sm);border:1px dashed var(--border);background:var(--surface-2);width:100%;color:var(--text-muted);padding:8px 4px;font-size:12px}.page-add-btn:hover{color:var(--text);border-color:var(--accent)}@media (pointer:coarse){.page-sidebar-slot{--sidebar-w:calc(var(--page-cols) * 100px + (var(--page-cols) - 1) * 10px + 16px)}.page-add-btn{padding:12px 6px;font-size:13px}}.page-sidebar-peek{display:none}.page-sidebar-scroll{display:contents}.page-sidebar-backdrop{display:none}@media (width<=480px){.page-sidebar-slot,.page-sidebar-slot.open{width:0;transition:none;overflow:visible}.page-sidebar-backdrop{background:var(--overlay-soft);z-index:39;display:block;position:fixed;inset:0}.page-sidebar{left:0;right:0;bottom:calc(56px + env(safe-area-inset-bottom));border-right:none;border-top:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:auto;height:auto;box-shadow:var(--shadow-lg);z-index:40;visibility:hidden;max-height:min(45vh,320px);transition:transform var(--dur-slow) var(--ease-out), visibility 0s linear var(--dur-slow);flex-direction:column;align-items:stretch;gap:0;padding:0;display:flex;position:fixed;top:auto;overflow:hidden;transform:translateY(110%)}.page-sidebar-slot.open .page-sidebar{visibility:visible;transition-delay:0s;transform:none}.page-sidebar-peek{width:100%;padding:14px max(16px, env(safe-area-inset-right)) 14px max(16px, env(safe-area-inset-left));color:var(--text);text-align:left;background:0 0;border:none;flex-shrink:0;align-items:center;gap:8px;font-size:14px;display:flex}.page-sidebar-peek-icon{color:var(--text-muted);font-size:15px}.page-sidebar-peek-label{flex:1;font-weight:600}.page-sidebar-peek-chevron{color:var(--text-muted);font-size:12px}.page-tag-bar{width:auto;margin:0 max(12px, env(safe-area-inset-right)) 10px max(12px, env(safe-area-inset-left));flex-shrink:0;gap:6px;padding-bottom:8px}.page-tag-bar-toggle,.page-tag-bar-clear{font-size:12px}.page-tag-chips{scrollbar-width:none;flex-wrap:nowrap;gap:6px;padding-bottom:2px;overflow-x:auto}.page-tag-chips::-webkit-scrollbar{display:none}.page-tag-chip{white-space:nowrap;flex-shrink:0;max-width:70vw;padding:5px 10px 5px 8px;font-size:12px}.page-tag-empty{flex:1;align-self:center;padding:8px 12px}.page-sidebar-scroll{padding:0 max(12px, env(safe-area-inset-right)) max(14px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));flex-direction:row;align-items:center;gap:10px;display:flex;overflow-x:auto}.page-sidebar-scroll .page-thumb{flex-shrink:0}.page-add-wrapper{flex-shrink:0;width:auto}.page-add-btn{white-space:nowrap;width:64px}}.page-thumb-wrap{transition:border-color var(--dur-fast) ease, opacity var(--dur-fast) ease;border:2px solid #0000;border-radius:8px}.page-thumb-wrap.dragging{opacity:.55}.page-thumb-wrap.over{border-color:var(--tb-active)}.pdf-import{flex-direction:column;gap:14px;display:flex}.pdf-file-picker{border:1px dashed var(--border);text-align:center;color:var(--text-muted);cursor:pointer;border-radius:8px;padding:20px;font-size:13px;display:block}.pdf-file-picker input{display:none}.pdf-progress{color:var(--text-muted);margin:0;font-size:13px}.pdf-error{color:var(--danger);margin:0;font-size:13px}.pdf-import-btn{background:var(--accent);color:var(--on-accent);border:none;border-radius:8px;padding:11px;font-weight:600}.pdf-import-btn:disabled{opacity:.6;cursor:not-allowed}.ocr-panel-backdrop{background:var(--overlay-soft);z-index:100;justify-content:flex-end;display:flex;position:fixed;inset:0}.ocr-panel{background:var(--surface);width:100%;max-width:380px;height:100%;box-shadow:var(--shadow);flex-direction:column;display:flex}.ocr-panel-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:20px 20px 16px;display:flex}.ocr-panel-header h2{font-size:17px}.ocr-panel-close{color:var(--text-muted);background:0 0;border:none;padding:4px;font-size:16px;line-height:1}.ocr-panel-close:hover{color:var(--text-h)}.ocr-panel-body{flex-direction:column;flex:1;gap:14px;padding:20px;display:flex;overflow-y:auto}.ocr-source-tabs{border:1px solid var(--border);border-radius:8px;display:flex;overflow:hidden}.ocr-source-tabs button{color:var(--text-muted);border-right:1px solid var(--border);background:0 0;flex:1;padding:9px;font-size:13px}.ocr-source-tabs button:last-child{border-right:none}.ocr-source-tabs button.active{background:var(--accent);color:var(--on-accent)}.ocr-source-tabs button:disabled{opacity:.6}.ocr-file-picker{border:1px dashed var(--border);text-align:center;color:var(--text-muted);cursor:pointer;border-radius:8px;padding:16px;font-size:13px;display:block}.ocr-file-picker input{display:none}.ocr-hint{color:var(--text-muted);margin:0;font-size:12px}.ocr-recognize-btn{background:var(--accent);color:var(--on-accent);border:none;border-radius:8px;padding:11px;font-weight:600}.ocr-recognize-btn:disabled{opacity:.6;cursor:not-allowed}.ocr-progress{flex-direction:column;gap:8px;display:flex}.ocr-progress-bar{background:var(--bg);border-radius:3px;height:6px;overflow:hidden}.ocr-progress-fill{background:var(--accent);height:100%;transition:width .15s ease-out}.ocr-progress-row{color:var(--text-muted);justify-content:space-between;align-items:center;font-size:12px;display:flex}.ocr-cancel-btn{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:4px 10px;font-size:12px}.ocr-cancel-btn:hover{background:var(--bg)}.ocr-error{color:var(--danger);margin:0;font-size:13px}.ocr-result{flex-direction:column;gap:10px;display:flex}.ocr-result textarea{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);resize:vertical;border-radius:8px;padding:10px;font-family:inherit;font-size:13px}.ocr-result-actions{gap:8px;display:flex}.ocr-result-actions button{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;flex:1;padding:9px;font-size:13px}.ocr-result-actions button:hover:not(:disabled){background:var(--bg)}.ocr-result-actions button:disabled{opacity:.6;cursor:not-allowed}.ocr-insert-btn{font-weight:600;background:var(--accent)!important;color:var(--on-accent)!important;border:none!important}.outline-panel{top:112px;right:max(16px, env(safe-area-inset-right));transform-origin:100% 0;animation:pop-in var(--dur-base) var(--ease-spring-soft) both;z-index:30;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:248px;max-height:64vh;box-shadow:var(--shadow);padding:8px;position:fixed;overflow-y:auto}.outline-head{font-family:var(--font-display);color:var(--text-h);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:6px 8px 8px;font-weight:600;display:flex}.outline-head button{color:var(--text-muted);border-radius:var(--radius-sm);background:0 0;border:none;width:28px;height:28px;font-size:13px}.outline-head button:hover{background:var(--surface-2)}.outline-empty{color:var(--text-muted);margin:0;padding:12px 8px;font-size:13px;line-height:1.5}.outline-list{margin:6px 0 0;padding:0;list-style:none}.outline-item{border-radius:var(--radius-sm);cursor:pointer;color:var(--text);text-overflow:ellipsis;white-space:nowrap;padding:8px 10px;transition:background .12s;overflow:hidden}.outline-item:hover{background:var(--accent-bg);color:var(--accent-text)}.outline-item.level-1{font-size:15px;font-weight:600}.outline-item.level-2{padding-left:24px;font-size:14px}.outline-item.level-3{color:var(--text-muted);padding-left:38px;font-size:13px}@media (pointer:coarse){.outline-item{padding-top:12px;padding-bottom:12px}}.timekeeper-fab{right:max(20px, env(safe-area-inset-right));bottom:max(20px, env(safe-area-inset-bottom));z-index:40;border:1px solid var(--border);background:var(--surface);width:46px;height:46px;color:var(--text);cursor:pointer;box-shadow:var(--shadow);transition:transform var(--dur-base) var(--ease-spring);border-radius:50%;justify-content:center;align-items:center;font-size:22px;display:flex;position:absolute}.timekeeper-fab:hover{transform:scale(1.08)}.timekeeper-panel{right:max(20px, env(safe-area-inset-right));bottom:max(20px, env(safe-area-inset-bottom));z-index:40;border:1px solid var(--border);background:var(--surface);width:232px;box-shadow:var(--shadow);font-family:var(--sans);-webkit-user-select:none;user-select:none;border-radius:14px;padding:12px;position:absolute}.timekeeper-panel.pomo-focus{border-color:color-mix(in srgb, var(--accent) 55%, var(--border))}.timekeeper-panel.pomo-break{border-color:color-mix(in srgb, var(--accent-2) 55%, var(--border))}.timekeeper-head{justify-content:space-between;align-items:center;gap:6px;margin-bottom:8px;display:flex}.timekeeper-tabs{background:var(--bg);border-radius:8px;gap:2px;padding:2px;display:flex}.timekeeper-tabs button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 6px;font-size:11px}.timekeeper-tabs button.active{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #00000014}.timekeeper-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:4px;font-size:13px;line-height:1}.timekeeper-phase{color:var(--text);justify-content:space-between;align-items:center;margin-bottom:2px;font-size:12px;display:flex}.timekeeper-cycles{color:var(--text-muted);font-size:10px}.timekeeper-display{text-align:center;color:var(--text-h);font-variant-numeric:tabular-nums;letter-spacing:1px;margin:4px 0 10px;font-size:44px;font-weight:600}.timekeeper-set{color:var(--text);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;margin-bottom:10px;font-size:12px;display:flex}.timekeeper-set>button{border:1px solid var(--border);background:var(--bg);width:26px;height:26px;color:var(--text);cursor:pointer;border-radius:6px;font-size:15px}.timekeeper-presets{justify-content:center;gap:4px;width:100%;margin-top:4px;display:flex}.timekeeper-presets button{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;border-radius:6px;flex:1;padding:3px 0;font-size:11px}.timekeeper-presets button:hover{color:var(--text)}.timekeeper-controls{gap:6px;display:flex}.timekeeper-controls button{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:8px;flex:1;padding:7px 0;font-size:12px}.timekeeper-primary{font-weight:600;background:var(--accent)!important;border-color:var(--accent)!important;color:var(--on-accent)!important}.timekeeper-primary:hover{background:var(--accent-hover)!important}@media (width<=480px){.timekeeper-fab,.timekeeper-panel{bottom:calc(70px + max(12px, env(safe-area-inset-bottom)))}}.timekeeper-chip{right:max(20px, env(safe-area-inset-right));bottom:max(20px, env(safe-area-inset-bottom));z-index:40;border:1px solid var(--border);background:var(--surface);color:var(--text);font-variant-numeric:tabular-nums;box-shadow:var(--shadow);cursor:pointer;border-radius:999px;padding:6px 12px;font-size:13px;position:absolute}.timekeeper-chip.running{border-color:var(--tb-active);color:var(--accent-text)}@media (width<=480px){.timekeeper-chip{bottom:calc(70px + max(12px, env(safe-area-inset-bottom)))}}.recording-fab{left:max(20px, env(safe-area-inset-left));bottom:max(20px, env(safe-area-inset-bottom));z-index:40;border:1px solid var(--border);background:var(--surface);width:46px;height:46px;color:var(--text);cursor:pointer;box-shadow:var(--shadow);transition:transform var(--dur-base) var(--ease-spring);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute}.recording-fab:hover{transform:scale(1.08)}.recording-panel{left:max(20px, env(safe-area-inset-left));bottom:max(20px, env(safe-area-inset-bottom));transform-origin:0 100%;animation:pop-in var(--dur-base) var(--ease-spring-soft) both;z-index:40;border:1px solid var(--border);background:var(--surface);width:280px;max-height:60vh;box-shadow:var(--shadow);font-family:var(--sans);border-radius:14px;padding:12px;position:absolute;overflow-y:auto}.recording-head{color:var(--text-h);justify-content:space-between;align-items:center;margin-bottom:8px;font-size:13px;font-weight:600;display:flex}.recording-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:4px;font-size:13px}.recording-error{color:var(--danger);margin:0 0 8px;font-size:12px}.recording-controls{align-items:center;gap:8px;margin-bottom:10px;display:flex}.recording-start-btn{background:var(--accent);color:var(--accent-contrast);border:none;border-radius:8px;flex:1;justify-content:center;align-items:center;gap:6px;padding:9px;font-size:13px;font-weight:600;display:flex}.recording-start-btn:disabled{opacity:.6;cursor:not-allowed}.recording-live-dot{background:var(--danger);border-radius:50%;width:9px;height:9px;animation:1.1s ease-in-out infinite recording-pulse}@keyframes recording-pulse{0%,to{opacity:1}50%{opacity:.35}}.recording-elapsed{font-variant-numeric:tabular-nums;color:var(--text-h);flex:1;font-size:14px}.recording-stop-btn{background:var(--danger);color:var(--on-accent);border:none;border-radius:8px;padding:7px 14px;font-size:12px;font-weight:600}.recording-list{flex-direction:column;gap:10px;display:flex}.recording-empty{color:var(--text-muted);margin:0;font-size:12px}.recording-item{border-bottom:1px solid var(--border);flex-direction:column;gap:6px;padding-bottom:10px;display:flex}.recording-item:last-child{border-bottom:none;padding-bottom:0}.recording-item audio{width:100%;height:32px}.recording-item-meta{color:var(--text-muted);align-items:center;gap:8px;font-size:11px;display:flex}.recording-item-meta button{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:6px;padding:4px 8px;font-size:11px}.recording-transcribe-btn:disabled{opacity:.6;cursor:not-allowed}.recording-delete-btn{margin-left:auto;color:var(--danger)!important}.recording-transcript{color:var(--text);background:var(--bg);white-space:pre-wrap;border-radius:8px;max-height:120px;margin:0;padding:8px;font-size:12px;overflow-y:auto}@media (width<=480px){.recording-fab,.recording-panel{bottom:calc(60px + max(20px, env(safe-area-inset-bottom)));bottom:calc(70px + max(12px, env(safe-area-inset-bottom)))}}.fm{z-index:30;background:var(--fm-bg);color:var(--fm-text);border-radius:var(--fm-radius);box-shadow:var(--fm-shadow);pointer-events:auto;-webkit-user-select:none;user-select:none;max-width:calc(100% - 24px);transition:opacity var(--dur-base) ease, transform var(--dur-base) var(--ease-spring-soft);align-items:center;gap:4px;padding:5px 8px;display:flex;position:absolute}.fm-hidden{opacity:0;pointer-events:none;transform:scale(.96)}.fm-dock-top{top:10px;left:50%;transform:translate(-50%)}.fm-dock-top.fm-hidden{transform:translate(-50%)scale(.96)}.fm-dock-bottom{bottom:12px;left:50%;transform:translate(-50%)}.fm-dock-bottom.fm-hidden{transform:translate(-50%)scale(.96)}.fm-dock-left{top:50%;left:10px;transform:translateY(-50%)}.fm-dock-left.fm-hidden{transform:translateY(-50%)scale(.96)}.fm-dock-right{top:50%;right:10px;transform:translateY(-50%)}.fm-dock-right.fm-hidden{transform:translateY(-50%)scale(.96)}.fm-vertical{flex-direction:column;max-width:none;max-height:calc(100% - 24px);padding:8px 5px}.fm-grip{width:18px;height:30px;color:var(--fm-text-muted);cursor:grab;touch-action:none;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.fm-grip:active{cursor:grabbing}.fm-vertical .fm-grip{width:30px;height:18px;transform:rotate(90deg)}.fm-content{scrollbar-width:none;-webkit-overflow-scrolling:touch;align-items:center;gap:6px;min-width:0;display:flex;overflow:auto hidden}.fm-content::-webkit-scrollbar{display:none}.fm-vertical .fm-content{flex-direction:column;max-height:calc(100vh - 160px);overflow:hidden auto}.fm-group{flex-shrink:0;align-items:center;gap:2px;display:flex}.fm-vertical .fm-group{flex-direction:column}.fm-sep{background:var(--fm-border);flex-shrink:0;width:1px;height:24px;margin:0 3px}.fm-vertical .fm-sep{width:24px;height:1px;margin:3px 0}.fm-btn{width:32px;height:32px;color:var(--fm-text);background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.fm-btn:hover{background:var(--tb-hover)}.fm-btn.selected{background:var(--fm-item-selected);color:var(--accent-text)}.fm-btn:disabled{opacity:.35}.fm-btn.text{gap:4px;width:auto;padding:0 8px;font-size:12px}.fm-size-dot{background:currentColor;border-radius:50%;display:inline-block}.fm-btn.selected .fm-size-dot{background:var(--tb-active)}.fm-color{border:2px solid var(--fm-bg);cursor:pointer;width:24px;height:24px;transition:transform var(--dur-base) var(--ease-spring), box-shadow var(--dur-fast) ease;border-radius:50%;flex-shrink:0;padding:0;box-shadow:0 0 0 1px #00000026}.fm-color:hover{transform:scale(1.08)}.fm-color.selected{box-shadow:0 0 0 2px var(--tb-active);transform:scale(1.12)}.fm-color-add{border:1px dashed var(--fm-text-muted);width:24px;height:24px;color:var(--fm-text-muted);background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.fm-color-add:hover{color:var(--tb-active);border-color:var(--tb-active)}.fm-label{color:var(--fm-text-muted);white-space:nowrap;padding:0 4px;font-size:12px}.fm select,.fm input[type=number]{border:1px solid var(--fm-border);height:28px;color:var(--fm-text);background:0 0;border-radius:8px;padding:0 6px;font-size:12px}.fm-ghost{z-index:200;background:var(--tb-active);color:var(--on-accent);pointer-events:none;box-shadow:var(--fm-shadow);white-space:nowrap;border-radius:999px;padding:6px 10px;font-size:12px;position:fixed;transform:translate(12px,12px)}.fm-dock-preview{z-index:29;pointer-events:none;background:var(--fm-item-selected);border:2px dashed var(--tb-active);border-radius:12px;position:absolute}.fm-dock-preview-top{height:44px;top:6px;left:20%;right:20%}.fm-dock-preview-bottom{height:44px;bottom:6px;left:20%;right:20%}.fm-dock-preview-left{width:44px;top:20%;bottom:20%;left:6px}.fm-dock-preview-right{width:44px;top:20%;bottom:20%;right:6px}.undo-pill{z-index:30;background:var(--fm-bg);box-shadow:var(--fm-shadow);pointer-events:auto;border-radius:999px;gap:2px;padding:3px;display:flex;position:absolute;top:10px}.undo-pill-left{left:12px}.undo-pill-right{right:12px}.undo-pill button{width:32px;height:32px;color:var(--fm-text);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex}.undo-pill button:hover:not(:disabled){background:var(--tb-hover)}.undo-pill button:disabled{opacity:.3;cursor:not-allowed}@media (pointer:coarse){.fm-btn,.undo-pill button{width:40px;height:40px}.fm-color,.fm-color-add{width:30px;height:30px}}.el-panel{flex-direction:column;gap:8px;width:min(420px,100vw - 60px);max-height:260px;display:flex}.el-tabs{scrollbar-width:none;flex-shrink:0;gap:4px;display:flex;overflow-x:auto}.el-tabs::-webkit-scrollbar{display:none}.el-tab{border:1px solid var(--fm-border);color:var(--fm-text);white-space:nowrap;background:0 0;border-radius:999px;align-items:center;gap:3px;padding:4px 10px;font-size:12px;display:inline-flex}.el-tab.selected{background:var(--fm-item-selected);border-color:var(--tb-active);color:var(--accent-text)}.el-tab-add{color:var(--fm-text-muted);border-style:dashed}.el-grid{grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:6px;min-height:70px;padding-right:2px;display:grid;overflow-y:auto}.el-item{aspect-ratio:1;border:1px solid var(--fm-border);background:repeating-conic-gradient(#0000000a 0 25%, transparent 0 50%) 0 0 / 12px 12px;touch-action:none;border-radius:8px;justify-content:center;align-items:center;padding:4px;display:flex;overflow:hidden}.el-item:hover{border-color:var(--tb-active)}.el-item img{object-fit:contain;pointer-events:none;max-width:100%;max-height:100%}.el-item-add{color:var(--fm-text-muted);background:0 0;border-style:dashed;flex-direction:column;gap:2px;font-size:10px}.el-empty{color:var(--fm-text-muted);grid-column:1/-1;margin:8px 0;font-size:12px}.el-error{color:var(--danger);margin:0;font-size:12px}.el-confirm{border-top:1px solid var(--fm-border);align-items:center;gap:6px;padding-top:6px;font-size:12px;display:flex}.search-panel{transform-origin:0 0;animation:pop-in var(--dur-base) var(--ease-spring-soft) both;background:var(--fm-bg);width:min(360px,100vw - 24px);max-height:min(60vh,480px);color:var(--fm-text);border:1px solid var(--fm-border);box-shadow:var(--fm-shadow);z-index:45;pointer-events:auto;border-radius:12px;flex-direction:column;display:flex;position:absolute;top:10px;left:12px}.search-head{border-bottom:1px solid var(--fm-border);color:var(--fm-text-muted);align-items:center;gap:8px;padding:8px 10px;display:flex}.search-head input{color:var(--fm-text);background:0 0;border:none;outline:none;flex:1;font-size:14px}.search-close{color:var(--fm-text-muted);background:0 0;border:none;padding:4px;display:inline-flex}.search-status,.search-empty{color:var(--fm-text-muted);padding:8px 12px;font-size:12px}.search-results{margin:0;padding:4px;list-style:none;overflow-y:auto}.search-results button{text-align:left;width:100%;color:var(--fm-text);background:0 0;border:none;border-radius:8px;align-items:baseline;gap:8px;padding:7px 8px;font-size:13px;display:flex}.search-results button:hover{background:var(--tb-hover)}.search-results button.current .search-page{color:var(--accent-text)}.search-page{color:var(--fm-text-muted);flex-shrink:0;min-width:40px;font-size:11px;font-weight:600}.search-snippet{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.zw-panel{animation:rise-in var(--dur-slow) var(--ease-out) both;z-index:35;background:var(--fm-bg);color:var(--fm-text);border-top:2px solid var(--tb-active);box-shadow:var(--shadow-lg);pointer-events:auto;flex-direction:column;display:flex;position:absolute;bottom:0;left:0;right:0}.zw-head{border-bottom:1px solid var(--fm-border);scrollbar-width:none;align-items:center;gap:6px;height:34px;padding:0 10px;font-size:12px;display:flex;overflow-x:auto}.zw-title{color:var(--accent-text);white-space:nowrap;margin-right:4px;font-weight:600}.zw-btn{border:1px solid var(--fm-border);min-width:26px;height:24px;color:var(--fm-text);background:0 0;border-radius:6px;justify-content:center;align-items:center;padding:0 6px;font-size:14px;line-height:1;display:inline-flex}.zw-btn:hover{background:var(--tb-hover)}.zw-close{margin-left:auto}.zw-range{color:var(--fm-text-muted);white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.zw-range input{width:80px}.zw-hint{color:var(--danger);white-space:nowrap}.zw-canvas-wrap{background:var(--paper);width:100%;position:relative;overflow:hidden}.zw-canvas{position:absolute;top:0;left:0}.zw-live{touch-action:none}.tag-editor-chips{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);flex-wrap:wrap;align-items:center;gap:6px;min-height:46px;padding:10px;display:flex}.tag-chip{background:var(--accent-bg);color:var(--text-h);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:5px 6px 5px 10px;font-size:13px;display:inline-flex}.tag-chip-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.tag-chip-x{width:18px;height:18px;color:var(--text-muted);border-radius:50%;justify-content:center;align-items:center;display:flex}.tag-chip-x:hover{color:var(--text-h);background:#00000014}.tag-editor-input{min-width:100px;color:var(--text-h);background:0 0;border:none;outline:none;flex:1;padding:4px 2px;font-size:14px}.tag-editor-suggestions{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.tag-suggestion{border:1px dashed var(--border);color:var(--text-muted);background:0 0;border-radius:999px;align-items:center;gap:5px;padding:5px 10px;font-size:12px;display:inline-flex}.tag-suggestion:hover{border-color:var(--accent);color:var(--text-h)}.tag-editor-hint{color:var(--text-muted);margin-top:12px;font-size:12px}.copy-nb-hint{color:var(--text-muted);font-size:13px}.copy-nb-error{color:var(--danger);font-size:13px}.copy-nb-list{flex-direction:column;gap:6px;max-height:min(50vh,420px);display:flex;overflow-y:auto}.copy-nb-item{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);text-align:left;align-items:center;gap:10px;width:100%;padding:10px;display:flex}.copy-nb-item:hover:not(:disabled){border-color:var(--accent)}.copy-nb-item:disabled{opacity:.6}.copy-nb-swatch{border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;display:flex}.copy-nb-title{min-width:0;color:var(--text-h);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:14px;font-weight:600;overflow:hidden}.copy-nb-status{color:var(--text-muted);flex-shrink:0;font-size:12px}.cam-body{flex-direction:column;gap:10px;min-width:min(520px,100vw - 48px);display:flex}.cam-error{color:var(--danger);margin:0;font-size:13px}.cam-video{background:#000;border-radius:10px;width:100%;max-height:60vh}.cam-preview{-webkit-user-select:none;user-select:none;background:#000;border-radius:10px;width:100%;max-height:60vh;position:relative;overflow:hidden}.cam-preview img{object-fit:contain;width:100%;height:100%;display:block}.cam-crop{border:2px solid var(--tb-active);cursor:move;touch-action:none;position:absolute;box-shadow:0 0 0 9999px #00000073}.cam-crop-handle{border:2px solid var(--tb-active);cursor:nwse-resize;touch-action:none;background:#fff;border-radius:50%;width:16px;height:16px;position:absolute;bottom:-8px;right:-8px}.cam-enhance{align-items:center;gap:6px;font-size:13px;display:flex}.cam-actions{justify-content:flex-end;gap:8px;display:flex}.cam-actions button{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:8px 14px}.cam-actions .cam-primary{background:var(--tb-active);border-color:var(--tb-active);color:var(--on-accent);font-weight:600}.crop-nw{cursor:nwse-resize;inset:-8px auto auto -8px}.crop-ne{cursor:nesw-resize;top:-8px;bottom:auto;right:-8px}.crop-sw{cursor:nesw-resize;bottom:-8px;left:-8px;right:auto}.crop-se{cursor:nwse-resize;bottom:-8px;right:-8px}.tc-columns{grid-template-columns:1fr 1fr;gap:20px;display:grid}@media (width<=640px){.tc-columns{grid-template-columns:1fr}}.tc-heading{margin:0 0 4px;font-size:14px}.tc-hint{color:var(--text-muted);margin:0 0 8px;font-size:12px}.tc-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.tc-row{background:var(--surface-2);-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:8px;align-items:center;gap:8px;padding:6px 8px;display:flex}.tc-row.dragging{opacity:.6}.tc-row.over{border-color:var(--tb-active)}.tc-grip{color:var(--text-muted);display:inline-flex}.tc-icon{color:var(--text);display:inline-flex}.tc-label{flex:1;font-size:13px}.conflict-banner{background:var(--danger-bg);border:1px solid var(--danger);width:100%;max-width:900px;color:var(--text);border-radius:8px;align-items:center;gap:12px;margin-bottom:16px;padding:10px 16px;font-size:14px;display:flex}.conflict-banner button{border:1px solid var(--border);background:var(--surface);color:var(--text);white-space:nowrap;border-radius:6px;padding:6px 12px}.conflict-banner button:hover{background:var(--bg)}.presentation-bar{z-index:46;background:var(--laser);color:var(--on-laser);box-shadow:var(--fm-shadow);pointer-events:auto;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-size:12px;display:flex;position:absolute;top:10px;left:50%;transform:translate(-50%)}.presentation-bar button{color:var(--on-laser);background:0 0;border:1px solid #fff9;border-radius:999px;padding:3px 10px;font-size:12px}.overscroll-hint{background:var(--text-h);color:var(--surface);z-index:46;pointer-events:none;white-space:nowrap;border-radius:999px;padding:6px 14px;font-size:12px;position:absolute;bottom:24px;left:50%;transform:translate(-50%)}.shared-viewer{background:var(--bg);background-image:radial-gradient(var(--border) .5px, transparent .5px);background-size:22px 22px;min-height:100svh}.shared-header{z-index:10;padding:14px max(20px, env(safe-area-inset-right)) 14px max(20px, env(safe-area-inset-left));padding-top:max(14px, env(safe-area-inset-top));background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.shared-title{font-family:var(--font-display);color:var(--text-h);align-items:center;gap:10px;min-width:0;font-size:19px;font-weight:600;display:flex}.shared-title>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.shared-icon{font-size:22px}.shared-badge{color:var(--text-muted);white-space:nowrap;font-size:12px}.shared-pages{padding:28px 16px max(28px, env(safe-area-inset-bottom));flex-direction:column;align-items:center;gap:24px;display:flex}.shared-page{background:var(--paper);width:780px;max-width:100%;height:auto;box-shadow:var(--shadow);border-radius:4px;display:block}.shared-footer{text-align:center;padding:8px 16px 40px}.shared-home{color:var(--accent-text);font-weight:600;text-decoration:none}.shared-msg{text-align:center;min-height:100svh;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;display:flex}
