:root{--bg:#0a0a0a;--surface:#111214;--raised:#1a1b1c;--control:#1e1f21;--control-hover:#292a2d;--active:#ffffff1a;--line:#ffffff1a;--line-strong:#fff3;--line-field:#737373;--text:#ededed;--text-strong:#fff;--text-muted:#a3a3a3;--primary:#2563eb;--primary-hover:#1d4ed8;--accent:#3b82f6;--accent-text:#60a5fa;--strip:#7c93e8;--amber:#ffd456;--danger:#f87171;--danger-fill:#dc2626;--danger-fill-hover:#b91c1c;--success:#4ade80;--warning:#facc15;--focus:var(--accent-text);--font-sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "Cascadia Mono", "Segoe UI Mono", Menlo, Consolas, monospace;--text-11:11px;--text-12:12px;--text-13:13px;--text-14:14px;--text-16:16px;--text-20:20px;--text-28:28px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-12:48px;--radius-6:6px;--radius-8:8px;--radius-12:12px;--height-32:32px;--height-40:40px;--tap-min:44px}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--text-14);-webkit-font-smoothing:antialiased;line-height:1.45}h1,h2,h3,p{margin:0}h1,h2,h3{color:var(--text-strong);letter-spacing:-.025em;font-weight:700}a{color:var(--accent-text);text-underline-offset:3px}button,input,select,textarea{font:inherit;color:inherit}.num{font-variant-numeric:tabular-nums;font-weight:600}.muted{color:var(--text-muted)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:var(--height-40);padding:var(--space-1) 14px;border:1px solid var(--line);border-radius:var(--radius-8);background:var(--control);color:var(--text-strong);font-size:var(--text-14);text-align:center;cursor:pointer;font-weight:600;line-height:1.2;text-decoration:none;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.btn:hover{background:var(--control-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm,.btn-small{min-height:var(--height-32);padding:2px var(--space-3);font-size:var(--text-13)}.btn-primary{background:var(--primary);color:#fff;border-color:#60a5fa66}.btn-primary:hover{background:var(--primary-hover)}.btn-ghost{color:#d4d4d4;background:0 0;border-color:#0000}.btn-ghost:hover{color:var(--text-strong);background:#ffffff0d}.btn-danger{color:var(--danger)}.btn-danger-strong{background:var(--danger-fill);color:#fff;border-color:#f8717166}.btn-danger-strong:hover{background:var(--danger-fill-hover)}.icon-btn{min-width:var(--height-40);padding:0}.btn-sm.icon-btn,.btn-small.icon-btn{min-width:var(--height-32)}.input,.textarea{min-width:0;min-height:var(--height-40);padding:0 var(--space-3);border:1px solid var(--line-field);border-radius:var(--radius-8);background:var(--control);color:var(--text-strong);font-size:var(--text-14)}.textarea{min-height:80px;padding:var(--space-2) var(--space-3);resize:vertical;line-height:1.45}.input-sm{min-height:var(--height-32);padding:0 var(--space-2);font-size:var(--text-13)}.input::placeholder,.textarea::placeholder{color:var(--text-muted)}.input:focus-visible,.textarea:focus-visible{border-color:var(--focus);outline-offset:0}.input[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--danger)}.input:disabled,.textarea:disabled{opacity:.5;cursor:not-allowed}select.input{appearance:none;padding-right:var(--space-8);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23a3a3a3' stroke-width='1.5'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;background-size:16px}select.input:hover{background-color:var(--control-hover)}select.input option{background:var(--raised);color:var(--text)}input[type=range].range{--fill:0%;appearance:none;cursor:pointer;background:0 0;width:100%;min-width:0;height:20px;margin:0}.range::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--accent) var(--fill), var(--active) var(--fill));border-radius:999px;height:8px}.range::-webkit-slider-thumb{appearance:none;background:#fff;border:0;border-radius:50%;width:20px;height:20px;margin-top:-6px}.range::-moz-range-track{background:var(--active);border-radius:999px;height:8px}.range::-moz-range-progress{background:var(--accent);border-radius:999px;height:8px}.range::-moz-range-thumb{background:#fff;border:0;border-radius:50%;width:20px;height:20px}.range:disabled{opacity:.5;cursor:not-allowed}input[type=checkbox].check{border:1px solid var(--line-field);background:var(--control) center / 12px no-repeat;appearance:none;cursor:pointer;border-radius:4px;flex:none;width:16px;height:16px;margin:0}input[type=checkbox].check:checked{border-color:var(--accent);background-color:var(--accent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23ffffff' stroke-width='2'%3E%3Cpath d='M3 8.5l3.5 3.5 6.5-7'/%3E%3C/svg%3E")}input[type=checkbox].switch{border:1px solid var(--line-field);background-color:var(--active);appearance:none;cursor:pointer;background-image:radial-gradient(9px at 11px,#fff 92%,#0000 100%);border-radius:999px;flex:none;width:44px;height:24px;margin:0;transition:background-color .15s,border-color .15s}input[type=checkbox].switch:checked{border-color:var(--accent);background-color:var(--accent);background-image:radial-gradient(9px at calc(100% - 11px),#fff 92%,#0000 100%)}.check:disabled,.switch:disabled{opacity:.5;cursor:not-allowed}.tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;max-width:100%;display:flex}.tab{min-height:var(--height-40);padding:0 var(--space-2);color:var(--text-muted);font-size:var(--text-14);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;flex:auto;justify-content:center;align-items:center;gap:6px;font-weight:600;transition:border-color .15s,color .15s;display:inline-flex}.tab:hover{color:var(--text)}.tab[aria-selected=true]{border-bottom-color:var(--strip);color:var(--accent-text)}.tabs-sm .tab{min-height:36px;font-size:var(--text-13);padding:0 6px}.segmented{max-width:100%;padding:var(--space-1);border:1px solid var(--line);border-radius:var(--radius-8);background:var(--surface);align-items:stretch;gap:2px;display:inline-flex;overflow-x:auto}.segment{min-height:30px;padding:0 var(--space-3);border-radius:var(--radius-6);color:var(--text-muted);font-size:var(--text-14);white-space:nowrap;cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;gap:6px;font-weight:600;transition:background-color .15s,color .15s;display:inline-flex}.segment:hover{color:var(--text-strong)}.segment[aria-pressed=true]{background:var(--active);box-shadow:inset 0 0 0 1px var(--line-field);color:var(--text-strong)}.segment:focus-visible{outline-offset:0}.tab:focus-visible{outline-offset:-2px}.tab:disabled,.segment:disabled{opacity:.5;cursor:not-allowed}.segmented-sm{padding:3px}.segmented-sm .segment{min-height:28px;font-size:var(--text-13);padding:0 10px}.card{border:1px solid var(--line);border-radius:var(--radius-12);background:var(--surface)}.eyebrow{color:var(--text-muted);font-size:var(--text-11);letter-spacing:.025em;text-transform:uppercase;font-weight:600;line-height:1.3}.icon{flex:none;width:16px;height:16px;display:inline-flex}.icon svg{width:100%;height:100%}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.error-text{color:var(--danger)}.field{flex-direction:column;gap:6px;display:flex}.field-label{color:var(--text-strong);font-size:var(--text-13);font-weight:600}.field-hint{font-size:var(--text-12);color:var(--text-muted)}.row-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.page-center{min-height:100%;padding:var(--space-8) var(--space-4);flex-direction:column;justify-content:center;align-items:center;display:flex}.status-panel{gap:var(--space-3);overflow-wrap:anywhere;flex-direction:column;width:min(440px,100%);display:flex}.status-panel h1{font-size:var(--text-20)}.status-panel.card{padding:var(--space-6)}@media (pointer:coarse){.btn,.input,.tab,.segment,.tabs-sm .tab,.segmented-sm .segment,input[type=range].range{min-height:var(--tap-min)}.icon-btn,.btn-sm.icon-btn,.btn-small.icon-btn{min-width:var(--tap-min)}input[type=checkbox].check{background-size:18px;width:24px;height:24px}}@media (forced-colors:active){input[type=checkbox].check,input[type=checkbox].switch{appearance:auto}}.loading{justify-content:center;align-items:center;gap:var(--space-4);min-height:100dvh;padding:var(--space-6);text-align:center;flex-direction:column;display:flex}.loading-fill{background:var(--bg);min-height:0;position:absolute;inset:0}.loading-mark{animation:1.6s linear infinite loading-spin;display:inline-flex}.loading-text{font-size:var(--text-14);color:var(--text-muted);font-weight:600}@keyframes loading-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.loading-mark{animation:none}}.si{justify-content:center;gap:var(--space-4);min-height:100%;padding:var(--space-12) var(--space-4) var(--space-6);flex-direction:column;display:flex}.si-main{gap:var(--space-6);width:min(480px,100%);padding:var(--space-8);flex-direction:column;margin:0 auto;display:flex}.si-title{font-size:inherit;font-weight:inherit;letter-spacing:normal;text-align:center}.si-copy{gap:var(--space-3);font-size:var(--text-16);text-align:center;flex-direction:column;line-height:1.55;display:flex}.si-copy .muted{font-size:var(--text-14)}.si-error{padding:var(--space-3);border:1px solid var(--danger);border-radius:var(--radius-8);background:var(--raised)}.si-action{gap:var(--space-2);flex-direction:column;display:flex}.si-note{font-size:var(--text-12);text-align:center}.si-footer{width:min(480px,100%);font-size:var(--text-12);text-align:center;margin:0 auto}@media (max-width:480px){.si{padding:var(--space-6) var(--space-3) var(--space-4);justify-content:flex-start}.si-main{padding:var(--space-6) var(--space-4)}.si-main .logo-large .logo-word{font-size:var(--text-20)}}.hdr{border-bottom:1px solid var(--line);background:var(--surface);flex:none;height:56px}.hdr-inner{align-items:center;gap:var(--space-3);width:min(1160px,100%);height:100%;padding:0 var(--space-6);margin:0 auto;display:flex}.hdr-home{min-height:var(--height-40);border-radius:var(--radius-6);margin-right:var(--space-3);align-items:center;text-decoration:none;display:inline-flex}.hdr-user{margin-left:auto;position:relative}.hdr-user-btn{padding:0 var(--space-3) 0 6px}.hdr-user-btn[aria-expanded=true]{background:var(--active);color:var(--text-strong)}.hdr-user-name{text-overflow:ellipsis;white-space:nowrap;max-width:16ch;overflow:hidden}.hdr-menu{top:calc(100% + var(--space-2));z-index:20;gap:var(--space-1);width:max-content;min-width:200px;max-width:calc(100vw - 2 * var(--space-3));padding:var(--space-2);border:1px solid var(--line);border-radius:var(--radius-12);background:var(--raised);flex-direction:column;display:flex;position:absolute;right:0}.hdr-menu-who{padding:var(--space-1) var(--space-3);color:var(--text-muted);font-size:var(--text-12);overflow-wrap:anywhere}.hdr-menu-who strong{color:var(--text-strong);font-weight:600}.hdr-menu-item{padding:0 var(--space-3);justify-content:flex-start}.hdr-menu-error{padding:0 var(--space-3) var(--space-1);font-size:var(--text-12)}@media (max-width:640px){.hdr-inner{gap:var(--space-2);padding:0 var(--space-3)}.hdr-home{margin-right:0}.hdr-home .logo-word,.hdr-user-name{display:none}.hdr-user-btn{width:var(--height-40);padding:0}}@media (pointer:coarse){.hdr-home{min-height:var(--tap-min)}.hdr-user-btn{min-width:var(--tap-min)}}.report{gap:var(--space-4);flex-direction:column;display:flex}.report-reasons{border:0;flex-direction:column;margin:0;padding:0;display:flex}.report-reasons legend{margin-bottom:var(--space-1);padding:0}.report-reason{align-items:center;gap:var(--space-2);min-height:var(--height-32);cursor:pointer;display:flex}.report-reason input{width:16px;height:16px;accent-color:var(--accent);flex:none;margin:0}.report-reason input:focus-visible{outline:2px solid var(--focus);outline-offset:2px}@media (pointer:coarse){.report-reason{min-height:var(--tap-min)}}.share{gap:var(--space-6);flex-direction:column;display:flex}.share-section{gap:var(--space-2);flex-direction:column;display:flex}.share-link-row{gap:var(--space-2);display:flex}.share-link{font-size:var(--text-13);flex:1}.share-copy-status:empty{display:none}.share-members{border:1px solid var(--line);border-radius:var(--radius-8);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.share-member{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--line)}.share-member:last-child{border-bottom:0}.share-member-row{align-items:center;gap:var(--space-3);min-height:var(--height-32);display:flex}.share-member-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.share-member-name .muted{font-weight:400}.share-member-role{font-size:var(--text-12)}.share-confirm{gap:var(--space-2);margin-top:var(--space-2);padding:var(--space-3);border:1px solid var(--line-strong);border-radius:var(--radius-8);background:var(--raised);font-size:var(--text-13);flex-direction:column;display:flex}.lib{flex-direction:column;min-height:100%;display:flex}.lib-main{width:min(1160px,100%);padding:var(--space-8) var(--space-6) var(--space-12);margin:0 auto}.lib-top{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.lib-top h1{align-items:center;gap:var(--space-2);font-size:var(--text-28);line-height:1.2;display:flex}.lib-top h1 .icon{width:24px;height:24px}.lib-status{gap:var(--space-2);padding:var(--space-6) 0;flex-direction:column;display:flex}.lib-empty{align-items:flex-start;gap:var(--space-3);padding:var(--space-8);flex-direction:column;display:flex}.lib-empty h2{margin-top:var(--space-2);font-size:var(--text-20)}.lib-empty p{max-width:52ch}.lib-empty .row-actions{margin-top:var(--space-2)}.lib-storage{gap:var(--space-2);margin-bottom:var(--space-4);padding:var(--space-4) var(--space-5);flex-direction:column;display:flex}.lib-storage-head{justify-content:space-between;align-items:baseline;gap:var(--space-1) var(--space-4);flex-wrap:wrap;display:flex}.lib-storage-head h2{font-size:var(--text-16)}.lib-storage-error{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.lib-meter{background:var(--line-strong);border-radius:4px;height:8px;overflow:hidden}.lib-meter-fill{background:var(--accent);border-radius:4px;height:100%}.lib-meter-high .lib-meter-fill{background:var(--danger)}.lib-search{margin-bottom:var(--space-3);position:relative}.lib-search .input{width:100%}.lib-search-count{top:50%;right:var(--space-3);font-size:var(--text-13);white-space:nowrap;pointer-events:none;position:absolute;transform:translateY(-50%)}.lib-card{overflow:hidden}.lib-title-wrap{align-items:center;gap:var(--space-3);min-width:0;display:flex}.lib-title-text{flex:auto;min-width:0}.lib-cover{border-radius:var(--radius-6);background:var(--control);object-fit:cover;flex:none;width:40px;height:40px}.lib-cover-empty{border:1px solid var(--line);color:var(--text-muted);justify-content:center;align-items:center;display:inline-flex}.lib-actions{justify-content:flex-end;gap:var(--space-2);display:flex}.lib-table{border-collapse:collapse;width:100%;font-size:var(--text-13)}.lib-table th{padding:10px var(--space-4);border-bottom:1px solid var(--line);color:var(--text-muted);font-size:var(--text-12);text-align:left;white-space:nowrap;font-weight:600}.lib-table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--line);vertical-align:middle;white-space:nowrap}.lib-table tbody tr:last-child td{border-bottom:0}.lib-table tbody tr{cursor:pointer;transition:background-color .15s}.lib-table tbody tr:hover{background:var(--raised)}.lib-table .lib-num{font-variant-numeric:tabular-nums}.lib-table .lib-center{text-align:center}.lib-title-cell{width:100%;max-width:0}.lib-title{color:var(--text-strong);font-size:var(--text-14);text-overflow:ellipsis;border-radius:2px;font-weight:600;text-decoration:none;display:block;overflow:hidden}.lib-table tbody tr:hover .lib-title{text-decoration:underline}.lib-owner{font-size:var(--text-12);text-overflow:ellipsis;display:block;overflow:hidden}.lib-badge{border:1px solid var(--line);border-radius:var(--radius-6);color:#d4d4d4;height:22px;font-size:var(--text-11);background:#ffffff0d;align-items:center;padding:0 6px;font-weight:700;display:inline-flex}.lib-row-actions{text-align:right}.lib-import{gap:var(--space-2);flex-direction:column;display:flex}.lib-import-file{overflow-wrap:anywhere;font-weight:600}.lib-import-warnings{gap:var(--space-1);padding-left:var(--space-4);flex-direction:column;margin:0;display:flex}@media (max-width:640px){.lib-main{padding:var(--space-6) var(--space-3) var(--space-8)}.lib-empty{padding:var(--space-6) var(--space-4)}.lib-table thead{display:none}.lib-table,.lib-table tbody{display:block}.lib-table tbody tr{align-items:center;gap:var(--space-2) var(--space-4);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--line);grid-template:"title title actions""role notes actions"1fr"length edited actions"1fr/minmax(0,1fr) minmax(0,1fr) auto;display:grid}.lib-table tbody tr:last-child{border-bottom:0}.lib-table td{border:0;padding:0;display:block}.lib-table td[data-label]:before{content:attr(data-label) " ";color:var(--text-muted);font-size:var(--text-12);font-weight:400}.lib-table .lib-title-cell{grid-area:title;width:auto;max-width:none}.lib-table .lib-role{grid-area:role}.lib-table .lib-notes{grid-area:notes}.lib-table .lib-length{grid-area:length}.lib-table .lib-edited{grid-area:edited}.lib-table .lib-center{text-align:left}.lib-table .lib-row-actions{grid-area:actions;align-self:start}.lib-actions{flex-direction:column}.lib-storage{padding:var(--space-4)}}.inv{flex-direction:column;min-height:100%;display:flex}.inv-main{padding:var(--space-12) var(--space-4);flex:1;justify-content:center;align-items:flex-start;display:flex}.inv-panel{width:min(480px,100%);padding:var(--space-6)}.inv-body{gap:var(--space-3);overflow-wrap:anywhere;flex-direction:column;display:flex}.inv-body h1{font-size:var(--text-20)}.inv-body .row-actions{margin-top:var(--space-2)}@media (max-width:480px){.inv-main{padding:var(--space-6) var(--space-3)}.inv-panel{padding:var(--space-4)}}.tut-ring{z-index:40;border:2px solid var(--accent-text);border-radius:var(--radius-8);pointer-events:none;position:fixed}.tut-card{z-index:45;gap:var(--space-2);padding:var(--space-4);border:1px solid var(--line-strong);border-radius:var(--radius-12);background:var(--raised);font-size:var(--text-14);flex-direction:column;line-height:1.45;display:flex;position:fixed}.tut-progress{font-size:var(--text-12)}.tut-title{font-size:var(--text-16);line-height:1.3}.tut-hint{color:var(--accent-text);font-size:var(--text-13)}.tut-passed{align-items:center;gap:var(--space-2);min-height:var(--height-32);font-weight:600;display:flex}.tut-passed .icon{color:var(--success)}.tut-actions{align-items:center;gap:var(--space-2);margin-top:var(--space-1);flex-wrap:wrap;display:flex}.tut-spacer{flex:1}.tut-home{flex-direction:column;min-height:100%;display:flex}.tut-home-main{width:min(760px,100%);padding:var(--space-8) var(--space-6) var(--space-12);margin:0 auto}.tut-home-main h1{align-items:center;gap:var(--space-2);font-size:var(--text-28);line-height:1.2;display:flex}.tut-home-main h1 .icon{width:24px;height:24px}.tut-home-intro{max-width:60ch;margin:var(--space-2) 0 var(--space-6)}.tut-chapters{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.tut-chapter{align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-5);display:flex}.tut-chapter-num{border:1px solid var(--line-strong);border-radius:50%;flex:none;justify-content:center;align-items:center;width:32px;height:32px;font-weight:700;display:inline-flex}.tut-chapter-text{flex:1;min-width:0}.tut-chapter-text h2{align-items:center;gap:var(--space-2);font-size:var(--text-16);flex-wrap:wrap;display:flex}.tut-chapter-text p{margin-top:var(--space-1);font-size:var(--text-13)}.tut-done{border:1px solid var(--line);border-radius:var(--radius-6);color:#d4d4d4;height:22px;font-size:var(--text-11);background:#ffffff0d;align-items:center;padding:0 6px;font-weight:700;display:inline-flex}@media (max-width:640px){.tut-home-main{padding:var(--space-6) var(--space-3) var(--space-8)}.tut-chapter{padding:var(--space-4);flex-wrap:wrap}.tut-chapter-text{flex-basis:calc(100% - 32px - var(--space-4))}.tut-chapter .btn{margin-left:calc(32px + var(--space-4))}}@media (max-width:820px),(max-height:540px) and (orientation:landscape){.tut-card{gap:var(--space-1);padding:var(--space-3);font-size:var(--text-13)}}
