@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/jetbrains-mono-latin-300-normal-DuMDZskh.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-300-normal-BYcAiAh2.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/jetbrains-mono-latin-600-normal-C8RAYTDA.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-600-normal-BfsvjouI.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/jetbrains-mono-latin-700-normal-BYuf6tUa.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-700-normal-D3wTyLJW.woff)format("woff")}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/fraunces-latin-300-normal-CTWA4xHV.woff2)format("woff2"),url(/assets/fraunces-latin-300-normal-BJaf1pbq.woff)format("woff")}@font-face{font-family:Fraunces;font-style:italic;font-display:swap;font-weight:300;src:url(/assets/fraunces-latin-300-italic-Ck6y_GI5.woff2)format("woff2"),url(/assets/fraunces-latin-300-italic-BHRYWiFF.woff)format("woff")}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fraunces-latin-400-normal-6IfK1voy.woff2)format("woff2"),url(/assets/fraunces-latin-400-normal-NUPT2cO8.woff)format("woff")}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/fraunces-latin-700-normal-CEOla-zY.woff2)format("woff2"),url(/assets/fraunces-latin-700-normal-DTjk5d1Q.woff)format("woff")}html{font-size:var(--base-font-size,13px)}:root{--fs-9:calc(9rem / 13);--fs-10:calc(10rem / 13);--fs-11:calc(11rem / 13);--fs-12:calc(12rem / 13);--fs-13:1rem;--fs-14:calc(14rem / 13);--fs-15:calc(15rem / 13);--fs-16:calc(16rem / 13);--fs-18:calc(18rem / 13);--fs-20:calc(20rem / 13);--fs-22:calc(22rem / 13);--fs-24:calc(24rem / 13);--fs-28:calc(28rem / 13);--fs-32:calc(32rem / 13);--fs-36:calc(36rem / 13);--fs-48:calc(48rem / 13);--fs-64:calc(64rem / 13);--text-caption:var(--fs-11);--text-meta:var(--fs-12);--text-body:var(--fs-13);--text-lead:var(--fs-15);--text-title:var(--fs-18);--text-heading:var(--fs-24);--text-display:var(--fs-32);--dur-1:.12s;--dur-2:.2s;--dur-3:.32s;--dur-flip:.42s;--ease-out:cubic-bezier(.2, .8, .2, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--ease-in:cubic-bezier(.4, 0, 1, 1);--bottom-nav-h:56px;--app-height:100dvh;--z-banner:50;--z-nav:100;--z-popover:900;--z-dialog:1000;--z-toast:2000}@media (prefers-reduced-motion:reduce){:root:not([data-motion=full]){--dur-1:1ms;--dur-2:80ms;--dur-3:.12s;--dur-flip:0s}}:root[data-motion=reduced]{--dur-1:1ms;--dur-2:80ms;--dur-3:.12s;--dur-flip:0s}@keyframes q-spin{to{transform:rotate(360deg)}}@keyframes q-fade-in{0%{opacity:0}to{opacity:1}}@keyframes q-fade-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes q-scale-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}@keyframes q-sheet-up{0%{transform:translateY(100%)}to{transform:none}}@keyframes q-pulse{0%,to{opacity:1}50%{opacity:.45}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes quipwa-spin{to{transform:rotate(360deg)}}@keyframes quipwa-pulse{0%,to{opacity:1}50%{opacity:.45}}@keyframes quipwa-fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes quipwa-scale-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes panel-in{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:none}}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.anim-fade-in{animation:q-fade-up var(--dur-2) var(--ease-out) both}.anim-scale-in{animation:q-scale-in var(--dur-2) var(--ease-out) both}.q-spinner{border:2px solid var(--c-border);border-top-color:var(--c-green);border-radius:50%;width:24px;height:24px;animation:.8s linear infinite q-spin}:root{--loading-delay:.18s}.q-loading{justify-content:center;align-items:center;gap:var(--s-3);height:100%;min-height:70vh;color:var(--c-cream-muted);font-size:var(--text-body);font-family:var(--font-mono);flex:1;display:flex}.q-loading--inline{height:auto;min-height:0;padding:var(--s-4);justify-content:flex-start}.q-loading,.q-delayed{animation:q-fade-in var(--dur-2) var(--ease-out) var(--loading-delay) both}@media (prefers-reduced-motion:reduce){:root:not([data-motion=full]) *,:root:not([data-motion=full]) :before,:root:not([data-motion=full]) :after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}:root[data-motion=reduced] *,:root[data-motion=reduced] :before,:root[data-motion=reduced] :after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}@media (prefers-reduced-motion:reduce){:root:not([data-motion=full]) .q-spinner{animation-duration:1.6s!important;animation-iteration-count:infinite!important}}:root[data-motion=reduced] .q-spinner{animation-duration:1.6s!important;animation-iteration-count:infinite!important}.tippy-box[data-animation=shift-away][data-state=hidden]{opacity:0}.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=bottom]{transform:translateY(-6px)}.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=top]{transform:translateY(6px)}.tippy-box[data-animation=shift-away]{transition-property:transform,opacity;transition-timing-function:var(--ease-out)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--c-bg:#0a0f0b;--c-surface:#111710;--c-surface-2:#182019;--c-border:#1e2c1f;--c-border-dim:#141e15;--c-green:#1d9e75;--c-green-dim:#12624a;--c-green-glow:#1d9e751f;--c-green-text:#4ecfa0;--c-cream:#e8e0d0;--c-cream-soft:#b0a594;--c-cream-dim:#9e9588;--c-cream-muted:#91897d;--c-red:#c24b3a;--c-red-text:#ce6f61;--c-red-dim:#7a2e22;--c-amber:#c8852a;--c-amber-dim:#7a5218;--c-blue:#3a78c2;--c-blue-text:#5a8ecc;--c-purple:#8b5cf6;--c-purple-text:#9a71f7;--c-rating-1:var(--c-red-text);--c-rating-2:var(--c-amber);--c-rating-3:var(--c-green-text);--c-rating-4:var(--c-blue-text);--c-rating-5:var(--c-purple-text);--font-mono:"JetBrains Mono", "Fira Code", monospace;--font-display:"Fraunces", Georgia, serif;--font-size-base:13px;--font-size-sm:11px;--font-size-xs:11px;--font-size-lg:15px;--line-height-base:1.7;--line-height-tight:1.3;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--s-10:40px;--s-12:48px;--s-16:64px;--s-32:128px;--touch-target:44px;--r-sm:4px;--r-md:8px;--r-lg:12px;--r-xl:18px;--r-full:9999px;--base-font-size:var(--fs-13);--card-font-size:var(--fs-20);--t-fast:.12s ease;--t-mid:.22s ease;--t-slow:.4s ease;--sidebar-w:220px;--sidebar-w-collapsed:56px;--editor-max-width:720px;--editor-padding-x:var(--s-12);--editor-padding-top:var(--s-16)}html,body,#root{width:100%;height:100%;overflow:hidden}:root[data-night=true] img:not(.katex img){filter:brightness(.85)}.quipwa-celebration-overlay{-o-object-fit:contain;object-fit:contain;z-index:9999;pointer-events:none;max-width:min(60vw,480px);max-height:min(60vh,480px);margin:auto;animation:2.5s forwards quipwa-celebration-fade;position:fixed;inset:0}@keyframes quipwa-celebration-fade{0%{opacity:0;transform:scale(.9)}15%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0}}body{font-family:var(--font-mono);font-size:var(--base-font-size);color:var(--c-cream);background:var(--c-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--c-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--c-green-dim)}button,input,select,textarea{font-family:inherit}a{color:var(--c-green-text);text-decoration:none}a:hover{text-decoration:underline}::selection{background:var(--c-green-dim);color:var(--c-cream)}:focus-visible{outline:1.5px solid var(--c-green);outline-offset:2px;border-radius:var(--r-sm)}ul,ol{padding-left:1.6em;list-style-position:outside}ul{list-style-type:disc}ol{list-style-type:decimal}li{margin:.2em 0}.mono{font-family:var(--font-mono)}.display{font-family:var(--font-display)}.text-green{color:var(--c-green-text)}.text-dim{color:var(--c-cream-dim)}.text-muted{color:var(--c-cream-muted)}.text-red{color:var(--c-red-text)}.text-amber{color:var(--c-amber)}.surface{background:var(--c-surface)}.surface-2{background:var(--c-surface-2)}.border{border:1px solid var(--c-border)}.katex,.katex *{box-sizing:content-box}.katex{color:var(--c-cream);font-size:1.1em!important}.katex-display{margin:var(--s-3) 0;max-width:100%;padding-bottom:2px;overflow:auto hidden}.cp-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#0009;justify-content:center;padding-top:15vh;display:flex;position:fixed;inset:0}.cp-modal{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-xl);flex-direction:column;width:100%;max-width:600px;height:-moz-fit-content;height:fit-content;max-height:500px;display:flex;overflow:hidden;box-shadow:0 24px 64px #00000080}.cp-search-row{align-items:center;gap:var(--s-4);padding:var(--s-5) var(--s-6);border-bottom:1px solid var(--c-border);display:flex}.cp-search-icon{font-size:var(--fs-18);opacity:.5}.cp-input{color:var(--c-cream);font-size:var(--fs-16);background:0 0;border:none;outline:none;flex:1}.cp-esc{font-size:var(--fs-9);font-family:var(--font-mono);color:var(--c-cream-muted);border:1px solid var(--c-border);border-radius:4px;padding:2px 5px}.cp-results{padding:var(--s-2);flex:1;overflow-y:auto}.cp-empty{padding:var(--s-10);text-align:center;color:var(--c-cream-muted);font-size:var(--fs-13)}.cp-item{align-items:center;gap:var(--s-4);padding:var(--s-3) var(--s-4);border-radius:var(--r-lg);cursor:pointer;transition:background .1s;display:flex}.cp-item.is-selected{background:var(--c-surface-2)}.cp-item.is-selected .cp-item-title{color:var(--c-green-text)}.cp-item-icon{font-size:var(--fs-18)}.cp-item-info{flex-direction:column;flex:1;display:flex}.cp-item-title{font-size:var(--fs-14);color:var(--c-cream);font-weight:600}.cp-item-sub{font-size:var(--fs-11);color:var(--c-cream-muted)}.cp-item-cat{font-size:var(--fs-9);font-family:var(--font-mono);color:var(--c-cream-muted);text-transform:uppercase;letter-spacing:.05em;opacity:.6}.cp-footer{padding:var(--s-3) var(--s-6);border-top:1px solid var(--c-border-dim);background:var(--c-surface-2);gap:var(--s-6);font-size:var(--fs-10);color:var(--c-cream-muted);font-family:var(--font-mono);display:flex}.sconf{border-bottom:1px solid var(--c-amber);background:color-mix(in srgb, var(--c-amber) 8%, transparent);flex-direction:column;flex-shrink:0;display:flex}.sconf-row{align-items:center;gap:var(--s-2) var(--s-3);padding:var(--s-2) var(--s-6);font-size:var(--fs-12);flex-wrap:wrap;display:flex}.sconf-row+.sconf-row{border-top:1px solid color-mix(in srgb, var(--c-amber) 30%, transparent)}.sconf-icon{color:var(--c-amber);flex-shrink:0}.sconf-text{min-width:200px;color:var(--c-cream-dim);flex:1}.sconf-actions{gap:var(--s-2);flex-wrap:wrap;display:flex}.sconf-btn{font-family:var(--font-mono);font-size:var(--fs-11);color:var(--c-amber);background:color-mix(in srgb, var(--c-amber) 12%, transparent);border:1px solid var(--c-amber);border-radius:var(--r-sm);padding:var(--s-1) var(--s-3);cursor:pointer}.sconf-btn--quiet{color:var(--c-cream-dim);border-color:var(--c-border);background:0 0}@media (max-width:640px){.sconf-row{padding:var(--s-2) var(--s-4)}}@media (pointer:coarse){.sconf-btn{min-height:var(--touch-target)}}.syncban{align-items:center;gap:var(--s-2) var(--s-3);padding:var(--s-2) var(--s-6);background:color-mix(in srgb, var(--c-amber) 9%, var(--c-bg));border-bottom:1px solid color-mix(in srgb, var(--c-amber) 50%, transparent);animation:q-fade-in var(--dur-2) var(--ease-out) both;flex-wrap:wrap;flex-shrink:0;display:flex}.syncban-icon{color:var(--c-amber);flex-shrink:0}.syncban-text{min-width:220px;font-size:var(--fs-12);color:var(--c-cream-dim);flex:1;line-height:1.5}.syncban-text strong{color:var(--c-cream);font-weight:600}@media (max-width:640px){.syncban{padding:var(--s-3) var(--s-4)}}.syncchip-root{position:relative}.syncchip{align-items:center;gap:var(--s-2);width:100%;min-height:36px;padding:var(--s-2) var(--s-3);font-family:var(--font-mono);font-size:var(--fs-12);color:var(--c-cream-dim);border-radius:var(--r-md);cursor:pointer;text-align:left;transition:background var(--dur-1) var(--ease-out), border-color var(--dur-1) var(--ease-out);background:0 0;border:1px solid #0000;display:flex}.syncchip:hover{background:var(--c-surface-2)}.syncchip-label{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.syncchip--synced svg{color:var(--c-green-text)}.syncchip--syncing svg,.syncchip--pending svg{color:var(--c-blue-text)}.syncchip--offline svg{color:var(--c-cream-muted)}.syncchip--needs_auth,.syncchip--needs_consent,.syncchip--signed_out,.syncchip--error{color:var(--c-amber);border-color:color-mix(in srgb, var(--c-amber) 45%, transparent);background:color-mix(in srgb, var(--c-amber) 8%, transparent)}.syncchip-spin{animation:1.2s linear infinite q-spin}.syncchip-count{min-width:18px;font-size:var(--fs-11);text-align:center;color:var(--c-bg);background:var(--c-blue-text);border-radius:var(--r-full);padding:0 5px;line-height:18px}.syncchip-panel{left:0;bottom:calc(100% + var(--s-2));z-index:var(--z-popover);gap:var(--s-2);width:280px;padding:var(--s-4);background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--r-lg);animation:q-fade-up var(--dur-2) var(--ease-out) both;flex-direction:column;display:flex;position:absolute;box-shadow:0 16px 40px #00000080}.syncchip-detail{font-size:var(--fs-13);color:var(--c-cream);line-height:1.5}.syncchip-meta{font-size:var(--fs-11);color:var(--c-cream-muted)}.syncchip-meta--warn{color:var(--c-amber)}.syncchip-actions{gap:var(--s-2);margin-top:var(--s-1);flex-wrap:wrap;display:flex}@media (prefers-reduced-motion:reduce){.syncchip-spin{animation-duration:2.4s}}.light-toggle{justify-content:center;align-items:center;gap:var(--s-2);min-width:34px;min-height:34px;padding:var(--s-2);color:var(--c-cream-dim);border:1px solid var(--c-border);border-radius:var(--r-md);font:inherit;font-size:var(--text-meta);cursor:pointer;transition:background var(--dur-1) var(--ease-out), color var(--dur-1) var(--ease-out), border-color var(--dur-1) var(--ease-out);background:0 0;flex-shrink:0;display:inline-flex}.light-toggle:hover:not(:disabled){background:var(--c-surface-2);color:var(--c-cream)}.light-toggle:focus-visible{outline:2px solid var(--c-green);outline-offset:2px}.light-toggle[aria-pressed=true]{color:var(--c-green-text);background:var(--c-green-glow);border-color:var(--c-green-dim)}.light-toggle:disabled{opacity:.45;cursor:not-allowed}.light-toggle--label{padding:var(--s-2) var(--s-3)}@media (pointer:coarse){.light-toggle{min-width:44px;min-height:44px}}.quipu-mark{flex-shrink:0;display:block;overflow:visible}.quipu-mark-knots{fill:var(--quipu-knot,var(--c-green-text))}.app-shell{height:var(--app-height);background:var(--c-bg);width:100%;display:flex;overflow:hidden}.sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);background:var(--c-surface);border-right:1px solid var(--c-border);flex-direction:column;flex-shrink:0;height:100%;display:flex}.sidebar-brand{align-items:center;gap:var(--s-2);padding-right:var(--s-3);border-bottom:1px solid var(--c-border);display:flex}.sidebar-logo{align-items:center;gap:var(--s-3);min-width:0;padding:var(--s-5) var(--s-2) var(--s-5) var(--s-5);color:var(--c-cream);cursor:pointer;font:inherit;text-align:left;background:0 0;border:none;flex:1;display:flex}.sidebar-logo:focus-visible{outline:2px solid var(--c-green);outline-offset:-2px}.sidebar-logo-text{font-size:var(--fs-18);letter-spacing:-.03em;color:var(--c-cream);font-weight:700}.sidebar-nav{padding:var(--s-4) var(--s-3);flex-direction:column;flex:1;gap:2px;display:flex;overflow-y:auto}.sidebar-divider{background:var(--c-border);height:1px;margin:var(--s-2) var(--s-1)}.sidebar-item{align-items:center;gap:var(--s-3);min-height:36px;padding:var(--s-2) var(--s-3);border-radius:var(--r-md);color:var(--c-cream-dim);font-size:var(--fs-13);white-space:nowrap;transition:background var(--dur-1) var(--ease-out), color var(--dur-1) var(--ease-out);font-weight:500;text-decoration:none;display:flex;position:relative}.sidebar-item:hover{background:var(--c-surface-2);color:var(--c-cream);text-decoration:none}.sidebar-item.is-active{color:var(--c-green-text);background:var(--c-green-glow)}.sidebar-footer{gap:var(--s-2);padding:var(--s-3);border-top:1px solid var(--c-border);flex-direction:column;display:flex}.sidebar-import-btn{justify-content:center;align-items:center;gap:var(--s-2);min-height:40px;padding:var(--s-2) var(--s-4);color:var(--c-bg);background:var(--c-green-text);border-radius:var(--r-md);font-size:var(--fs-13);transition:filter var(--dur-1) var(--ease-out);font-weight:700;text-decoration:none;display:flex}.sidebar-import-btn:hover{filter:brightness(1.08);text-decoration:none}.sidebar-user{align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-2);border-radius:var(--r-md);color:inherit;text-decoration:none;display:flex}.sidebar-user:hover{background:var(--c-surface-2);text-decoration:none}.sidebar-user-info{flex-direction:column;flex:1;min-width:0;display:flex}.sidebar-user-name,.sidebar-user-email{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sidebar-user-name{font-size:var(--fs-12);color:var(--c-cream);font-weight:600}.sidebar-user-email{font-size:var(--fs-11);color:var(--c-cream-muted)}.avatar{background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.avatar img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.avatar-initial{font-size:var(--fs-13);color:var(--c-green-text);font-weight:700}.app-main{flex-direction:column;flex:1;min-width:0;height:100%;display:flex;overflow:auto}.bottom-nav{z-index:var(--z-nav);height:calc(var(--bottom-nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--c-surface);border-top:1px solid var(--c-border);display:none;position:fixed;bottom:0;left:0;right:0}.bottom-nav-item{min-width:0;color:var(--c-cream-muted);font-size:var(--fs-11);transition:color var(--dur-1) var(--ease-out);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;text-decoration:none;display:flex}.bottom-nav-item span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.bottom-nav-item:hover{text-decoration:none}.bottom-nav-item.is-active{color:var(--c-green-text)}@media (max-width:640px){.sidebar{display:none}.bottom-nav{display:flex}.app-main{padding-bottom:calc(var(--bottom-nav-h) + env(safe-area-inset-bottom))}}.deck-card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg);padding:var(--s-6);transition:all var(--t-fast);gap:var(--s-4);flex-direction:column;min-height:140px;display:flex}.deck-card-open{text-align:left;min-width:0;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;flex:1;margin:0;padding:0}.deck-card-open:focus-visible{outline:2px solid var(--c-green);outline-offset:4px;border-radius:var(--r-sm)}.deck-card:hover{background:var(--c-surface-2);transform:translateY(-2px);box-shadow:0 8px 24px #0006}.deck-card.has-work{border-color:var(--c-green-dim)}.deck-card-header{justify-content:space-between;align-items:flex-start;gap:var(--s-4);display:flex}.deck-card-name{font-size:var(--fs-14);color:var(--c-cream);flex:1;font-weight:600;line-height:1.3}.deck-due-badge{font-size:var(--fs-11);font-family:var(--font-mono);background:var(--c-green-glow);color:var(--c-green-text);border:1px solid var(--c-green-dim);border-radius:var(--r-full);padding:2px var(--s-3);letter-spacing:.05em;flex-shrink:0}.deck-meta-row{align-items:baseline;gap:var(--s-2);font-size:var(--fs-12);color:var(--c-cream-muted);display:flex}.deck-retention{font-family:var(--font-mono);font-size:var(--fs-15);color:var(--c-cream);letter-spacing:-.01em;font-weight:700}.deck-meta-item--muted{font-style:italic}.deck-meta-dot{color:var(--c-cream-muted)}.deck-study-btn{font-family:var(--font-mono);font-size:var(--fs-12);color:var(--c-green-text);border:1px solid var(--c-green-dim);border-radius:var(--r-md);padding:var(--s-2) var(--s-4);cursor:pointer;transition:all var(--t-fast);background:#1d9e751a;align-self:flex-start;margin-top:auto;font-weight:600}.deck-study-btn:hover{background:var(--c-green-glow);border-color:var(--c-green);color:var(--c-cream)}@media (pointer:coarse){.deck-study-btn{min-height:var(--touch-target);align-items:center;display:inline-flex}.deck-card-open{min-height:var(--touch-target)}}.es-wrap{justify-content:center;align-items:center;gap:var(--s-4);margin:var(--s-16) auto;flex-direction:column;max-width:440px;display:flex}.es-cta{font-family:var(--font-mono);font-size:var(--fs-13);color:var(--c-green-text);background:var(--c-green-glow);border:1px solid var(--c-green-dim);border-radius:var(--r-md);padding:var(--s-3) var(--s-6);cursor:pointer;transition:background var(--t-fast);margin-top:var(--s-2)}.es-cta:hover{background:#accfba26}.fcm-overlay{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:1000;padding:var(--s-4);background:#000000bf;justify-content:center;align-items:center;animation:.15s quipwa-fade-in;display:flex;position:fixed;inset:0}.fcm-panel{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-xl);width:100%;max-width:480px;animation:.18s quipwa-scale-in;overflow:hidden;box-shadow:0 24px 64px #000000b3}.fcm-header{padding:var(--s-5) var(--s-6);border-bottom:1px solid var(--c-border-dim);justify-content:space-between;align-items:flex-start;display:flex}.fcm-header-left{align-items:flex-start;gap:var(--s-3);display:flex}.fcm-icon{color:var(--c-green-text);flex-shrink:0;margin-top:2px}.fcm-title{font-size:var(--fs-15);color:var(--c-cream);font-weight:700;font-family:var(--font-mono)}.fcm-subtitle{font-size:var(--fs-11);color:var(--c-cream-muted);margin-top:2px}.fcm-close{color:var(--c-cream-muted);cursor:pointer;transition:color var(--t-fast);background:0 0;border:none;padding:2px}.fcm-close:hover{color:var(--c-red-text)}.fcm-body{padding:var(--s-6);gap:var(--s-5);flex-direction:column;display:flex}.fcm-field{gap:var(--s-2);flex-direction:column;display:flex}.fcm-label{font-size:var(--fs-10);color:var(--c-cream-muted);text-transform:uppercase;letter-spacing:.08em;font-family:var(--font-mono)}.fcm-hint{font-size:var(--fs-10);color:var(--c-cream-muted);opacity:.7;font-style:italic}.fcm-input,.fcm-textarea{background:var(--c-surface-2);border:1px solid var(--c-border);color:var(--c-cream);padding:var(--s-3);border-radius:var(--r-md);font-family:var(--font-mono);font-size:var(--fs-13);transition:border-color var(--t-fast);resize:none;outline:none}.fcm-input:focus,.fcm-textarea:focus{border-color:var(--c-green-dim)}.fcm-preview{border-left:2px solid var(--c-green-dim);padding:var(--s-3) var(--s-4);font-size:var(--fs-13);color:var(--c-cream-dim);border-radius:0 var(--r-sm) var(--r-sm) 0;max-height:110px;font-family:var(--font-mono);background:#0003;line-height:1.5;overflow-y:auto}.fcm-preview-empty{color:var(--c-cream-muted);font-style:italic}.fcm-deck-chips{gap:var(--s-2);flex-wrap:wrap;display:flex}.fcm-deck-chip{background:var(--c-surface-2);border:1px solid var(--c-border);color:var(--c-cream-muted);font-family:var(--font-mono);font-size:var(--fs-11);padding:3px var(--s-3);border-radius:var(--r-full);cursor:pointer;transition:color var(--t-fast), border-color var(--t-fast);text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.fcm-deck-chip:hover{color:var(--c-cream);border-color:var(--c-cream-dim)}.fcm-deck-chip.is-active{background:var(--c-green-glow);border-color:var(--c-green-dim);color:var(--c-green-text)}.fcm-error{padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);border:1px solid var(--c-red-dim);color:var(--c-red-text);font-size:var(--fs-11);background:#c850501a}.fcm-footer{justify-content:flex-end;gap:var(--s-3);padding-top:var(--s-4);border-top:1px solid var(--c-border-dim);margin-top:var(--s-2);display:flex}.fcm-btn-cancel{border:1px solid var(--c-border);color:var(--c-cream-muted);padding:var(--s-2) var(--s-5);border-radius:var(--r-md);font-size:var(--fs-12);font-family:var(--font-mono);cursor:pointer;transition:all var(--t-fast);background:0 0}.fcm-btn-cancel:hover{color:var(--c-cream);border-color:var(--c-cream-dim)}.fcm-btn-submit{background:var(--c-green-glow);border:1px solid var(--c-green-dim);color:var(--c-green-text);padding:var(--s-2) var(--s-6);border-radius:var(--r-md);font-size:var(--fs-13);font-weight:700;font-family:var(--font-mono);cursor:pointer;transition:background var(--t-fast)}.fcm-btn-submit:hover:not(:disabled){background:#1d9e7538}.fcm-btn-submit:disabled{opacity:.45;cursor:not-allowed}.dashboard-layout{--dash-right-col:320px;background:var(--c-bg);height:100%;display:flex;position:relative;overflow:hidden}.dash-col-center{min-width:0;padding:var(--s-10) var(--s-12);border-right:1px solid var(--c-border);flex:1;overflow-y:auto}.dash-col-right{width:var(--dash-right-col);background:var(--c-surface);padding:var(--s-10) var(--s-6);flex-shrink:0;overflow-y:auto}.dash-big-date{margin-bottom:var(--s-12);position:relative}.dash-light-toggle{display:none}@media (max-width:640px){.dash-light-toggle{display:inline-flex;position:absolute;top:0;right:0}}.date-weekday{font-family:var(--font-mono);font-size:var(--fs-14);color:var(--c-green-text);text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--s-2)}.date-main{align-items:baseline;gap:var(--s-3);display:flex}.date-num{font-family:var(--font-display);font-size:var(--fs-64);color:var(--c-cream);font-weight:300;line-height:.9}.date-month-year{font-size:var(--fs-24);color:var(--c-cream-dim);font-weight:300}.dash-cal-loading{font-size:var(--fs-10);font-family:var(--font-mono);color:var(--c-cream-muted);margin-top:var(--s-2);animation:2s infinite dash-pulse}.dash-section{margin-bottom:var(--s-10)}.dash-section-header{align-items:center;gap:var(--s-3);margin-bottom:var(--s-5);display:flex}.dash-section-title{font-family:var(--font-mono);font-size:var(--fs-11);color:var(--c-cream-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--s-5)}.dash-section-header .dash-section-title{margin-bottom:0}.dash-section-title--quiet{font-style:italic}.dash-sync-stamp{font-family:var(--font-mono);font-size:var(--fs-11);color:var(--c-cream-muted);margin:calc(var(--s-4) * -1) 0 var(--s-5)}@keyframes dash-pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.dash-block-list{gap:var(--s-3);flex-direction:column;display:flex}.dash-empty-msg{font-size:var(--fs-13);color:var(--c-cream-dim);padding:var(--s-5) 0}.study-block{align-items:center;gap:var(--s-4);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg);padding:var(--s-4) var(--s-5);transition:border-color var(--t-fast), background var(--t-fast);display:flex}.study-block:hover{border-color:var(--c-cream-dim);background:var(--c-surface-2)}.study-block-open{align-items:flex-start;gap:var(--s-1);min-width:0;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;margin:0;padding:0;display:flex}.study-block-open:focus-visible{outline:2px solid var(--c-green);outline-offset:4px;border-radius:var(--r-sm)}.study-block-name{font-size:var(--fs-14);color:var(--c-cream);font-weight:600}.study-block-meta{align-items:center;gap:var(--s-3);flex-wrap:wrap;display:flex}.study-block-time{font-size:var(--fs-11);font-family:var(--font-mono);color:var(--c-blue-text)}.study-block-badge{font-size:var(--fs-11);font-family:var(--font-mono);padding:2px var(--s-2);border-radius:var(--r-full)}.study-block-badge--due{color:var(--c-red-text);background:#c850501a;border:1px solid #c8505033}.study-block-badge--new{background:var(--c-green-glow);color:var(--c-green-text);border:1px solid var(--c-green-dim)}.study-block-btn{font-size:var(--fs-16);padding:var(--s-2) var(--s-4);background:var(--c-green-glow);color:var(--c-green-text);border:1px solid var(--c-green-dim);border-radius:var(--r-md);cursor:pointer;transition:background var(--t-fast);flex-shrink:0}.study-block-btn:hover{background:#accfba33}.note-block{align-items:center;gap:var(--s-4);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg);padding:var(--s-4) var(--s-5);transition:border-color var(--t-fast), background var(--t-fast);display:flex}.note-block:hover{border-color:var(--c-cream-dim);background:var(--c-surface-2)}.note-block-open{align-items:stretch;gap:var(--s-1);min-width:0;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;margin:0;padding:0;display:flex}.note-block-open:focus-visible{outline:2px solid var(--c-green);outline-offset:4px;border-radius:var(--r-sm)}.note-block-icon{color:var(--c-cream-muted);flex-shrink:0}.note-block-name{font-size:var(--fs-14);color:var(--c-cream);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.note-block-meta{align-items:center;gap:var(--s-2);flex-wrap:wrap;display:flex}.note-block-domain{font-size:var(--fs-11);font-family:var(--font-mono);color:var(--c-cream-dim)}.note-block-tag{font-size:var(--fs-11);font-family:var(--font-mono);color:var(--c-blue-text);padding:1px var(--s-2);border-radius:var(--r-full);background:#64a0dc1a}.note-block-btn{align-items:center;gap:var(--s-2);font-size:var(--fs-12);font-family:var(--font-mono);padding:var(--s-2) var(--s-4);background:var(--c-green-glow);color:var(--c-green-text);border:1px solid var(--c-green-dim);border-radius:var(--r-md);cursor:pointer;transition:background var(--t-fast);flex-shrink:0;font-weight:600;display:flex}.note-block-btn:hover{background:#accfba33}.dash-review-now{align-items:center;gap:var(--s-4);width:100%;margin:calc(-1 * var(--s-6)) 0 var(--s-10);padding:var(--s-4) var(--s-6);background:var(--c-green);color:var(--c-bg);border-radius:var(--r-xl);text-align:left;cursor:pointer;transition:transform var(--t-fast), filter var(--t-fast);border:none;display:flex;box-shadow:0 6px 18px #0000004d}.dash-review-now:hover{filter:brightness(1.08);transform:translateY(-1px)}.dash-review-now:active{transform:translateY(0)}.dash-review-now:focus-visible{outline:2px solid var(--c-green);outline-offset:4px}.dash-review-now-text{gap:var(--s-1);flex-direction:column;flex:1;min-width:0;display:flex}.dash-review-now-label{font-weight:700;font-size:var(--text-title);letter-spacing:-.01em}.dash-review-now-meta{font-family:var(--font-mono);font-size:var(--text-meta);opacity:.85;letter-spacing:.02em}.dash-review-now-icon{transition:transform var(--t-fast);flex-shrink:0}.dash-review-now:hover .dash-review-now-icon{transform:translate(3px)}@media (max-width:1024px){.dashboard-layout{--dash-right-col:280px}}@media (max-width:768px){.dashboard-layout{flex-direction:column;overflow-y:auto}.dash-col-center{padding:var(--s-6);border-right:none;flex:none;overflow:visible}.dash-col-right{width:100%;padding:var(--s-6);flex:none;overflow:visible}.date-num{font-size:var(--fs-48)}.date-month-year{font-size:var(--fs-18)}.dash-review-now{margin-top:calc(-1 * var(--s-4))}}@media (pointer:coarse){.study-block-btn,.note-block-btn{min-height:var(--touch-target)}}.safe-bg-container{width:100vw;height:var(--app-height,100dvh);position:relative;overflow:hidden}.safe-bg-layer{z-index:0;transition:opacity var(--dur-3) var(--ease-out);position:absolute;inset:0}.safe-bg-layer.is-loading{opacity:0!important}.safe-bg-content{z-index:1;width:100%;height:100%;position:relative}.safe-bg-layer--image{background-position:50%;background-repeat:no-repeat;background-size:cover}:root{--pattern-ink:color-mix(in srgb, var(--c-cream) 9%, transparent)}.pattern-grid{background-image:linear-gradient(to right, var(--pattern-ink) 1px, transparent 1px), linear-gradient(to bottom, var(--pattern-ink) 1px, transparent 1px);background-size:40px 40px}.pattern-dots,.safe-bg-layer--fallback{background-image:radial-gradient(var(--pattern-ink) 1.5px, transparent 1.5px);background-size:20px 20px}.pattern-scanlines{background-image:linear-gradient(to bottom, transparent 50%, var(--pattern-ink) 50%);background-size:100% 4px}.pattern-splatter{background-image:radial-gradient(circle at 20% 30%, var(--pattern-ink) 2px, transparent 3px), radial-gradient(circle at 70% 60%, var(--pattern-ink) 4px, transparent 5px), radial-gradient(circle at 40% 80%, var(--pattern-ink) 1px, transparent 2px);background-size:100px 100px}.toaster{right:var(--s-5);bottom:var(--s-5);z-index:2000;gap:var(--s-2);width:min(380px, calc(100vw - 2 * var(--s-4)));pointer-events:none;flex-direction:column;display:flex;position:fixed}.toast{pointer-events:auto;align-items:flex-start;gap:var(--s-3);padding:var(--s-3) var(--s-3) var(--s-3) var(--s-4);background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--r-md);animation:q-toast-in var(--dur-2) var(--ease-out) both;display:flex;box-shadow:0 12px 32px #00000073}.toast--success .toast-icon{color:var(--c-green-text)}.toast--error{border-color:color-mix(in srgb, var(--c-red) 60%, var(--c-border))}.toast--error .toast-icon{color:var(--c-red-text)}.toast--info .toast-icon{color:var(--c-blue-text)}.toast-icon{flex-shrink:0;margin-top:2px}.toast-message{font-size:var(--fs-13);color:var(--c-cream);flex:1;line-height:1.5}.toast-action,.toast-close{font-family:var(--font-mono);font-size:var(--fs-12);cursor:pointer;border-radius:var(--r-sm);background:0 0;border:none;flex-shrink:0}.toast-action{color:var(--c-green-text);padding:2px var(--s-2)}.toast-close{color:var(--c-cream-muted);padding:2px;display:inline-flex}.toast-close:hover{color:var(--c-cream)}@media (max-width:640px){.toaster{left:var(--s-4);right:var(--s-4);width:auto;bottom:calc(var(--bottom-nav-h) + env(safe-area-inset-bottom) + var(--s-3))}}@keyframes q-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.dlg-backdrop{z-index:var(--z-dialog);padding:var(--s-4);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:q-fade-in var(--dur-2) var(--ease-out) both;background:#000000a8;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dlg{gap:var(--s-4);width:100%;max-height:min(86dvh,720px);padding:var(--s-6);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-xl);animation:q-scale-in var(--dur-2) var(--ease-out) both;flex-direction:column;display:flex;overflow-y:auto;box-shadow:0 24px 64px #0009}.dlg:focus{outline:none}.dlg--sm{max-width:440px}.dlg--md{max-width:560px}.dlg--lg{max-width:760px}.dlg-title{font-family:var(--font-display);font-size:var(--fs-20);color:var(--c-cream);font-weight:400;line-height:1.25}.dlg-body{font-size:var(--fs-13);color:var(--c-cream-dim);line-height:1.6}.dlg-footer{justify-content:flex-end;gap:var(--s-2);margin-top:var(--s-2);flex-wrap:wrap;display:flex}.btn{justify-content:center;align-items:center;gap:var(--s-2);min-height:36px;padding:var(--s-2) var(--s-4);font-family:var(--font-mono);font-size:var(--fs-12);color:var(--c-cream);background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--r-md);cursor:pointer;transition:background var(--dur-1) var(--ease-out), border-color var(--dur-1) var(--ease-out), color var(--dur-1) var(--ease-out);font-weight:500;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--c-cream-dim)}.btn:disabled{opacity:.55;cursor:default}.btn--primary{color:var(--c-bg);background:var(--c-green-text);border-color:#0000;font-weight:700}.btn--primary:hover:not(:disabled){filter:brightness(1.08);border-color:#0000}.btn--danger{color:var(--c-red-text);background:color-mix(in srgb, var(--c-red) 10%, transparent);border-color:var(--c-red-dim)}.btn--danger:hover:not(:disabled){border-color:var(--c-red)}.btn--ghost{color:var(--c-cream-dim);background:0 0;border-color:#0000}.btn--ghost:hover:not(:disabled){color:var(--c-cream);border-color:var(--c-border)}.btn--sm{min-height:28px;padding:var(--s-1) var(--s-3);font-size:var(--fs-11)}@media (pointer:coarse){.btn,.btn--sm{min-height:var(--touch-target)}}@media (max-width:640px){.dlg-backdrop{align-items:flex-end;padding:0}.dlg{border-radius:var(--r-xl) var(--r-xl) 0 0;max-width:none;padding-bottom:calc(var(--s-6) + env(safe-area-inset-bottom));animation:q-sheet-up var(--dur-3) var(--ease-out) both}.dlg-footer{flex-direction:column-reverse}.dlg-footer .btn{width:100%}}
