@font-face{font-family:Geist Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./geist-sans-latin-400-normal-gapTbOY8.woff2)format("woff2"),url(./geist-sans-latin-400-normal-BOaIZNA2.woff)format("woff")}@font-face{font-family:Geist Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./geist-sans-latin-600-normal-DFOURf8L.woff2)format("woff2"),url(./geist-sans-latin-600-normal-CA1yjETN.woff)format("woff")}:root{--color-canvas:#fff;--color-band:#f5f5f4;--color-inverse:#272824;--color-on-inverse:#f5f5f4;--color-carbon:#1a1a1a;--color-on-carbon:#f5f5f4;--color-on-carbon-muted:#b4b4b0;--color-header:#ffffffdb;--color-ink:#292824;--color-muted:#67635b;--color-muted-soft:#77736c;--color-reading:#45433e;--color-subtle:#d8d4cd;--color-focus:#52644a;--color-olive:#777e69;--color-surface:#fff;--color-paper:#fff;--color-surface-low:#fafafa;--color-container-high:#efefed;--color-placeholder:#efefed;--color-outline:#8a867e;--color-outline-variant:#d8d4cd;--color-card-muted:#67635b;--color-accent:#272824;--color-accent-hover:#000;--color-accent-active:#000;--color-accent-container:#efefed;--color-on-accent-container:#292824;--color-tertiary-container:#e7e9df;--color-on-tertiary-container:#3d4233;--color-error:#b3261e;--color-error-container:#f9dedc;--color-success:#176b42;--color-warning:#b26a00;--font-display:"Sora", "Segoe UI", system-ui, sans-serif;--font-sans:"Geist Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--text-display:clamp(2.5rem, 3.6vw, 3rem);--text-h1:clamp(2.25rem, 3vw, 2.75rem);--text-headline:clamp(1.75rem, 2.2vw, 2rem);--text-h2:clamp(1.375rem, 2vw, 1.625rem);--text-h3:1rem;--text-body:clamp(.9375rem, .9rem + .15vw, 1.0625rem);--text-small:.875rem;--text-xs:.8125rem;--text-label:.75rem;--app-header-h:44px;--text-fine:.625rem;--text-tag:.5rem;--text-eyebrow:.875rem;--text-hero:clamp(2.5rem, 4.4vw, 3.5rem);--text-lead:clamp(1.0625rem, 1rem + .3vw, 1.25rem);--leading-hero:1.08;--track-hero:-.035em;--text-read-title:clamp(1.75rem, 2.2vw, 2rem);--text-read-h2:1.0625rem;--text-read:.9375rem;--leading-read:1.6;--measure-read:768px;--leading-display:1.2;--leading-headline:1.22;--leading-h1:1.08;--leading-h2:1.31;--leading-h3:1.37;--leading-body:1.6;--track-display:0;--track-headline:-.02em;--track-h1:-.02em;--track-h2:-.01em;--track-h3:0;--track-body:0;--track-label:.06em;--track-label-md:.02em;--measure:68ch;--measure-article:64ch;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-12:48px;--space-16:64px;--space-24:96px;--space-32:128px;--space-40:160px;--page-gutter:clamp(20px, 3vw, 32px);--content-max:clamp(1280px, 86vw, 1800px);--section-space:clamp(64px, 9vw, 140px);--grid-gap:var(--space-4);--card-gap:var(--space-4);--gallery-gap:clamp(16px, 1.6vw, 24px);--card-padding:var(--space-5);--border-hairline:1px solid var(--color-subtle);--radius-control:9999px;--radius-input:10px;--radius-md:6px;--radius-card:12px;--radius-card-elevated:16px;--radius-full:9999px;--shadow-1:0 1px 2px #2928240a;--shadow-1-hover:0 12px 32px #29282414;--shadow-2:0 20px 50px #2928241a;--motion-fast:.15s;--motion-base:.28s;--motion-slow:.52s;--motion-enter:.72s;--ease-standard:cubic-bezier(.22, 1, .36, 1);--ease-ui:cubic-bezier(0, 0, .2, 1);--z-header:20;--z-skip:100}body{background:var(--color-canvas);color:var(--color-ink);font-family:var(--font-sans);font-size:var(--text-body);letter-spacing:var(--track-body);line-height:var(--leading-body);-webkit-font-smoothing:antialiased;margin:0}:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.kd-label,time,.tnum{font-variant-numeric:tabular-nums}.kd-label{font-family:var(--font-sans);font-size:var(--text-label);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--color-muted);font-weight:600;line-height:1.33}.kd-eyebrow{font:500 var(--text-eyebrow) / 1.4 var(--font-sans);color:var(--color-muted);margin:0}.kd-hero{font:500 var(--text-hero) / var(--leading-hero) var(--font-sans);letter-spacing:var(--track-hero);color:var(--color-ink);text-wrap:balance;margin:0}.kd-lead{font:400 var(--text-lead) / 1.5 var(--font-sans);color:var(--color-muted);text-wrap:pretty;margin:0}.kd-title{font:600 var(--text-h3) / 1.4 var(--font-sans);color:var(--color-ink);margin:0}.kd-muted{font:400 var(--text-small) / 1.5 var(--font-sans);color:var(--color-muted);margin:0}.kd-badge{border-radius:var(--radius-full);background:var(--color-tertiary-container);min-height:24px;color:var(--color-on-tertiary-container);font:600 var(--text-label) / 1.33 var(--font-sans);letter-spacing:var(--track-label);white-space:nowrap;flex-shrink:0;align-items:center;padding:4px 12px;display:inline-flex}.kd-skip{left:var(--space-4);top:var(--space-4);z-index:var(--z-skip);padding:var(--space-3) var(--space-4);border-radius:var(--radius-control);background:var(--color-ink);color:#fff;position:absolute;transform:translateY(-200%)}.kd-skip:focus{transform:none}.kd-header{align-items:center;gap:var(--space-3);height:var(--app-header-h);padding:0 var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-subtle);font-family:var(--font-sans);flex:none;display:flex}.kd-header__brand{padding-right:var(--space-3);border-right:1px solid var(--color-subtle);align-items:center;display:flex}.kd-header__brand img{width:auto;height:18px;display:block}.kd-header__title{font:600 var(--text-small) / 1 var(--font-sans);color:var(--color-ink);white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.kd-header__meta{align-items:center;gap:var(--space-4);font-size:var(--text-small);color:var(--color-muted);margin-left:auto;display:flex}.kd-header a{color:inherit;text-decoration:none}.kd-header__meta a:hover{color:var(--color-ink)}.kd-app-footer{justify-content:space-between;align-items:center;gap:4px var(--space-3);padding:var(--space-2) var(--space-4) max(var(--space-2), env(safe-area-inset-bottom));border-top:1px solid var(--color-subtle);font:400 var(--text-fine) / 1.5 var(--font-sans);color:var(--color-muted);background:var(--color-surface);flex-wrap:wrap;display:flex}.kd-app-footer a{color:inherit}.kd-app-footer a:hover{color:var(--color-ink)}.kd-social{vertical-align:middle;align-items:center;gap:6px;display:inline-flex}.kd-social a{color:inherit;place-items:center;display:inline-grid}.kd-social a:hover{color:var(--color-ink)}.kd-social svg{fill:currentColor;display:block}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:root{--bg:#eef0f3;--panel:#fff;--rail:#1f2430;--rail-fg:#aab2c0;--text:#1b1f27;--muted:#6b7280;--line:#e3e6eb;--accent:#2f6fed;--accent-soft:#e6eeff;--danger:#d14343;--radius:10px;--rail-w:56px;--panel-w:300px;color:var(--text);-webkit-tap-highlight-color:transparent;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;margin:0;overflow:hidden}body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}textarea,input{-webkit-user-select:text;user-select:text}button{font:inherit;color:inherit;cursor:pointer}button:disabled{opacity:.45;cursor:default}code{background:var(--bg);border-radius:4px;padding:1px 4px;font-size:12px}.shell{flex-direction:column;height:100dvh;display:flex}.app{flex:1;min-height:0;font-size:14px;display:flex}body{font-family:inherit;font-size:inherit;letter-spacing:normal;color:inherit;line-height:normal}.sidebar{z-index:30;flex:none;display:flex}.rail{width:var(--rail-w);background:var(--rail);padding:10px 0 max(10px, env(safe-area-inset-bottom));flex-direction:column;align-items:center;gap:6px;display:flex}.rail button{width:40px;height:40px;color:var(--rail-fg);background:0 0;border:0;border-radius:10px;place-items:center;display:grid}.rail button:hover{color:#fff;background:#ffffff14}.rail button.on{color:#fff;background:var(--accent)}.rail .dock{margin-top:auto}.panel{width:var(--panel-w);background:var(--panel);border-right:1px solid var(--line);flex-direction:column;min-height:0;display:flex}.panel header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:14px 14px 10px 16px;display:flex}.panel h2{margin:0;font-size:15px;font-weight:600}.panel-body{flex-direction:column;flex:1;gap:12px;padding:14px 16px 20px;display:flex;overflow-y:auto}.btn{border:1px solid var(--line);background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:8px;height:36px;padding:0 12px;display:inline-flex}.btn:hover:not(:disabled){border-color:#c9ced6}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary.on{background:#1d4fb8}.btn.ghost{background:0 0}.btn.danger{color:var(--danger)}.icon-btn{background:0 0;border:1px solid #0000;border-radius:8px;flex:none;place-items:center;width:32px;height:32px;display:grid}.icon-btn:hover:not(:disabled){background:var(--bg)}.icon-btn.on{background:var(--accent-soft);color:var(--accent);border-color:#c8d8ff}.row{gap:8px;display:flex}.row>*{flex:1}.field{flex-direction:column;gap:6px;display:flex}.field>span{color:var(--muted);justify-content:space-between;font-size:12px;font-weight:500;display:flex}.field em{color:var(--text);font-variant-numeric:tabular-nums;font-style:normal}select{height:36px;font:inherit;border:1px solid var(--line);color:var(--text);background:#fff;border-radius:8px;padding:0 10px}input[type=range]{width:100%;accent-color:var(--accent)}.toggle{cursor:pointer;justify-content:space-between;align-items:center;display:flex}.toggle input{display:none}.toggle i{background:#cfd4dc;border-radius:10px;width:36px;height:20px;transition:background .2s;position:relative}.toggle i:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .2s;position:absolute;top:2px;left:2px}.toggle input:checked+i{background:var(--accent)}.toggle input:checked+i:after{transform:translate(16px)}.segmented{background:var(--bg);border-radius:8px;padding:3px;display:flex}.segmented button{background:0 0;border:0;border-radius:6px;flex:1;height:30px}.segmented button.on{background:#fff;font-weight:600;box-shadow:0 1px 3px #0000001f}.clip-row{grid-template-columns:56px 1fr 32px;align-items:center;gap:8px;display:grid}.check{align-items:center;gap:6px;font-weight:600;display:flex}.check small{color:var(--muted);font-size:11px;font-weight:400}.hint{color:var(--muted);margin:0;font-size:12px;line-height:1.5}.error{color:var(--danger);margin:0;font-size:12px;line-height:1.5}.annot-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.annot-list button{text-align:left;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:10px;width:100%;padding:8px;display:flex}.annot-list button:hover,.annot-list button.on{background:var(--accent-soft)}.annot-list b{background:var(--rail);color:#fff;border-radius:50%;flex:none;place-items:center;width:22px;height:22px;font-size:11px;display:grid}.annot-list span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.viewport{flex:1;min-width:0;position:relative}.viewport.annotating canvas{cursor:crosshair}.marker{background:var(--rail);color:#fff;border:2px solid #fff;border-radius:50%;place-items:center;width:26px;height:26px;padding:0;font-size:12px;font-weight:700;transition:transform .15s;display:grid;box-shadow:0 2px 8px #00000059}.marker:hover{transform:scale(1.12)}.marker.active{background:var(--accent)}.marker.draggable{cursor:grab;touch-action:none}.marker.draggable:active{cursor:grabbing}.html-layer{pointer-events:none;position:absolute;inset:0;overflow:hidden}.html-layer .marker,.html-layer .note-anchor{pointer-events:auto}.note-anchor{position:absolute;top:-14px;left:22px}.note-anchor.left{left:auto;right:22px}.note-anchor.up{top:auto;bottom:-14px}.dropzone{text-align:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:min(360px,100% - 32px);color:var(--muted);background:#ffffffd9;border:2px dashed #b6bdc8;border-radius:16px;flex-direction:column;align-items:center;gap:8px;padding:28px 20px;display:flex;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.dropzone h2{color:var(--text);margin:4px 0 0;font-size:17px}.dropzone p{margin:0 0 8px}.drop-overlay{pointer-events:none;border:3px dashed var(--accent);color:var(--accent);background:#2f6fed14;border-radius:16px;place-items:center;font-size:18px;font-weight:600;display:grid;position:absolute;inset:12px}.loading{background:#fff;border-radius:20px;align-items:center;gap:10px;padding:8px 14px;display:flex;position:absolute;top:16px;left:50%;transform:translate(-50%);box-shadow:0 2px 10px #00000026}.spinner{border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.pill{pointer-events:none;background:var(--rail);color:#fff;white-space:nowrap;border-radius:20px;padding:8px 14px;font-size:13px;position:absolute;top:16px;left:50%;transform:translate(-50%)}.note-bubble{width:max-content;max-width:240px;max-height:160px;color:var(--text);white-space:pre-wrap;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text;background:#fffffff5;border-radius:8px;padding:8px 12px;font-size:13px;line-height:1.45;overflow-y:auto;box-shadow:0 4px 14px #0003}.note-bubble.empty{color:var(--muted);font-style:italic}.note-editor{border:1px solid var(--line);background:var(--bg);border-radius:10px;flex-direction:column;gap:10px;padding:12px;display:flex}.note-editor header{align-items:center;gap:10px;display:flex}.note-editor h3{flex:1;margin:0;font-size:14px}.note-editor textarea{resize:vertical;width:100%;min-height:80px;font:inherit;color:var(--text);border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 10px}.note-editor textarea:focus,select:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}@media (width<=768px){:root{--rail-w:52px}.sidebar{position:relative}.panel{top:8px;left:calc(var(--rail-w) + 8px);width:min(var(--panel-w), calc(100vw - var(--rail-w) - 16px));max-height:calc(100dvh - var(--app-header-h) - 16px);border:0;border-radius:14px;position:absolute;box-shadow:0 10px 30px #00000040}.note-bubble{max-width:180px}}
