@font-face{font-family:Urbanist;src:url(/fonts/Urbanist-Variable.woff2) format("woff2-variations");font-weight:100 900;font-style:normal;font-display:swap}:root{--color-background: #f4f4f1;--color-surface: #ffffff;--color-surface-variant: #ecece8;--color-surface-inverse: #0a0a0a;--color-overlay: rgba(10, 10, 10, .45);--color-text-primary: #0a0a0a;--color-text-secondary: #565651;--color-text-muted: #74746e;--color-text-inverse: #f4f4f1;--color-text-on-accent: #0a0a0a;--color-border: #dcdcd7;--color-border-strong: #0a0a0a;--color-divider: #ecece8;--color-accent: #dbf053;--color-accent-hover: #b9d42e;--color-accent-subtle: #f4fbc9;--color-secondary: #53b4f0;--color-secondary-subtle: #d7effc;--color-focus-ring: #0a0a0a;--color-success: #3fa63b;--color-warning: #d49216;--color-danger: #d23a22;--color-info: #3098da;--font-sans: "Urbanist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--space-0: 0;--space-px: 1px;--space-0\.5: 2px;--space-1: 4px;--space-1\.5: 6px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-xs: 6px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-2xl: 32px;--radius-pill: 9999px;--border-hairline: 1px;--border-thick: 2px;--shadow-sm: 0 1px 2px rgba(10, 10, 10, .06);--shadow-md: 0 4px 16px rgba(10, 10, 10, .08);--shadow-lg: 0 12px 32px rgba(10, 10, 10, .12);--motion-fast: .12s;--motion-base: .18s;--motion-slow: .26s;--ease-standard: cubic-bezier(.2, 0, 0, 1);--ease-decelerate: cubic-bezier(0, 0, 0, 1);--content-max: 1440px;--content-prose: 720px;color-scheme:light}:root[data-theme=dark]{--color-background: #0a0b0a;--color-surface: #17191a;--color-surface-variant: #202325;--color-surface-inverse: #f4f4f1;--color-overlay: rgba(0, 0, 0, .6);--color-text-primary: #f4f4f1;--color-text-secondary: #c3c3bd;--color-text-muted: #9c9c96;--color-text-inverse: #0a0a0a;--color-text-on-accent: #0a0a0a;--color-border: #2a2d2f;--color-border-strong: #f4f4f1;--color-divider: #202325;--color-accent: #dbf053;--color-accent-hover: #e4f47c;--color-accent-subtle: #2c3413;--color-secondary: #53b4f0;--color-secondary-subtle: #13303f;--color-focus-ring: #dbf053;--color-success: #5fc75b;--color-warning: #f2b33d;--color-danger: #f0533b;--color-info: #53b4f0;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .45);--shadow-md: 0 4px 16px rgba(0, 0, 0, .45);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .5);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--color-background);color:var(--color-text-primary);font:400 16px/1.6 var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}#root{display:flex;flex-direction:column}.display-2{font-size:clamp(32px,6vw,48px);font-weight:800;letter-spacing:-.02em;line-height:1.05;margin:0}.h3{font-size:22px;font-weight:700;letter-spacing:-.005em;line-height:1.2;margin:0}.h4{font-size:18px;font-weight:600;line-height:1.3;margin:0}.body-lg{font-size:18px;line-height:1.6}.tnum{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.label{display:inline-block;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted)}.label:before{content:"◗";margin-right:8px;color:var(--color-accent)}.muted{color:var(--color-text-muted)}.small{font-size:13px}.error{color:var(--color-danger)}.warn{color:var(--color-warning)}.spacer{flex:1}button{font:inherit;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:var(--border-hairline) solid var(--color-border);background:var(--color-surface);color:var(--color-text-primary);border-radius:var(--radius-pill);height:44px;padding:0 20px;font-weight:600;transition:background var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),opacity var(--motion-fast) var(--ease-standard)}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible{outline:var(--border-thick) solid var(--color-focus-ring);outline-offset:2px}button.primary{background:var(--color-surface-inverse);color:var(--color-text-inverse);border-color:var(--color-surface-inverse)}button.primary:not(:has(svg)):before{content:"";width:8px;height:8px;border-radius:var(--radius-pill);background:var(--color-accent);flex:0 0 auto}button svg{flex:0 0 auto}button.secondary{background:transparent;border-color:var(--color-border);color:var(--color-text-primary)}button.ghost{background:transparent;border-color:transparent;color:var(--color-text-secondary);height:40px;padding:0 12px}button.ghost:hover:not(:disabled){background:var(--color-surface-variant)}button.danger{background:var(--color-danger);border-color:var(--color-danger);color:#fff}button.sm{height:36px;padding:0 14px;font-size:14px}button.icon-btn{height:40px;width:40px;padding:0;border-color:transparent;background:transparent;color:var(--color-text-secondary);border-radius:var(--radius-md)}button.icon-btn:hover:not(:disabled){background:var(--color-surface-variant);color:var(--color-text-primary)}input[type=text],.field input[type=file]{font:inherit;height:44px;padding:0 12px;border:var(--border-hairline) solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-primary)}.field input[type=file]{padding:9px 12px;height:auto}input[type=text]:focus-visible{outline:none;border-color:var(--color-border-strong);box-shadow:0 0 0 var(--border-thick) var(--color-focus-ring)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.appbar{display:flex;align-items:center;gap:12px;padding:10px 20px;border-bottom:var(--border-hairline) solid var(--color-border);background:var(--color-surface)}.appbar .brand{display:inline-flex;align-items:center;gap:8px;font-weight:800;font-size:18px;letter-spacing:-.01em}.brand-mark{display:block;border-radius:var(--radius-sm)}.brand-mark.lg{border-radius:var(--radius-lg)}.centered{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;padding:32px}.library{flex:1;width:100%;max-width:var(--content-max);margin:0 auto;padding:32px 48px;overflow:auto}.library-header{margin-bottom:32px}.library-header-row{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.library-header h1{margin:8px 0}.library-header p{margin:12px 0 0;max-width:var(--content-prose)}.library-new{flex:0 0 auto}@media(max-width:768px){.library{padding:20px}}.card{border:var(--border-hairline) solid var(--color-border);border-radius:var(--radius-xl);padding:24px;background:var(--color-surface)}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:16px}.deck-list{min-width:0}.deck-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.deck-card{position:relative;padding:16px}.deck-card-main{display:flex;align-items:flex-start;gap:8px}.deck-cover-btn{display:block;width:100%;height:auto;padding:0;margin-bottom:12px;border:none;border-radius:var(--radius-md);background:transparent}.deck-cover{width:100%;aspect-ratio:16 / 9;border-radius:var(--radius-md);overflow:hidden;background:var(--color-surface-variant);border:var(--border-hairline) solid var(--color-border)}.deck-cover img{width:100%;height:100%;object-fit:cover;display:block}.deck-cover-btn:hover .deck-cover{border-color:var(--color-border-strong)}.deck-cover-skeleton{width:100%;height:100%;background:linear-gradient(90deg,var(--color-surface-variant) 0%,var(--color-border) 50%,var(--color-surface-variant) 100%);background-size:200% 100%;animation:thumb-shimmer 1.2s ease-in-out infinite}.deck-open{flex:1;min-width:0;text-align:left;display:flex;flex-direction:column;gap:4px;align-items:flex-start;height:auto;padding:4px;border:none;border-radius:var(--radius-md);background:transparent}.deck-open:hover{background:var(--color-surface-variant)}.deck-title{display:block;max-width:100%;white-space:normal;overflow-wrap:anywhere}.deck-rename{flex:1;display:flex;flex-direction:column;gap:8px}.deck-rename-actions{display:flex;gap:8px}.deck-menu-wrap{position:relative}.deck-menu{position:absolute;top:44px;right:0;z-index:20;min-width:168px;display:flex;flex-direction:column;padding:6px;background:var(--color-surface);border:var(--border-hairline) solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.deck-menu button{justify-content:flex-start;height:38px;padding:0 10px;border:none;background:transparent;border-radius:var(--radius-sm);font-weight:500}.deck-menu button:hover{background:var(--color-surface-variant)}.deck-menu .menu-danger{color:var(--color-danger)}.confirm-dialog{border:var(--border-hairline) solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);color:var(--color-text-primary);padding:24px;max-width:440px;width:calc(100vw - 40px);box-shadow:var(--shadow-lg)}.confirm-dialog::backdrop{background:var(--color-overlay)}.confirm-dialog h3{margin:0 0 12px}.confirm-body p{margin:0 0 8px;color:var(--color-text-secondary)}.confirm-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.new-deck-dialog{border:var(--border-hairline) solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);color:var(--color-text-primary);padding:0;max-width:480px;width:calc(100vw - 40px);box-shadow:var(--shadow-lg)}.new-deck-dialog::backdrop{background:var(--color-overlay)}.new-deck{position:relative;padding:24px}.new-deck-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.new-deck-head h3{margin:0}.dropzone{width:100%;height:auto;min-height:148px;flex-direction:column;gap:6px;padding:24px;margin-bottom:16px;border:var(--border-thick) dashed var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface-variant);color:var(--color-text-secondary);text-align:center}.dropzone:hover:not(:disabled){border-color:var(--color-border-strong);background:var(--color-surface-variant)}.dropzone.has-file{border-style:solid;border-color:var(--color-accent)}.dropzone-title{font-weight:600;color:var(--color-text-primary);overflow-wrap:anywhere}.new-deck-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.dropzone-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border-radius:var(--radius-lg);border:var(--border-thick) dashed var(--color-accent);background:var(--color-accent-subtle);color:var(--color-text-primary);font-weight:600;pointer-events:none}.author{flex:1;display:flex;flex-direction:column;min-height:0}.author-toolbar{display:flex;align-items:center;gap:8px;padding:8px 16px;border-bottom:var(--border-hairline) solid var(--color-border);background:var(--color-surface)}.author-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:40vw}.author-body{flex:1;display:grid;grid-template-columns:168px 1fr;min-height:0}.slide-nav{border-right:var(--border-hairline) solid var(--color-border);display:flex;flex-direction:column;min-height:0;background:var(--color-surface)}.slide-nav-controls{display:flex;align-items:center;justify-content:space-between;padding:8px;border-bottom:var(--border-hairline) solid var(--color-border)}.slide-index{list-style:none;margin:0;padding:8px;overflow:auto;display:flex;flex-direction:column;gap:8px}.slide-index-item{width:100%;height:auto;padding:6px;display:flex;flex-direction:column;gap:6px;border-radius:var(--radius-md);border:var(--border-thick) solid transparent;background:transparent}.slide-index-item:hover{background:var(--color-surface-variant)}.slide-index-item.active{border-color:var(--color-accent);background:var(--color-accent-subtle)}.slide-index-meta{display:flex;align-items:center;justify-content:space-between;width:100%}.slide-index-num{font-weight:700;font-size:13px}.slide-thumb{width:100%;aspect-ratio:16 / 9;border-radius:var(--radius-sm);overflow:hidden;background:var(--color-surface-variant);border:var(--border-hairline) solid var(--color-border)}.slide-thumb img{width:100%;height:100%;object-fit:cover;display:block}.slide-thumb-skeleton{width:100%;height:100%;background:linear-gradient(90deg,var(--color-surface-variant) 0%,var(--color-border) 50%,var(--color-surface-variant) 100%);background-size:200% 100%;animation:thumb-shimmer 1.2s ease-in-out infinite}@keyframes thumb-shimmer{to{background-position:-200% 0}}.author-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:0}.author-columns:has(.col-comments){grid-template-columns:minmax(0,1.05fr) minmax(0,1fr) minmax(0,.8fr)}.col-comments{border-left:var(--border-hairline) solid var(--color-border);display:flex;flex-direction:column;min-height:0;overflow:hidden}.col{min-height:0;overflow:auto;padding:16px}.col-pdf{border-right:var(--border-hairline) solid var(--color-border);background:var(--color-surface-variant)}.col-notes{display:flex;flex-direction:column;gap:16px;overflow:hidden;min-height:0}.pdf-viewer{display:flex;flex-direction:column;gap:8px}.pdf-canvas{width:100%;height:auto;background:#fff;border:var(--border-hairline) solid var(--color-border);border-radius:var(--radius-sm)}.notes-editor{display:flex;flex-direction:column;min-height:0;flex:1 1 0;border-top:var(--border-hairline) solid var(--color-border);padding-top:12px}.editor-header,.preview-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.cm-host{border:var(--border-hairline) solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;flex:1;min-height:0;background:var(--color-surface);color:var(--color-text-primary)}.cm-host .cm-editor{height:100%;background:transparent;color:var(--color-text-primary)}.cm-host .cm-content{caret-color:var(--color-text-primary)}.cm-host .cm-gutters{background:var(--color-surface-variant);color:var(--color-text-muted);border-right:var(--border-hairline) solid var(--color-border)}.cm-host .cm-activeLine{background:var(--color-surface-variant)}.cm-host .cm-activeLineGutter{background:var(--color-border);color:var(--color-text-primary)}.cm-host .cm-cursor,.cm-host .cm-dropCursor{border-left-color:var(--color-text-primary)}.cm-host .cm-selectionBackground,.cm-host.cm-focused .cm-selectionBackground,.cm-host .cm-content ::selection{background:var(--color-accent-subtle)}.save-status{font-size:13px;color:var(--color-text-muted)}.save-saved{color:var(--color-success)}.save-error{color:var(--color-danger)}.note-preview{flex:2 1 0;min-height:0;display:flex;flex-direction:column}.note-preview .markdown-body{flex:1;min-height:0;overflow:auto}.target-chip{font-size:13px;font-weight:600;background:var(--color-accent);color:var(--color-text-on-accent);border-radius:var(--radius-pill);padding:2px 12px}.markdown-body{line-height:1.6;max-width:var(--content-prose)}.markdown-body table{border-collapse:collapse}.markdown-body th,.markdown-body td{border:var(--border-hairline) solid var(--color-border);padding:4px 8px}.markdown-body pre{background:var(--color-surface-variant);padding:12px;border-radius:var(--radius-md);overflow:auto}.markdown-body code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em}.markdown-body a{color:var(--color-info)}.role-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:.75rem;font-weight:600;background:var(--color-surface-variant);color:var(--color-text-muted);border:var(--border-hairline) solid var(--color-border);white-space:nowrap}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;padding:24px;z-index:50}.share-dialog{width:min(560px,100%);max-height:85vh;overflow:auto;padding:20px;display:flex;flex-direction:column;gap:16px}.share-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.share-invite{display:grid;grid-template-columns:1fr auto auto;gap:8px}.share-invite input,.share-invite select{min-width:0}.share-section{display:flex;flex-direction:column;gap:8px}.share-people{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.share-person{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 8px;border-radius:8px;background:var(--color-surface-variant)}.share-person-email{word-break:break-all}.share-person-actions,.share-link-head{display:flex;align-items:center;gap:8px}.share-link-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.share-link-url{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:4px 8px;border-radius:6px;background:var(--color-surface-variant);font-size:.8rem}.comments-panel{display:flex;flex-direction:column;gap:12px;padding:16px;overflow:auto;min-height:0}.comments-head{display:flex;align-items:center;justify-content:space-between}.comments-toggle{display:inline-flex;align-items:center;gap:6px}.comment-threads{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.comment-thread{border:var(--border-hairline) solid var(--color-border);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px}.comment-thread.resolved{opacity:.6}.comment{display:flex;flex-direction:column;gap:4px}.comment+.comment{border-top:var(--border-hairline) solid var(--color-border);padding-top:8px;margin-left:12px}.comment-meta{display:flex;align-items:baseline;gap:8px}.comment-author{font-weight:600}.comment-body{white-space:pre-wrap;word-break:break-word}.comment-deleted{font-style:italic}.comment-actions{display:flex;gap:8px}.comment-new{display:flex;flex-direction:column;gap:6px}.comment-new textarea{resize:vertical;width:100%}.comment-reply-actions{display:flex;gap:8px;justify-content:flex-end}button.xs{font-size:.75rem;padding:2px 8px;display:inline-flex;align-items:center;gap:4px}.notes-readonly{padding:12px;border:var(--border-hairline) dashed var(--color-border);border-radius:8px}
