heyiam 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ :root{--surface:#f8f9fb;--surface-container-lowest:#fff;--surface-container-low:#f3f4f6;--surface-container:#edeef0;--surface-container-high:#e7e8ea;--surface-container-highest:#e1e2e4;--surface-dim:#d9dadc;--surface-tint:#316190;--primary:#084471;--on-primary:#fff;--primary-container:#2b5c8a;--on-primary-container:#b0d4ff;--primary-fixed:#d0e4ff;--primary-fixed-dim:#9dcaff;--secondary:#006a61;--on-secondary:#fff;--secondary-container:#93f4e6;--tertiary:#663500;--on-tertiary:#fff;--tertiary-fixed:#ffdcc3;--tertiary-fixed-dim:#ffb77d;--on-tertiary-fixed:#2f1500;--on-tertiary-fixed-variant:#6e3900;--on-surface:#191c1e;--on-surface-variant:#42474e;--outline:#72787e;--outline-variant:#c2c7d0;--error:#ba1a1a;--error-container:#ffdad6;--on-error:#fff;--inverse-surface:#2e3132;--inverse-on-surface:#f0f1f3;--inverse-primary:#9dcaff;--font-display:"Space Grotesk", sans-serif;--font-body:"Inter", sans-serif;--font-mono:"IBM Plex Mono", monospace;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--spacing-1:.25rem;--spacing-2:.5rem;--spacing-3:.75rem;--spacing-4:1rem;--spacing-5:1.25rem;--spacing-6:1.5rem;--spacing-8:2rem;--spacing-10:2.5rem;--spacing-12:3rem;--spacing-16:4rem;--spacing-20:5rem;--spacing-24:5.5rem;--shadow-ambient:0 12px 40px #191c1e0f;--shadow-sm:0 1px 3px #191c1e0a;--ghost-border:1px solid #c2c7d026;font-family:var(--font-body);color:var(--on-surface);background:var(--surface);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.5}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{min-height:100vh;margin:0;overflow:hidden}#root{flex-direction:column;min-height:100vh;display:flex}::selection{background:var(--primary-container);color:var(--on-primary-fixed)}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#c2c7d04d;border-radius:10px}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.app-shell{background:var(--surface);flex-direction:column;height:100vh;display:flex;overflow:hidden}.app-shell__body{flex:1;min-height:0;display:flex}.app-header{padding:var(--spacing-3) var(--spacing-6);background:var(--surface);z-index:40;flex-shrink:0;justify-content:space-between;align-items:center;height:3.5rem;display:flex;position:sticky;top:0}.app-header__left{align-items:center;gap:var(--spacing-6);display:flex}.app-header__logo{font-family:var(--font-display);color:var(--on-surface);letter-spacing:-.03em;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:1.25rem;font-weight:700;text-decoration:none}.app-header__back{width:2rem;height:2rem;color:var(--on-surface-variant);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;transition:background-color .15s;display:flex}.app-header__back:hover{background:var(--surface-container-low)}.app-header__back svg{width:1.25rem;height:1.25rem}.app-header__title{font-family:var(--font-display);color:var(--on-surface-variant);letter-spacing:-.01em;font-size:.875rem;font-weight:600}.app-header__right{align-items:center;gap:var(--spacing-3);display:flex}.app-header__auth-indicator{align-items:center;gap:var(--spacing-2);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);font-size:.625rem;display:flex}.app-header__auth-dot{background:var(--outline-variant);border-radius:50%;width:.5rem;height:.5rem}.app-header__auth-dot--active{background:var(--secondary)}.app-header__icon-btn{width:2rem;height:2rem;color:var(--on-surface-variant);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;transition:background-color .15s;display:flex}.app-header__icon-btn:hover{background:var(--surface-container-low)}.app-header__icon-btn svg{width:1.25rem;height:1.25rem}.app-sidebar{background:var(--surface-container-low);border-right:var(--ghost-border);flex-direction:column;flex-shrink:0;width:16rem;display:flex;overflow-y:auto}.app-sidebar--collapsed{width:0;overflow:hidden}.app-sidebar__section{padding:var(--spacing-6)}.app-sidebar__label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--on-surface-variant);margin-bottom:var(--spacing-4);font-size:.625rem}.app-sidebar__list{gap:var(--spacing-1);flex-direction:column;list-style:none;display:flex}.app-sidebar__item{align-items:center;gap:var(--spacing-2);padding:var(--spacing-2) var(--spacing-3);color:var(--on-surface);border-radius:var(--radius-md);cursor:pointer;text-align:start;background:0 0;border:none;width:100%;font-size:.875rem;font-weight:500;transition:background-color .15s;display:flex}.app-sidebar__item:hover{background:var(--surface-container)}.app-sidebar__item--active{background:var(--surface-container-high);color:var(--primary)}.app-sidebar__dot{background:var(--outline-variant);border-radius:50%;flex-shrink:0;width:.375rem;height:.375rem}.app-sidebar__item--active .app-sidebar__dot,.app-sidebar__item:hover .app-sidebar__dot{background:var(--primary)}.app-sidebar__footer{padding:var(--spacing-6);border-top:var(--ghost-border);margin-top:auto}.app-main{background:var(--surface);flex:1;min-width:0;overflow:hidden auto}.app-main__header{padding:var(--spacing-6) var(--spacing-8);justify-content:space-between;align-items:flex-end;display:flex}.app-main__title{font-family:var(--font-display);color:var(--on-surface);letter-spacing:-.02em;font-size:1.875rem;font-weight:700}.app-main__subtitle{color:var(--on-surface-variant);margin-top:var(--spacing-1);font-size:.875rem}.app-bottom-bar{padding:var(--spacing-4) var(--spacing-6);z-index:30;justify-content:center;display:flex;position:sticky;bottom:0;left:0;right:0}.app-bottom-bar__inner{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:var(--ghost-border);box-shadow:var(--shadow-lg);border-radius:var(--radius-md);padding:var(--spacing-4) var(--spacing-6);align-items:center;gap:var(--spacing-8);background:#fffc;width:100%;max-width:42rem;display:flex}.session-card{padding:var(--spacing-4);background:var(--surface-container-lowest);border-radius:var(--radius-sm);cursor:pointer;border:var(--ghost-border);align-items:center;gap:var(--spacing-4);transition:background-color .15s;display:flex}.session-card:hover{background:var(--surface-container-high)}.session-card--selected{background:var(--surface-container-lowest);box-shadow:inset 0 0 0 1px #08447133}.session-card__identity{flex:2;min-width:0}.session-card__title{font-family:var(--font-display);color:var(--on-surface);white-space:nowrap;text-overflow:ellipsis;font-size:.9375rem;font-weight:600;overflow:hidden}.session-card__date{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--on-surface-variant);margin-top:.125rem;font-size:.625rem}.session-card__metrics{align-items:center;gap:var(--spacing-4);font-family:var(--font-mono);color:var(--on-surface-variant);flex:1;font-size:.75rem;display:flex}.session-card__metric{align-items:center;gap:var(--spacing-1);white-space:nowrap;display:flex}.session-card__status{flex-shrink:0}.raw-log{background:var(--inverse-surface);color:var(--inverse-on-surface);border-radius:var(--radius-sm);font-family:var(--font-mono);flex-direction:column;font-size:.8125rem;line-height:1.6;display:flex;overflow-y:auto}.raw-log__header{padding:var(--spacing-4);border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;display:flex}.raw-log__header-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--primary-container);font-size:.625rem;font-weight:700}.raw-log__dots{gap:var(--spacing-2);display:flex}.raw-log__dot{opacity:.5;border-radius:50%;width:.5rem;height:.5rem}.raw-log__dot--red{background:var(--error)}.raw-log__dot--yellow{background:var(--tertiary)}.raw-log__dot--blue{background:var(--primary)}.raw-log__content{padding:var(--spacing-4);flex:1;overflow-y:auto}.raw-log__line{gap:var(--spacing-4);display:flex}.raw-log__line-num{text-align:end;opacity:.3;-webkit-user-select:none;user-select:none;flex-shrink:0;width:2rem}.raw-log__line-text{color:var(--inverse-on-surface)}.raw-log__cursor{background:var(--primary);vertical-align:middle;width:.5rem;height:1rem;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.editor-panel{flex:1;grid-template-columns:1fr 2fr;min-height:0;display:grid}.editor-panel__raw{background:var(--inverse-surface);color:var(--inverse-on-surface);font-family:var(--font-mono);border-inline-end:1px solid #ffffff0d;flex-direction:column;font-size:.75rem;display:flex;overflow-y:auto}.editor-panel__raw-header{padding:0 var(--spacing-4);background:var(--inverse-surface);border-bottom:1px solid #ffffff0f;flex-shrink:0;justify-content:space-between;align-items:center;height:2.5rem;display:flex}.editor-panel__raw-label{text-transform:uppercase;letter-spacing:.04em;opacity:.6;font-size:.625rem}.editor-panel__raw-content{padding:var(--spacing-4);flex:1;line-height:1.6;overflow-y:auto}.editor-panel__draft{background:var(--surface-container-low);position:relative;overflow-y:auto}.editor-panel__draft-content{max-width:56rem;padding:var(--spacing-12);margin:0 auto;padding-bottom:8rem}.btn{justify-content:center;align-items:center;gap:var(--spacing-2);font-family:var(--font-body);padding:var(--spacing-2) var(--spacing-5);border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;border:none;font-size:.875rem;font-weight:600;line-height:1.4;text-decoration:none;transition:opacity .15s,transform .1s;display:inline-flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-primary:hover{opacity:.9}.btn-secondary{color:var(--primary);border:var(--ghost-border);background:0 0}.btn-secondary:hover{background:var(--surface-container)}.btn-tertiary{color:var(--on-surface-variant);font-family:var(--font-mono);padding:var(--spacing-1) var(--spacing-2);background:0 0;border:none;font-size:.75rem;text-decoration:none}.btn-tertiary:hover{color:var(--primary);text-decoration:underline}.btn--lg{padding:var(--spacing-3) var(--spacing-8);font-size:.9375rem}.btn--full{width:100%}.btn--icon{padding:var(--spacing-2);width:2.5rem;height:2.5rem}.chip{align-items:center;gap:var(--spacing-1);padding:var(--spacing-1) var(--spacing-3);background:var(--surface-container-high);border-radius:var(--radius-xs);font-family:var(--font-mono);color:var(--on-surface);border:var(--ghost-border);white-space:nowrap;font-size:.625rem;font-weight:700;display:inline-flex}.chip__dot{background:var(--primary);border-radius:50%;width:.25rem;height:.25rem}.chip--primary{color:var(--primary);background:#08447114}.chip--published,.chip--sealed{background:var(--secondary-container);color:var(--secondary);font-weight:600}.chip--draft{background:var(--tertiary-fixed);color:var(--tertiary)}.chip--enhanced{color:var(--primary);background:#0844711f}.chip--archived{background:var(--surface-container-highest);color:var(--on-surface-variant)}.chip--success{background:var(--secondary-container);color:var(--secondary)}.stats-grid{gap:var(--spacing-4);grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));display:grid}.stat-card__value{font-family:var(--font-display);color:var(--on-surface);font-size:2rem;font-weight:700;line-height:1}.stat-card__label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--on-surface-variant);margin-top:var(--spacing-2);font-size:.625rem}.terminal{background:var(--inverse-surface);color:var(--inverse-on-surface);border-radius:var(--radius-md);font-family:var(--font-mono);padding:var(--spacing-5);font-size:.8125rem;line-height:1.6;overflow-x:auto}.terminal__prompt{color:var(--primary-container)}.terminal__success{color:var(--secondary);font-weight:700}.terminal__error{color:var(--error-container)}.terminal__warn{color:var(--tertiary-container)}.terminal__muted{opacity:.4}.exec-path{gap:var(--spacing-4);flex-direction:column;display:flex}.exec-path__step{gap:var(--spacing-6);padding:var(--spacing-4);border-radius:var(--radius-sm);align-items:flex-start;transition:background-color .15s;display:flex}.exec-path__step:hover{background:var(--surface-container-lowest)}.exec-path__step-icon{background:var(--secondary-container);border-radius:var(--radius-md);width:2.5rem;height:2.5rem;color:var(--secondary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.exec-path__step-content{flex:1;min-width:0}.exec-path__step-num{font-family:var(--font-mono);color:var(--primary);font-size:.75rem;font-weight:700}.exec-path__step-title{font-family:var(--font-display);color:var(--on-surface);margin-top:var(--spacing-1);font-size:.9375rem;font-weight:700}.exec-path__step-desc{color:var(--on-surface-variant);margin-top:var(--spacing-1);font-size:.875rem;line-height:1.5}.badge{align-items:center;gap:var(--spacing-1);padding:.125rem var(--spacing-2);border-radius:var(--radius-xs);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.02em;font-size:.625rem;font-weight:700;display:inline-flex}.badge--sealed{background:var(--primary-container);color:var(--on-primary-fixed);border:1px solid #0844711a}.badge--draft{background:var(--surface-container-high);color:var(--on-surface-variant)}.badge--published{background:var(--secondary-container);color:var(--secondary)}.badge--archived{background:var(--surface-container-highest);color:var(--on-surface-variant)}.label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--on-surface-variant);font-size:.625rem}.label--primary{color:var(--primary);font-weight:700}.input{font-family:var(--font-body);padding:var(--spacing-2) var(--spacing-4);background:var(--surface-container-lowest);border-radius:var(--radius-md);color:var(--on-surface);border:none;width:100%;font-size:.875rem;transition:box-shadow .15s;box-shadow:inset 0 0 0 1px #c2c7d033}.input:focus{outline:none;box-shadow:inset 0 0 0 1px #08447166}.input::placeholder{color:var(--outline-variant);opacity:.6}.textarea{font-family:var(--font-body);padding:var(--spacing-4);color:var(--on-surface);resize:none;background:0 0;border:none;width:100%;font-size:1rem;line-height:1.6}.textarea:focus{outline:none}.textarea::placeholder{color:var(--on-surface-variant);opacity:.7}.card{background:var(--surface-container-lowest);border-radius:var(--radius-sm);border:var(--ghost-border);padding:var(--spacing-6)}.card--elevated{box-shadow:var(--shadow-ambient)}.divider{height:1px;margin:var(--spacing-6) 0;background:#c2c7d026;border:none}.blueprint-grid{z-index:-1;pointer-events:none;opacity:.03;background-image:radial-gradient(var(--primary) .5px, transparent .5px);background-size:24px 24px;position:fixed;inset:0}.glass-panel{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:var(--ghost-border);background:#fffc}.text-display-lg{font-family:var(--font-display);letter-spacing:-.02em;color:var(--on-surface);font-size:3.5rem;font-weight:700;line-height:1.1}.text-headline{font-family:var(--font-display);letter-spacing:-.02em;color:var(--on-surface);font-size:1.875rem;font-weight:700}.text-title{font-family:var(--font-body);color:var(--on-surface);font-size:1.25rem;font-weight:600}.text-body{font-family:var(--font-body);color:var(--on-surface);font-size:.875rem;line-height:1.5}.text-label{font-family:var(--font-mono);color:var(--on-surface-variant);font-size:.75rem}.text-label-sm{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--on-surface-variant);font-size:.625rem}.text-mono{font-family:var(--font-mono)}.setup-banner{background:var(--tertiary-fixed);padding:var(--spacing-4) var(--spacing-6);border-radius:var(--radius-sm);margin-bottom:var(--spacing-8);align-items:center;gap:var(--spacing-3);display:flex}.setup-banner__icon{color:var(--tertiary);flex-shrink:0;font-size:1rem;font-weight:600}.setup-banner__text{color:var(--tertiary);font-size:.875rem}.setup-banner__action{flex-shrink:0;margin-left:auto}.empty-state__desc{color:var(--on-surface-variant);max-width:400px;font-size:.9375rem;line-height:1.6}.empty-state__cmd{margin-top:var(--spacing-8)}.empty-state__cmd code{font-family:var(--font-mono);color:var(--on-surface-variant);background:var(--surface-container-low);padding:var(--spacing-3) var(--spacing-5);border-radius:var(--radius-sm);font-size:.8125rem;display:inline-block}.chip--queued{background:var(--surface-container-highest);color:var(--on-surface-variant);opacity:.7}.chip--processing{color:#006a61;background:#006a6126;animation:1.2s ease-in-out infinite chip-pulse}@keyframes chip-pulse{0%,to{opacity:1}50%{opacity:.5}}.chip--uploaded{background:var(--secondary-container);color:var(--secondary);font-weight:600}.chip--failed{color:#ba1a1a;background:#ba1a1a1f;font-weight:600}.sidebar-stats{font-family:var(--font-mono);color:var(--on-surface-variant);font-size:.75rem;line-height:2}.sidebar-stats strong{color:var(--on-surface)}.terminal-line{line-height:1.8}.terminal-line--prompt{color:#34d399}.terminal-line--ai{color:#60a5fa}.terminal-line--dim{color:#ffffff4d}.terminal-line--success{color:#34d399;font-weight:600}.settings-page{max-width:40rem;padding:var(--spacing-8);gap:var(--spacing-8);flex-direction:column;margin:0 auto;display:flex}.settings-section{gap:var(--spacing-4);flex-direction:column;display:flex}.settings-row{justify-content:space-between;align-items:center;display:flex}.settings-row__label{font-family:var(--font-body);color:var(--on-surface-variant);font-size:.875rem}.settings-row__value{font-family:var(--font-mono);color:var(--on-surface);font-size:.8125rem}.settings-input-group{gap:var(--spacing-2);flex-direction:column;display:flex}.settings-input-wrapper{position:relative}.settings-input-wrapper .input{padding-right:3rem}.settings-input-toggle{right:var(--spacing-2);color:var(--on-surface-variant);cursor:pointer;padding:var(--spacing-1);font-family:var(--font-mono);text-transform:uppercase;background:0 0;border:none;font-size:.625rem;position:absolute;top:50%;transform:translateY(-50%)}.settings-help{color:var(--outline);font-size:.75rem;line-height:1.4}.collapsible{background:var(--surface-container-lowest);border-radius:var(--radius-sm);border:1px solid #c2c7d026;overflow:hidden}.collapsible__summary{padding:var(--spacing-4);cursor:pointer;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface);-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;font-size:.75rem;font-weight:700;list-style:none;transition:background-color .15s;display:flex}.collapsible__summary:hover{background:var(--surface-container-low)}.collapsible__summary::-webkit-details-marker{display:none}.collapsible__chevron{color:var(--on-surface-variant);font-size:1.25rem;transition:transform .2s}details[open]>.collapsible__summary .collapsible__chevron{transform:rotate(180deg)}.collapsible__content{padding:var(--spacing-4);border-top:1px solid #c2c7d01a;padding-top:0}.file-list{font-family:var(--font-mono);gap:var(--spacing-2);padding-top:var(--spacing-4);flex-direction:column;font-size:.8125rem;display:flex}.file-list__item{align-items:center;gap:var(--spacing-3);display:flex}.file-list__additions{color:var(--secondary);text-align:end;min-width:3rem;font-weight:600}.file-list__deletions{color:var(--error);text-align:end;min-width:3rem;font-weight:600}.file-list__path{color:var(--on-surface)}.tool-bar{gap:var(--spacing-3);padding-top:var(--spacing-4);flex-direction:column;display:flex}.tool-bar__item{align-items:center;gap:var(--spacing-3);display:flex}.tool-bar__name{font-family:var(--font-mono);color:var(--on-surface-variant);min-width:4rem;font-size:.75rem}.tool-bar__track{background:var(--surface-container-high);border-radius:var(--radius-xs);flex:1;height:.375rem;overflow:hidden}.tool-bar__fill{background:var(--primary);border-radius:var(--radius-xs);height:100%;transition:width .3s}.tool-bar__count{font-family:var(--font-mono);color:var(--on-surface-variant);text-align:end;min-width:2rem;font-size:.6875rem}.timeline-list{gap:var(--spacing-3);padding-top:var(--spacing-4);flex-direction:column;display:flex}.timeline-list__item{align-items:flex-start;gap:var(--spacing-3);display:flex}.timeline-list__time{font-family:var(--font-mono);color:var(--outline);min-width:3.5rem;padding-top:.125rem;font-size:.625rem}.timeline-list__content{background:var(--surface-container);padding:var(--spacing-2) var(--spacing-3);border-radius:var(--radius-sm);font-family:var(--font-mono);color:var(--on-surface-variant);flex:1;font-size:.75rem}.timeline-list__content--prompt{color:var(--primary);background:#0844710f}.enhance-layout{flex:1;grid-template-columns:5fr 7fr;min-height:0;display:grid}@media (width<=768px){.enhance-layout{grid-template-columns:1fr}}.enhance-layout__left{background:var(--inverse-surface);color:var(--inverse-on-surface);font-family:var(--font-mono);flex-direction:column;font-size:.8125rem;display:flex;overflow-y:auto}.enhance-layout__left-header{padding:var(--spacing-4) var(--spacing-5);border-bottom:1px solid #ffffff0f;flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.enhance-layout__left-label{text-transform:uppercase;letter-spacing:.08em;opacity:.6;font-size:.6875rem}.enhance-layout__left-id{color:var(--outline);font-size:.625rem}.enhance-layout__left-content{padding:var(--spacing-5);flex:1;line-height:1.6;overflow-y:auto}.enhance-layout__right{background:var(--surface-container-low);padding:var(--spacing-8);overflow-y:auto}.enhance-layout__right-inner{max-width:42rem;margin:0 auto}.enhance-status{border-radius:var(--radius-md);padding:var(--spacing-5);align-items:center;gap:var(--spacing-4);margin-bottom:var(--spacing-8);background:#0844710d;border:1px solid #0844711a;display:flex}.enhance-status__icon{background:var(--primary);width:2.5rem;height:2.5rem;color:var(--on-primary);border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;font-size:1.25rem;display:flex}.enhance-status__title{font-family:var(--font-display);color:var(--primary);font-size:.875rem;font-weight:700}.enhance-status__desc{color:var(--on-surface-variant);margin-top:var(--spacing-1);font-size:.75rem}.enhance-question{background:var(--surface-container-lowest);border-radius:var(--radius-sm);padding:var(--spacing-6);margin-bottom:var(--spacing-4);border:1px solid #c2c7d026}.enhance-question__text{font-family:var(--font-display);color:var(--on-surface);margin-bottom:var(--spacing-3);font-size:.9375rem;font-weight:600}.enhance-question__suggested{color:var(--outline);margin-bottom:var(--spacing-3);font-size:.8125rem;font-style:italic}.enhance-question__textarea{font-family:var(--font-body);padding:var(--spacing-3) var(--spacing-4);background:var(--surface-container-low);border-radius:var(--radius-sm);color:var(--on-surface);resize:vertical;border:1px solid #c2c7d04d;width:100%;min-height:4rem;font-size:.875rem;line-height:1.5}.enhance-question__textarea:focus{border-color:#08447166;outline:none}.enhance-question__textarea::placeholder{color:var(--on-surface-variant);opacity:.7}.enhance-question__skip{font-family:var(--font-mono);color:var(--outline);cursor:pointer;text-transform:uppercase;letter-spacing:.04em;margin-top:var(--spacing-2);background:0 0;border:none;font-size:.6875rem}.enhance-question__skip:hover{color:var(--primary);text-decoration:underline}.enhance-streaming__item{opacity:0;transition:opacity .3s,transform .3s;transform:translateY(4px)}.enhance-streaming__item--visible{opacity:1;transform:translateY(0)}.enhance-actions{padding-top:var(--spacing-6);margin-top:var(--spacing-8);border-top:1px solid #c2c7d026;justify-content:space-between;align-items:center;display:flex}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=768px){.app-sidebar{border-right:none;border-bottom:var(--ghost-border);width:100%;max-height:3rem;transition:max-height .2s;overflow:hidden}.app-sidebar--expanded{max-height:50vh;overflow-y:auto}.app-shell__body{flex-direction:column}.app-main__header{padding:var(--spacing-4)}.app-main__title{font-size:1.5rem}}@media (width<=375px){.session-card{padding:var(--spacing-3);gap:var(--spacing-3)}.session-card__metrics{display:none}.session-card__title{font-size:.875rem}.app-bottom-bar{padding:var(--spacing-2) var(--spacing-3)}.app-bottom-bar__inner{padding:var(--spacing-3) var(--spacing-4);gap:var(--spacing-4);border-radius:var(--radius-sm)}.app-main__header{padding:var(--spacing-3)}.app-main__title{font-size:1.25rem}.app-sidebar__section{padding:var(--spacing-3)}}.tool-breakdown-rows{flex-direction:column;gap:4px;display:flex}.tool-breakdown-row{align-items:center;gap:var(--spacing-3);display:flex}.tool-breakdown-row__label{font-family:var(--font-mono);color:var(--on-surface-variant);text-align:right;flex-shrink:0;width:60px;font-size:.75rem}.tool-breakdown-row__track{background:var(--surface-container-low);border-radius:3px;flex:1;height:6px;overflow:hidden}.tool-breakdown-row__bar{background:var(--primary);border-radius:3px;height:100%}.tool-breakdown-row__count{font-family:var(--font-mono);width:30px;font-size:.75rem}.turn-timeline-entries{flex-direction:column;display:flex}.turn-timeline-entry{align-items:flex-start;gap:var(--spacing-3);padding:var(--spacing-2) 0;border-bottom:1px solid var(--ghost-border);display:flex}.turn-timeline-entry__num{font-family:var(--font-mono);color:var(--on-surface-variant);text-align:right;flex-shrink:0;width:24px;font-size:.6875rem}.turn-timeline-entry__content{flex:1;font-size:.8125rem}.turn-timeline-entry__tools{flex-shrink:0;gap:2px;display:flex}.chip--sm{padding:1px 6px;font-size:.5625rem}.turn-timeline-more{padding:var(--spacing-3) 0;font-family:var(--font-mono);color:var(--on-surface-variant);text-align:center;font-size:.75rem}.files-changed-list{flex-direction:column;display:flex}.files-changed-row{padding:var(--spacing-1) 0;font-family:var(--font-mono);justify-content:space-between;font-size:.75rem;display:flex}.files-changed-row__path{color:var(--on-surface)}.files-changed-row__count{color:var(--on-surface-variant)}.dashboard{max-width:960px;padding:var(--spacing-8);margin:0 auto}.dashboard__title{font-family:var(--font-display);margin-bottom:var(--spacing-2);font-size:2rem;font-weight:700}.dashboard__subtitle{color:var(--on-surface-variant);margin-bottom:var(--spacing-8);font-size:.9375rem;line-height:1.6}.dashboard__cards{gap:var(--spacing-4);flex-direction:column;display:flex}.dashboard-banner{font-family:var(--font-mono,monospace);color:#92400e;padding:var(--spacing-3) var(--spacing-4);margin-bottom:var(--spacing-4);text-align:center;background:#fef3c7;border-radius:4px;font-size:.8125rem}.dashboard-banner__link{color:#084471;font-family:inherit;font-size:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-weight:600;text-decoration:underline}.dashboard-loading,.dashboard-error{padding:var(--spacing-20) 0;color:var(--on-surface-variant);justify-content:center;align-items:center;font-size:.9375rem;display:flex}.empty-state{padding:var(--spacing-20) 0;text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.empty-state__icon{background:var(--surface-container-low);width:64px;height:64px;margin-bottom:var(--spacing-6);color:var(--on-surface-variant);border-radius:50%;justify-content:center;align-items:center;font-size:1.5rem;display:flex}.empty-state__title{font-family:var(--font-display);margin-bottom:var(--spacing-3);font-size:1.5rem;font-weight:700}.empty-state__text{color:var(--on-surface-variant);max-width:400px;font-size:.9375rem;line-height:1.6}.empty-state__text code{font-family:var(--font-mono);background:var(--surface-container-low);border-radius:var(--radius-sm);padding:2px 6px;font-size:.8125rem}.empty-state__hint{margin-top:var(--spacing-8)}.empty-state__hint code{font-family:var(--font-mono);color:var(--on-surface-variant);background:var(--surface-container-low);padding:var(--spacing-3) var(--spacing-5);border-radius:var(--radius-sm);font-size:.8125rem;display:inline-block}.project-card{background:var(--surface-container-lowest);border:1px solid var(--ghost-border);border-radius:var(--radius-sm);padding:var(--spacing-6);cursor:pointer;transition:box-shadow .15s}.project-card:hover{box-shadow:var(--shadow-sm)}.project-card__header{margin-bottom:var(--spacing-4);justify-content:space-between;align-items:flex-start;display:flex}.project-card__title-row{align-items:center;gap:var(--spacing-3);margin-bottom:var(--spacing-2);display:flex}.project-card__dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.project-card__name{font-family:var(--font-display);font-size:1.25rem;font-weight:700}.project-card__desc{color:var(--on-surface-variant);font-size:.875rem;line-height:1.5}.project-card__date{font-family:var(--font-mono);color:var(--on-surface-variant);margin-top:var(--spacing-2);font-size:.6875rem}.project-card__date-ago{opacity:.5}.project-card__actions{gap:var(--spacing-2);flex-shrink:0;display:flex}.project-card__upload-btn{padding:var(--spacing-2) var(--spacing-5);flex-shrink:0;font-size:.8125rem}.project-card__badge{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;background:var(--primary-container,#e0ecf6);color:var(--primary,#084471);border-radius:3px;padding:2px 8px;font-size:.625rem;font-weight:600}.project-card__badge--stale{color:#92400e;background:#fef3c7}.project-card__badge--published{color:#16a34a;background:#dcfce7}.triage-item__published-badge{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:#16a34a;margin-left:var(--spacing-2,.5rem);vertical-align:middle;background:#dcfce7;border-radius:3px;padding:1px 6px;font-size:.6rem;font-weight:600}.work-timeline__scroll-controls{gap:var(--spacing-2,.5rem);margin-bottom:var(--spacing-2,.5rem);justify-content:flex-end;display:flex}.work-timeline__scroll-btn{color:#374151;width:32px;height:28px;font-family:var(--font-mono,monospace);cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:4px;justify-content:center;align-items:center;font-size:.875rem;transition:background .1s;display:flex}.work-timeline__scroll-btn:hover{background:#f3f4f6}.work-timeline__scroll-btn:active{background:#e5e7eb}.project-card__stats{gap:var(--spacing-4);margin-bottom:var(--spacing-4);grid-template-columns:repeat(4,1fr);display:grid}.project-card__stat-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);font-size:.5625rem}.project-card__stat-value{font-family:var(--font-display);font-size:1.25rem;font-weight:700}.project-card__skills{gap:var(--spacing-2);flex-wrap:wrap;display:flex}.upload-flow{max-width:800px;padding:var(--spacing-8);margin:0 auto}.upload-flow__label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-variant);margin-bottom:var(--spacing-2);font-size:.6875rem}.upload-flow__title{font-family:var(--font-display);margin-bottom:var(--spacing-2);font-size:1.75rem;font-weight:700}.upload-flow__date{font-family:var(--font-mono);color:var(--on-surface-variant);margin-bottom:var(--spacing-3);font-size:.6875rem}.upload-flow__desc{color:var(--on-surface-variant);margin-bottom:var(--spacing-8);font-size:.9375rem;line-height:1.6}.upload-flow__stat-grid{gap:var(--spacing-4);margin-bottom:var(--spacing-8);grid-template-columns:repeat(4,1fr);display:grid}.upload-flow__section-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);margin-bottom:var(--spacing-3);font-size:.625rem}.upload-flow__section-label--selected{color:var(--secondary)}.upload-flow__scan-status{align-items:center;gap:var(--spacing-2);font-family:var(--font-mono);color:var(--secondary);margin-bottom:var(--spacing-4);font-size:.6875rem;display:flex}.upload-flow__auto-select-banner{font-family:var(--font-mono);color:var(--secondary);padding:var(--spacing-3) var(--spacing-4);background:var(--surface-container,#f5f7fa);margin-bottom:var(--spacing-3);border-radius:6px;font-size:.75rem}.upload-flow__actions{gap:var(--spacing-3);margin-top:var(--spacing-8);justify-content:flex-end;display:flex}.stat-card{background:var(--surface-container-lowest);padding:var(--spacing-5);border-radius:var(--radius-sm);border:1px solid var(--ghost-border)}.stat-card__label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);margin-bottom:var(--spacing-1);font-size:.625rem}.stat-card__value{font-family:var(--font-display);font-size:1.5rem;font-weight:700}.session-table{background:var(--surface-container-lowest);border:1px solid var(--ghost-border);border-radius:var(--radius-sm);margin-bottom:var(--spacing-8);max-height:320px;overflow-y:auto}.session-table__header{padding:var(--spacing-2) var(--spacing-4);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--on-surface-variant);background:var(--surface-container-low);grid-template-columns:1fr 70px 60px 60px 60px;font-size:.625rem;display:grid;position:sticky;top:0}.session-table__row{padding:var(--spacing-3) var(--spacing-4);border-bottom:1px solid var(--ghost-border);grid-template-columns:1fr 70px 60px 60px 60px;font-size:.8125rem;display:grid}.session-table__name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.session-table__cell{text-align:right;font-family:var(--font-mono);color:var(--on-surface-variant);font-size:.75rem}.phase-bar{gap:var(--spacing-1);margin-bottom:var(--spacing-6);display:flex}.phase-bar__segment{background:var(--surface-container-high);border-radius:2px;flex:1;height:3px}.phase-bar__segment--active{background:var(--primary)}.triage-method-banner{align-items:center;gap:var(--spacing-2);padding:var(--spacing-3) var(--spacing-4);margin-bottom:var(--spacing-4);border-radius:var(--radius-sm);background:var(--surface-container,#f5f7fa);border:1px solid var(--outline-variant);color:var(--on-surface-variant);font-size:.8125rem;display:flex}.triage-method-banner__icon{flex-shrink:0;font-size:1rem}.triage-method-banner__link{color:var(--primary);white-space:nowrap;text-decoration:underline}.triage-list{gap:var(--spacing-2);margin-bottom:var(--spacing-8);flex-direction:column;display:flex}.triage-item{align-items:flex-start;gap:var(--spacing-3);padding:var(--spacing-4);border-radius:var(--radius-sm);flex-wrap:wrap;display:flex}.triage-item--selected{background:var(--surface-container-lowest);border:1px solid #006a6126}.triage-item--skipped{background:var(--surface-container-low);opacity:.7}.triage-item__checkbox{accent-color:var(--secondary);flex-shrink:0;width:16px;height:16px}.triage-item__info{flex:1;min-width:200px}.triage-item__name{text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;font-weight:600;overflow:hidden}.triage-item__stats{font-family:var(--font-mono);color:var(--on-surface-variant);white-space:nowrap;font-size:.6875rem}.triage-item__reason{font-family:var(--font-mono);border-radius:var(--radius-sm);max-width:280px;padding:2px 8px;font-size:.625rem;line-height:1.4}.triage-item__reason--selected{color:var(--secondary);background:#006a6114}.triage-item__reason--skipped{background:var(--surface-container-high);color:var(--on-surface-variant);font-size:.5625rem}.triage-item__reason--expandable{cursor:pointer}.triage-item__reason--expandable:hover{opacity:.85}.triage-skipped{margin-bottom:var(--spacing-8)}.triage-skipped__summary{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);cursor:pointer;align-items:center;gap:var(--spacing-2);font-size:.625rem;list-style:none;display:flex}.triage-skipped__summary::-webkit-details-marker{display:none}.enhance-split{grid-template-columns:340px 1fr;height:calc(100vh - 3.5rem);display:grid}@media (width<=768px){.enhance-split{grid-template-columns:1fr}}.enhance-split__left{background:var(--inverse-surface);color:#fffc;padding:var(--spacing-6);flex-direction:column;height:100%;display:flex;overflow:hidden}.enhance-split__left-header{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:#fff6;margin-bottom:var(--spacing-5);font-size:.6875rem}.enhance-split__feed{gap:var(--spacing-4);scroll-behavior:smooth;flex-direction:column;flex:1;display:flex;overflow-y:auto}.enhance-feed-item--pending{opacity:.3}.enhance-feed-item__row{align-items:center;gap:var(--spacing-2);margin-bottom:var(--spacing-1);display:flex}.enhance-feed-item__check{color:#34d399;flex-shrink:0;font-size:.75rem}.enhance-feed-item__spinner{border:2px solid #fbbf24;border-top-color:#0000;border-radius:50%;flex-shrink:0;width:12px;height:12px;animation:1s linear infinite spin;display:inline-block}.enhance-feed-item__circle{color:#fff6;flex-shrink:0;font-size:.75rem}.enhance-feed-item__title{font-family:var(--font-mono);color:#fffc;font-size:.75rem}.enhance-feed-item__title--active{color:#fbbf24}.enhance-feed-item__detail{font-family:var(--font-mono);color:#ffffff59;padding-inline-start:var(--spacing-5);font-size:.625rem}.enhance-split__narrative-box{margin-top:var(--spacing-8);padding:var(--spacing-4);border-radius:var(--radius-sm);background:#ffffff0d}.enhance-split__narrative-label{font-family:var(--font-mono);color:#fff6;margin-bottom:var(--spacing-2);font-size:.625rem}.enhance-split__narrative-status{align-items:center;gap:var(--spacing-2);font-family:var(--font-mono);color:#ffffff80;font-size:.6875rem;display:flex}.enhance-split__blink-dot{background:var(--secondary);border-radius:50%;flex-shrink:0;width:8px;height:8px;animation:1.2s infinite blink;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.enhance-split__right{padding:var(--spacing-8);overflow-y:auto}.enhance-split__narrative-text{color:var(--on-surface-variant);margin-bottom:var(--spacing-6);border-inline-start:2px solid var(--surface-container-high);padding-inline-start:var(--spacing-4);font-size:.9375rem;line-height:1.7}.enhance-split__skills{gap:var(--spacing-2);margin-bottom:var(--spacing-6);flex-wrap:wrap;display:flex}.enhance-split__arc{gap:var(--spacing-3);margin-bottom:var(--spacing-6);flex-direction:column;display:flex}.enhance-split__arc-item{gap:var(--spacing-3);align-items:flex-start;display:flex}.enhance-split__arc-item--generating{opacity:.4}.enhance-split__arc-num{border-radius:var(--radius-sm);width:24px;height:24px;color:var(--primary);background:#08447114;flex-shrink:0;justify-content:center;align-items:center;font-size:.625rem;font-weight:600;display:flex}.enhance-split__arc-title{font-size:.875rem;font-weight:600}.enhance-split__arc-desc{color:var(--on-surface-variant);font-size:.75rem}.questions-list{gap:var(--spacing-6);margin-bottom:var(--spacing-8);flex-direction:column;display:flex}.question-card__tag-row{align-items:center;gap:var(--spacing-2);margin-bottom:var(--spacing-2);display:flex}.question-card__tag{font-family:var(--font-mono);border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.08em;padding:2px 6px;font-size:.5625rem}.question-card__tag--pattern{background:var(--tertiary-fixed);color:var(--tertiary)}.question-card__tag--architecture{color:var(--primary);background:#08447114}.question-card__tag--evolution{background:var(--secondary-container);color:var(--secondary)}.question-card__text{margin-bottom:var(--spacing-3);font-size:.9375rem;font-weight:600;line-height:1.4}.question-card__textarea{width:100%;min-height:80px;padding:var(--spacing-3);border:1px solid var(--surface-container-high);border-radius:var(--radius-sm);font-family:var(--font-body);resize:vertical;background:var(--surface-container-low);color:var(--on-surface);font-size:.875rem;line-height:1.6}.question-card__textarea:focus{border-color:#08447166;outline:none}.question-card__textarea::placeholder{color:var(--on-surface-variant);opacity:.7}.timeline{margin-bottom:var(--spacing-8);padding-inline-start:var(--spacing-8);position:relative}.timeline__line{inset-inline-start:10px;background:var(--outline-variant);width:2px;position:absolute;top:0;bottom:0}.timeline__period{margin-bottom:var(--spacing-8)}.timeline__period:last-child{margin-bottom:0}.timeline__period-header{align-items:baseline;gap:var(--spacing-2);margin-bottom:var(--spacing-4);display:flex}.timeline__period-date{font-family:var(--font-mono);color:var(--on-surface);letter-spacing:.02em;font-size:.75rem;font-weight:600}.timeline__period-sep{color:var(--on-surface-variant);font-size:.75rem}.timeline__period-label{font-family:var(--font-mono);color:var(--on-surface-variant);letter-spacing:.02em;font-size:.75rem}.timeline__featured{align-items:flex-start;gap:var(--spacing-4);margin-bottom:var(--spacing-4);display:flex;position:relative}.timeline__dot--large{inset-inline-start:calc(-1 * var(--spacing-8) - 1px);top:var(--spacing-2);background:var(--primary);border:3px solid var(--surface);z-index:1;border-radius:50%;flex-shrink:0;width:22px;height:22px;position:absolute}.timeline__card{background:var(--surface-container-lowest);border:var(--ghost-border);border-radius:var(--radius-md);padding:var(--spacing-4) var(--spacing-5);flex:1}.timeline__card-header{align-items:center;gap:var(--spacing-3);margin-bottom:var(--spacing-2);display:flex}.timeline__card-title{font-family:var(--font-display);color:var(--on-surface);font-size:1rem;font-weight:600}.timeline__card-tag{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--tertiary);background:var(--tertiary-fixed);border-radius:var(--radius-sm);white-space:nowrap;padding:2px 8px;font-size:.5625rem;font-weight:600}.timeline__card-meta{gap:var(--spacing-3);font-family:var(--font-mono);color:var(--on-surface-variant);margin-bottom:var(--spacing-2);font-size:.6875rem;display:flex}.timeline__card-desc{color:var(--on-surface-variant);margin-bottom:var(--spacing-3);font-size:.875rem;line-height:1.6}.timeline__card-skills{gap:var(--spacing-2);flex-wrap:wrap;display:flex}.timeline__collapsed{align-items:center;gap:var(--spacing-4);margin-bottom:var(--spacing-3);display:flex;position:relative}.timeline__dot--small{inset-inline-start:calc(-1 * var(--spacing-8) + 4px);background:var(--surface-container-high);border:2px solid var(--surface);z-index:1;border-radius:50%;flex-shrink:0;width:12px;height:12px;position:absolute;top:50%;transform:translateY(-50%)}.timeline__collapsed-text{font-family:var(--font-mono);color:var(--on-surface-variant);font-size:.6875rem;line-height:1.5}.review-card{background:var(--surface-container-lowest);border:1px solid var(--ghost-border);border-radius:var(--radius-sm);padding:var(--spacing-6);margin-bottom:var(--spacing-6)}.review-card__name{font-family:var(--font-display);margin-bottom:var(--spacing-3);font-size:1.5rem;font-weight:700}.review-card__narrative{color:var(--on-surface-variant);margin-bottom:var(--spacing-6);font-size:.9375rem;line-height:1.6}.review-card__skills{gap:var(--spacing-2);flex-wrap:wrap;display:flex}.review-checklist{background:var(--surface-container-low);border-radius:var(--radius-sm);padding:var(--spacing-5) var(--spacing-6);margin-bottom:var(--spacing-6)}.review-checklist__item{align-items:center;gap:var(--spacing-3);padding:var(--spacing-2) 0;color:var(--on-surface);font-size:.875rem;display:flex}.review-checklist__item--skipped{color:var(--on-surface-variant)}.review-checklist__icon{text-align:center;flex-shrink:0;width:1.25rem;font-size:.875rem}.review-checklist__icon--checked{color:var(--secondary);font-weight:700}.review-checklist__icon--skipped{color:var(--on-surface-variant)}.review-details{background:var(--surface-container-lowest);border:1px solid var(--ghost-border);border-radius:var(--radius-sm);padding:var(--spacing-6);margin-bottom:var(--spacing-6)}.review-details__header{margin-bottom:var(--spacing-5);justify-content:space-between;align-items:baseline;display:flex}.review-details__optional{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);font-size:.625rem}.review-field{margin-bottom:var(--spacing-5)}.review-field:last-child{margin-bottom:0}.review-field__label{align-items:center;gap:var(--spacing-2);margin-bottom:var(--spacing-2);color:var(--on-surface);font-size:.8125rem;font-weight:600;display:flex}.review-field__badge{font-family:var(--font-mono);color:var(--secondary);border-radius:var(--radius-sm);background:#006a6114;padding:2px 8px;font-size:.625rem;font-weight:600}.review-field__input{width:100%;padding:var(--spacing-3) var(--spacing-4);font-family:var(--font-body);border:1px solid var(--ghost-border);border-radius:var(--radius-sm);background:var(--surface);color:var(--on-surface);outline:none;font-size:.875rem;transition:border-color .15s;display:block}.review-field__input:focus{border-color:var(--primary)}.review-field__input::placeholder{color:var(--on-surface-variant);opacity:.6}.review-dropzone{justify-content:center;align-items:center;gap:var(--spacing-2);padding:var(--spacing-8) var(--spacing-6);border:2px dashed var(--ghost-border);border-radius:var(--radius-sm);cursor:pointer;flex-direction:column;transition:border-color .15s,background .15s;display:flex}.review-dropzone:hover,.review-dropzone:focus-visible{border-color:var(--primary);background:#08447108;outline:none}.review-dropzone__icon{opacity:.5;font-size:1.5rem}.review-dropzone__text{color:var(--on-surface-variant);font-size:.8125rem}.review-auth{margin:var(--spacing-5) 0}.review-auth__card{border:1px solid var(--ghost-border);border-radius:var(--radius-sm);padding:var(--spacing-5) var(--spacing-6);background:var(--surface)}.review-auth__title{font-family:var(--font-heading);margin:0 0 var(--spacing-3) 0;font-size:1rem;font-weight:600}.review-auth__instructions{color:var(--on-surface-variant);margin:0 0 var(--spacing-4) 0;font-size:.875rem;line-height:1.5}.review-auth__instructions a{color:var(--primary);text-decoration:underline}.review-auth__code{font-family:var(--font-mono);letter-spacing:.15em;text-align:center;padding:var(--spacing-4);background:var(--bg);border-radius:var(--radius-sm);margin-bottom:var(--spacing-3);font-size:1.5rem;font-weight:700}.review-auth__polling{color:var(--on-surface-variant);text-align:center;margin:0;font-size:.8125rem}.upload-flow__error{padding:var(--spacing-3) var(--spacing-4);margin:var(--spacing-4) 0;border:1px solid var(--error,#dc2626);border-radius:var(--radius-sm);color:var(--error,#dc2626);background:#dc26260d;align-items:center;font-size:.875rem;display:flex}.enhance-error{padding:var(--spacing-4);border:1px solid var(--error,#dc2626);border-radius:var(--radius-sm);background:#dc26260d}.enhance-error__message{color:var(--error,#dc2626);margin-bottom:var(--spacing-3);font-size:.875rem}.enhance-feed-item--failed{opacity:1}.enhance-feed-item__fail{color:#dc2626;margin-right:var(--spacing-2);font-weight:700}.enhance-feed-item__title--failed,.enhance-feed-item__detail--failed{color:#dc2626}.enhance-split__failure-recovery{margin-top:var(--spacing-4);padding:var(--spacing-4);border:1px solid var(--outline-variant);border-radius:var(--radius-sm);background:var(--surface-container,#f5f7fa)}.enhance-split__failure-text{color:var(--on-surface-variant);margin:0 0 var(--spacing-3);font-size:.875rem}.publish-error{padding:var(--spacing-4);margin:var(--spacing-4) 0;border:1px solid var(--error,#dc2626);border-radius:var(--radius-sm);background:#dc26260d}.publish-error__message{color:var(--error,#dc2626);margin-bottom:var(--spacing-3);font-size:.875rem;font-weight:600}.publish-error__sessions{gap:var(--spacing-2);margin-bottom:var(--spacing-3);flex-direction:column;display:flex}.publish-error__session-row{align-items:center;gap:var(--spacing-2);font-size:.8125rem;font-family:var(--font-mono);display:flex}.publish-error__icon--published{color:var(--success-fg,#16a34a)}.publish-error__icon--failed{color:var(--error,#dc2626)}.publish-error__session-title{flex:1}.publish-error__session-error{color:var(--on-surface-variant);font-size:.75rem}.publish-error__actions{gap:var(--spacing-3);flex-wrap:wrap;display:flex}.publish-progress{margin:var(--spacing-4) 0;padding:var(--spacing-4);background:var(--surface-container,#f5f7fa);border-radius:var(--radius-sm)}.publish-progress__sessions{gap:var(--spacing-2);flex-direction:column;display:flex}.publish-progress__row{align-items:center;gap:var(--spacing-2);font-size:.8125rem;font-family:var(--font-mono);display:flex}.success-card{text-align:center;max-width:480px;margin:var(--spacing-8) auto;flex-direction:column;align-items:center;display:flex}.success-card__icon{margin-bottom:var(--spacing-4)}.success-card__title{font-family:var(--font-display);color:var(--on-surface);margin-bottom:var(--spacing-2);font-size:1.5rem;font-weight:700}.success-card__subtitle{color:var(--on-surface-variant);margin-bottom:var(--spacing-6);font-size:.9375rem;line-height:1.6}.success-card__preview{background:linear-gradient(135deg, var(--primary-fixed,#d3e3f4) 0%, var(--surface-container-low) 100%);border:var(--ghost-border);border-radius:var(--radius-md);width:100%;padding:var(--spacing-5) var(--spacing-6);margin-bottom:var(--spacing-4);text-align:left}.success-card__preview-name{font-family:var(--font-display);color:var(--on-surface);margin-bottom:var(--spacing-2);font-size:1.125rem;font-weight:700}.success-card__preview-narrative{color:var(--on-surface-variant);margin-bottom:var(--spacing-4);font-size:.8125rem;line-height:1.6}.success-card__preview-stats{gap:var(--spacing-3);grid-template-columns:repeat(4,1fr);display:grid}.success-card__preview-stat{flex-direction:column;align-items:center;gap:2px;display:flex}.success-card__preview-stat-value{font-family:var(--font-mono);color:var(--on-surface);font-size:1rem;font-weight:700}.success-card__preview-stat-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);font-size:.5625rem}.success-card__url-bar{background:var(--surface-container-lowest);border:var(--ghost-border);border-radius:var(--radius-sm);width:100%;padding:var(--spacing-2) var(--spacing-3);margin-bottom:var(--spacing-4);align-items:center;display:flex}.success-card__url-text{font-family:var(--font-mono);color:var(--on-surface);text-align:left;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.8125rem;overflow:hidden}.success-card__url-copy{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--primary);border:1px solid var(--primary);border-radius:var(--radius-sm);padding:var(--spacing-1) var(--spacing-3);cursor:pointer;background:0 0;flex-shrink:0;font-size:.6875rem;font-weight:600;transition:background .15s}.success-card__url-copy:hover{background:#0844710f}.success-card__meta{align-items:center;gap:var(--spacing-3);margin-bottom:var(--spacing-6);justify-content:center;width:100%;display:flex}.success-card__badge{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--success-fg,#16a34a);background:var(--success-bg,#dcfce7);border-radius:var(--radius-sm);padding:2px 8px;font-size:.5625rem;font-weight:600}.success-card__meta-text{font-family:var(--font-mono);color:var(--on-surface-variant);font-size:.6875rem}.success-card__actions{gap:var(--spacing-3);width:100%;display:flex}.triage-terminal{background:var(--inverse-surface);color:var(--inverse-on-surface);border-radius:var(--radius-lg,12px);padding:var(--spacing-6);max-width:640px;margin:var(--spacing-8) auto;font-family:var(--font-mono);font-size:.8125rem;line-height:1.7}.triage-terminal__feed{scrollbar-width:thin;scrollbar-color:#ffffff26 transparent;max-height:480px;overflow-y:auto}.triage-terminal__line{white-space:pre;min-height:1.7em}.triage-terminal__prompt{color:var(--inverse-primary,#9dcaff);margin-bottom:var(--spacing-2);font-weight:600}.triage-terminal__section{color:#ffffff80;font-weight:600}.triage-terminal__line--passed{color:#34d399}.triage-terminal__line--skipped{color:#f87171}.triage-terminal__line--active{color:#fbbf24}@media (prefers-reduced-motion:reduce){.triage-terminal__line--active{animation:none}}.project-preview{background:var(--surface);z-index:100;position:fixed;inset:0;overflow-y:auto}.project-preview__close{top:var(--spacing-4);right:var(--spacing-6);z-index:101;font-family:var(--font-mono);color:var(--on-surface-variant);background:var(--surface-container-low);border:1px solid var(--surface-container-high);padding:var(--spacing-2) var(--spacing-4);cursor:pointer;border-radius:.375rem;font-size:.8125rem;transition:color .15s;position:fixed}.project-preview__close:hover{color:var(--on-surface)}.project-preview__close:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.project-preview__content{max-width:1000px;padding:var(--spacing-8);margin:0 auto}.project-preview__breadcrumb{font-family:var(--font-mono);color:var(--on-surface-variant);margin-bottom:var(--spacing-2);font-size:.75rem}.project-preview__title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--on-surface);margin:0 0 var(--spacing-4) 0;font-size:2.5rem;font-weight:700;line-height:1.15}.project-preview__links{align-items:center;gap:var(--spacing-4);margin-bottom:var(--spacing-6);display:flex}.project-preview__link{align-items:center;gap:var(--spacing-2);font-family:var(--font-mono);color:var(--primary);font-size:.8125rem;text-decoration:none;display:inline-flex}.project-preview__link:hover{text-decoration:underline}.project-preview__narrative{font-family:var(--font-body);color:var(--on-surface);border-left:3px solid var(--primary);padding-left:var(--spacing-4);margin-bottom:var(--spacing-6);font-size:1rem;line-height:1.65}.project-preview__skills{gap:var(--spacing-2);margin-bottom:var(--spacing-6);flex-wrap:wrap;display:flex}.project-preview__hero-stats{gap:var(--spacing-4);margin-bottom:var(--spacing-8);grid-template-columns:repeat(4,1fr);display:grid}.project-preview__hero-stat{text-align:center;padding:var(--spacing-4);border:1px solid var(--ghost-border);border-radius:.375rem}.project-preview__hero-value{font-family:var(--font-mono);color:var(--on-surface);font-size:1.5rem;font-weight:700;line-height:1.2}.project-preview__hero-value--primary{color:var(--primary)}.project-preview__hero-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);margin-top:var(--spacing-1);font-size:.5625rem}.project-preview__timeline-heading{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);margin-bottom:var(--spacing-4);font-size:.6875rem;font-weight:600}.review-preview-link{text-align:center;margin-bottom:var(--spacing-6);font-family:var(--font-mono);color:var(--primary);cursor:pointer;padding:var(--spacing-2) 0;background:0 0;border:none;font-size:.8125rem;display:block}.review-preview-link:hover{text-decoration:underline}.review-preview-link:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:.25rem}.typewriter-cursor{background:var(--primary);vertical-align:text-bottom;width:2px;height:1.1em;margin-inline-start:2px;animation:.8s step-end infinite cursor-blink;display:inline-block}@keyframes cursor-blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.typewriter-cursor{opacity:1;animation:none}}.project-preview__banner{background:var(--primary-fixed);color:var(--primary);text-align:center;padding:var(--spacing-2) var(--spacing-4);font-family:var(--font-mono);letter-spacing:.03em;font-size:.6875rem}.project-preview__screenshot{margin-bottom:var(--spacing-6);background:var(--surface-container-low);border-radius:var(--radius-sm);border:1px solid var(--ghost-border);overflow:hidden}.project-preview__screenshot-inner{height:280px;color:var(--on-surface-variant);justify-content:center;align-items:center;gap:var(--spacing-2);font-family:var(--font-mono);background:linear-gradient(135deg,#0844710a,#08447114);flex-direction:column;font-size:.6875rem;display:flex}.project-preview .timeline__card:hover{box-shadow:var(--shadow-sm);border-color:#08447140}.project-preview .timeline__card:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.project-preview .timeline__card{transition:box-shadow .15s,border-color .15s}.enhance-split__narrative-placeholder{align-items:center;gap:var(--spacing-3);padding:var(--spacing-4) var(--spacing-5);background:var(--surface-container-low);border-radius:var(--radius-sm);border-left:3px solid var(--primary);color:var(--on-surface-variant);margin-bottom:var(--spacing-6);font-size:.875rem;line-height:1.5;display:flex}.project-preview__sessions-heading{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-variant);margin-top:var(--spacing-8);margin-bottom:var(--spacing-4);font-size:.6875rem;font-weight:600}.project-preview__sessions-grid{gap:var(--spacing-4);margin-bottom:var(--spacing-8);grid-template-columns:repeat(2,1fr);display:grid}.project-preview__session-card{background:var(--surface-container-lowest);border:1px solid var(--ghost-border);border-radius:var(--radius-sm);padding:var(--spacing-6);transition:box-shadow .15s}.project-preview__session-card:hover{box-shadow:var(--shadow-sm)}.project-preview__session-bar{height:4px;margin-bottom:var(--spacing-4);border-radius:2px}.project-preview__session-title{font-family:var(--font-display);color:var(--on-surface);margin:0 0 var(--spacing-2) 0;font-size:1.125rem;font-weight:700;line-height:1.3}.project-preview__session-stats{font-family:var(--font-mono);color:var(--on-surface-variant);margin-bottom:var(--spacing-3);font-size:.8125rem}.project-preview__session-skills{gap:var(--spacing-2);margin-top:var(--spacing-3);flex-wrap:wrap;display:flex}.growth-chart{gap:var(--spacing-6);margin-bottom:var(--spacing-8);align-items:center;display:flex}.growth-chart__svg-container{flex:1;min-width:0}.growth-chart__summary{text-align:right;flex-shrink:0;width:200px}.growth-chart__total-value{font-family:var(--font-mono);color:var(--primary);font-size:2.5rem;font-weight:700;line-height:1.1}.growth-chart__total-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-variant);margin-top:var(--spacing-1);font-size:.5625rem;font-weight:600}.growth-chart__stat{margin-top:var(--spacing-4)}.growth-chart__stat-value{font-family:var(--font-mono);color:var(--on-surface);font-size:1.5rem;font-weight:700;line-height:1.2}.growth-chart__stat-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-variant);margin-top:var(--spacing-1);font-size:.5625rem;font-weight:600}.dir-heatmap{margin-bottom:var(--spacing-8)}.dir-heatmap__empty{font-family:var(--font-mono);color:var(--on-surface-variant);padding:var(--spacing-4) 0;font-size:.75rem}.dir-heatmap__grid{margin-bottom:var(--spacing-3);gap:2px;display:grid;overflow-x:auto}.dir-heatmap__session-label{font-family:var(--font-mono);text-align:center;color:var(--on-surface-variant);text-overflow:ellipsis;white-space:nowrap;padding-bottom:var(--spacing-2);font-size:.625rem;overflow:hidden}.dir-heatmap__dir-label{font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;color:var(--on-surface);align-self:center;padding-inline-end:var(--spacing-2);font-size:.75rem;overflow:hidden}.dir-heatmap__cell{cursor:default;border-radius:2px;min-width:80px;min-height:32px;position:relative}.dir-heatmap__cell:hover{outline:1px solid var(--primary,#084471)}.dir-heatmap__legend{align-items:center;gap:var(--spacing-3);font-family:var(--font-mono);color:var(--on-surface-variant);margin-bottom:var(--spacing-6);font-size:.6875rem;display:flex}.dir-heatmap__top-files{margin-bottom:var(--spacing-8)}.dir-heatmap__top-files-summary{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-variant);cursor:pointer;margin-bottom:var(--spacing-3);font-size:.6875rem;font-weight:600}.dir-heatmap__top-files-summary:hover{color:var(--on-surface)}.dir-heatmap__file-row{padding:var(--spacing-2) 0;border-bottom:var(--ghost-border);font-family:var(--font-mono);justify-content:space-between;font-size:.75rem;display:flex}.dir-heatmap__file-path{text-overflow:ellipsis;white-space:nowrap;color:var(--on-surface);margin-inline-end:var(--spacing-3);overflow:hidden}.dir-heatmap__file-count{color:var(--on-surface-variant);flex-shrink:0}.session-detail-overlay{background:var(--surface);z-index:110;flex-direction:column;display:flex;position:fixed;inset:0}.session-detail__header{padding:var(--spacing-3) var(--spacing-6);border-bottom:1px solid var(--outline-variant);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.session-detail__back{font-family:var(--font-mono);color:var(--on-surface-variant);cursor:pointer;padding:var(--spacing-1) var(--spacing-2);border-radius:var(--radius-sm);background:0 0;border:none;font-size:.8125rem;transition:color .15s}.session-detail__back:hover{color:var(--on-surface)}.session-detail__close{color:var(--on-surface-variant);cursor:pointer;padding:var(--spacing-1) var(--spacing-2);border-radius:var(--radius-sm);background:0 0;border:none;font-size:1.25rem;line-height:1;transition:color .15s}.session-detail__close:hover{color:var(--on-surface)}.session-detail__scroll{padding:var(--spacing-8) var(--spacing-6) var(--spacing-12);flex:1;width:100%;max-width:1100px;margin:0 auto;overflow-y:auto}.session-detail__layout{gap:var(--spacing-8);grid-template-columns:2fr 1fr;display:grid}.session-detail__main,.session-detail__sidebar{min-width:0}.session-detail__breadcrumb{font-family:var(--font-mono);color:var(--on-surface-variant);margin-bottom:var(--spacing-2);letter-spacing:.01em;font-size:.75rem}.session-detail__title{font-family:var(--font-display);color:var(--on-surface);margin-bottom:var(--spacing-6);font-size:2rem;font-weight:600;line-height:1.2}.session-detail__stats-grid{gap:var(--spacing-4);margin-bottom:var(--spacing-6);grid-template-columns:repeat(4,1fr);display:grid}.session-detail__stat{padding:var(--spacing-3) var(--spacing-4);background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-md)}.session-detail__stat-value{font-family:var(--font-display);color:var(--on-surface);font-size:1.25rem;font-weight:600}.session-detail__stat-label{font-family:var(--font-mono);color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.04em;margin-top:var(--spacing-1);font-size:.6875rem}.session-detail__section{margin-bottom:var(--spacing-6)}.session-detail__section-label{font-family:var(--font-mono);color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--spacing-3);font-size:.6875rem;font-weight:600}.session-detail__take{font-family:var(--font-body);color:var(--on-surface);border-inline-start:3px solid var(--primary);margin:0;padding-inline-start:var(--spacing-4);font-size:.9375rem;line-height:1.6}.session-detail__context{font-family:var(--font-body);color:var(--on-surface-variant);font-size:.875rem;line-height:1.6}.session-detail__skills{gap:var(--spacing-2);flex-wrap:wrap;display:flex}.session-detail__qa-list{gap:var(--spacing-4);flex-direction:column;display:flex}.session-detail__qa-pair{padding-bottom:var(--spacing-4);border-bottom:1px solid var(--outline-variant)}.session-detail__qa-pair:last-child{border-bottom:none;padding-bottom:0}.session-detail__qa-question{font-family:var(--font-body);color:var(--on-surface);margin-bottom:var(--spacing-2);font-size:.875rem;font-weight:600}.session-detail__qa-answer{font-family:var(--font-body);color:var(--on-surface-variant);padding-inline-start:var(--spacing-4);font-size:.875rem;line-height:1.6}.session-detail__highlights{gap:var(--spacing-4);padding-bottom:var(--spacing-2);scrollbar-width:thin;display:flex;overflow-x:auto}.session-detail__highlight-card{padding:var(--spacing-4);background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-md);flex:0 0 240px}.session-detail__highlight-step{font-family:var(--font-mono);color:var(--primary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--spacing-1);font-size:.625rem}.session-detail__highlight-title{font-family:var(--font-display);color:var(--on-surface);margin-bottom:var(--spacing-2);font-size:.875rem;font-weight:600}.session-detail__highlight-desc{font-family:var(--font-body);color:var(--on-surface-variant);font-size:.8125rem;line-height:1.5}.session-detail__sidebar-section{margin-bottom:var(--spacing-6)}.session-detail__exec-path{padding-inline-start:var(--spacing-5);position:relative}.session-detail__exec-path:before{content:"";inset-inline-start:5px;background:var(--outline-variant);width:1px;position:absolute;top:8px;bottom:8px}.session-detail__exec-step{padding-bottom:var(--spacing-4);position:relative}.session-detail__exec-step:last-child{padding-bottom:0}.session-detail__exec-dot{inset-inline-start:calc(var(--spacing-5) * -1 + 2px);background:var(--primary);border-radius:50%;width:7px;height:7px;position:absolute;top:6px}.session-detail__exec-title{font-family:var(--font-body);color:var(--on-surface);font-size:.8125rem;font-weight:600;line-height:1.3}.session-detail__exec-desc{font-family:var(--font-body);color:var(--on-surface-variant);margin-top:var(--spacing-1);font-size:.75rem;line-height:1.5}.session-detail__raw-log{background:var(--inverse-surface);color:var(--inverse-on-surface);border-radius:var(--radius-md);padding:var(--spacing-3) var(--spacing-4);font-family:var(--font-mono);font-size:.6875rem;line-height:1.6;overflow:hidden}.session-detail__raw-line{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.session-detail__raw-more{margin-top:var(--spacing-3);color:var(--inverse-primary);cursor:default;font-size:.6875rem}.session-detail__source-list{gap:var(--spacing-2);flex-direction:column;display:flex}.session-detail__source-row{justify-content:space-between;align-items:baseline;font-size:.8125rem;display:flex}.session-detail__source-key{font-family:var(--font-mono);color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.04em;font-size:.6875rem}.session-detail__source-val{font-family:var(--font-body);color:var(--on-surface);font-size:.8125rem}.session-detail__full-width{margin-top:var(--spacing-8);gap:var(--spacing-4);flex-direction:column;display:flex}.session-detail__collapsible{border:1px solid var(--outline-variant);border-radius:var(--radius-md);overflow:hidden}.session-detail__collapsible-summary{font-family:var(--font-mono);color:var(--on-surface);padding:var(--spacing-3) var(--spacing-4);cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--surface-container-low);font-size:.8125rem;font-weight:600;list-style:none}.session-detail__collapsible-summary::-webkit-details-marker{display:none}.session-detail__collapsible-summary:before{content:"▶";margin-inline-end:var(--spacing-2);font-size:.625rem;transition:transform .15s;display:inline-block}.session-detail__collapsible[open]>.session-detail__collapsible-summary:before{transform:rotate(90deg)}.session-detail__tool-list{padding:var(--spacing-3) var(--spacing-4);gap:var(--spacing-2);flex-direction:column;display:flex}.session-detail__tool-row{align-items:center;gap:var(--spacing-3);grid-template-columns:140px 1fr 40px;display:grid}.session-detail__tool-name{font-family:var(--font-mono);color:var(--on-surface);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.session-detail__tool-bar-track{background:var(--surface-container-high);border-radius:3px;height:6px;overflow:hidden}.session-detail__tool-bar{background:var(--primary);border-radius:3px;height:100%;transition:width .2s}.session-detail__tool-count{font-family:var(--font-mono);color:var(--on-surface-variant);text-align:end;font-size:.75rem}.session-detail__file-list{padding:var(--spacing-3) var(--spacing-4);gap:var(--spacing-1);flex-direction:column;display:flex}.session-detail__file-row{gap:var(--spacing-3);font-family:var(--font-mono);padding:var(--spacing-1) 0;grid-template-columns:1fr auto auto;align-items:baseline;font-size:.75rem;display:grid}.session-detail__file-path{color:var(--on-surface);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.session-detail__file-additions{color:var(--secondary);font-weight:600}.session-detail__file-deletions{color:var(--error);font-weight:600}.project-preview__session-card--clickable{cursor:pointer;transition:border-color .15s,box-shadow .15s}.project-preview__session-card--clickable:hover{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.project-preview__session-card--clickable:focus-visible{outline:2px solid var(--primary);outline-offset:2px}@media (width<=720px){.session-detail__layout{grid-template-columns:1fr}.session-detail__stats-grid{grid-template-columns:repeat(2,1fr)}.session-detail__scroll{padding:var(--spacing-4) var(--spacing-4) var(--spacing-8)}.session-detail__tool-row{grid-template-columns:100px 1fr 36px}}.agent-activity{margin-bottom:var(--spacing-8)}.agent-activity__card{background:var(--surface-container-lowest);border:var(--ghost-border);border-radius:var(--radius-sm);padding:var(--spacing-5)}.agent-activity__legend{gap:var(--spacing-4);margin-bottom:var(--spacing-4);flex-wrap:wrap;display:flex}.agent-activity__legend-item{font-family:var(--font-mono);color:var(--on-surface-variant);align-items:center;gap:4px;font-size:.5625rem;display:flex}.agent-activity__legend-dot{border-radius:50%;width:8px;height:8px}.agent-activity__timelines{gap:var(--spacing-2);-webkit-overflow-scrolling:touch;padding-bottom:var(--spacing-2);flex-direction:column;display:flex;overflow-x:auto}.agent-activity__session{flex-direction:column;gap:2px;min-width:fit-content;display:flex}.agent-activity__session-label{font-family:var(--font-mono);letter-spacing:.04em;color:var(--on-surface-variant);text-transform:uppercase;text-overflow:ellipsis;white-space:nowrap;max-width:50%;font-size:.5625rem;font-weight:600;overflow:hidden}.agent-activity__summary{gap:var(--spacing-3);margin-top:var(--spacing-4);padding-top:var(--spacing-4);border-top:var(--ghost-border);grid-template-columns:repeat(4,1fr);display:grid}.agent-activity__summary-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-variant);margin-top:var(--spacing-1);font-size:.5625rem;font-weight:600}.agent-activity__summary-value{color:var(--on-surface);font-weight:700}
@@ -11,8 +11,8 @@
11
11
  href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600;700&display=swap"
12
12
  rel="stylesheet"
13
13
  />
14
- <script type="module" crossorigin src="/assets/index-CJrLbh9c.js"></script>
15
- <link rel="stylesheet" crossorigin href="/assets/index-BGQkmy7q.css">
14
+ <script type="module" crossorigin src="/assets/index-Cv-3KLuW.js"></script>
15
+ <link rel="stylesheet" crossorigin href="/assets/index-DopBsBwR.css">
16
16
  </head>
17
17
  <body>
18
18
  <div id="root"></div>
@@ -21,6 +21,8 @@ export interface SessionAnalysis {
21
21
  /** Wall-clock minutes (first to last timestamp, includes idle) */
22
22
  wallClockMinutes?: number;
23
23
  projectName: string;
24
+ /** Source tool: "claude", "cursor", "codex", "gemini", "antigravity" */
25
+ source?: string;
24
26
  turns: ParsedTurn[];
25
27
  filesChanged: ParsedFileChange[];
26
28
  rawLog: string[];
@@ -86,6 +88,8 @@ export interface Session {
86
88
  cwd?: string;
87
89
  /** True when enhanced via bulk mode with auto-accepted AI suggestions */
88
90
  quickEnhanced?: boolean;
91
+ /** Source tool: "claude", "cursor", "codex", "gemini", "antigravity" */
92
+ source?: string;
89
93
  }
90
94
  export declare function extractSkills(analysis: SessionAnalysis): string[];
91
95
  export declare function computeToolBreakdown(turns: ParsedTurn[]): ToolUsage[];
package/dist/analyzer.js CHANGED
@@ -244,6 +244,7 @@ export function analyzeSession(analysis) {
244
244
  ...(analysis.agentRole ? { agentRole: analysis.agentRole } : {}),
245
245
  ...(isOrchestrated ? { isOrchestrated } : {}),
246
246
  ...(analysis.cwd ? { cwd: analysis.cwd } : {}),
247
+ ...(analysis.source ? { source: analysis.source } : {}),
247
248
  };
248
249
  }
249
250
  //# sourceMappingURL=analyzer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,wDAAwD;AAwGxD,kEAAkE;AAElE,MAAM,gBAAgB,GAA2B;IAC/C,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY;IAC1E,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM;IAC1D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO;IACnD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAC/C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS;IACpC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ;IACnD,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK;IAClD,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IACjD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAChD,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW;CACzC,CAAC;AAEF,MAAM,kBAAkB,GAA2B;IACjD,YAAY,EAAE,QAAQ,EAAE,oBAAoB,EAAE,QAAQ;IACtD,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY;IACxD,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ;IAClE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ;IAChE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM;IAChE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS;IACtD,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc;IACxD,sBAAsB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS;CAC9D,CAAC;AAEF,MAAM,eAAe,GAA8C;IACjE,EAAE,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE;IACnD,EAAE,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,SAAS,EAAE;IACvD,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE;IAChD,EAAE,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,SAAS,EAAE;IACpD,EAAE,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE;IAC/C,EAAE,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAClD,EAAE,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,SAAS,EAAE;IACvD,EAAE,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE;IAC/C,EAAE,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAClD,EAAE,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE;IACnD,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,YAAY,EAAE;IACrD,EAAE,OAAO,EAAE,yBAAyB,EAAE,KAAK,EAAE,SAAS,EAAE;IACxD,EAAE,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE;IAChD,EAAE,OAAO,EAAE,uBAAuB,EAAE,KAAK,EAAE,YAAY,EAAE;IACzD,EAAE,OAAO,EAAE,uBAAuB,EAAE,KAAK,EAAE,QAAQ,EAAE;CACtD,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,QAAyB;IACrD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,uBAAuB;IACvB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAClD,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACrE,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK;SAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;SACzD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACtD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,eAAe,EAAE,CAAC;QACjD,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAS,CAAC,CAAC,CAAC;IAC5F,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAE/C,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,OAAO,CAAC,QAAgB;IAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED,kEAAkE;AAElE,MAAM,UAAU,oBAAoB,CAAC,KAAmB;IACtD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;SACzC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AASD,SAAS,gBAAgB,CAAC,KAAgB;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE3E,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1F,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3F,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,EAAE,CAAC;QAC7E,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAChH,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,KAAgB;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,KAAK;SAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,SAAU,CAAC;SACzD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAE3C,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAE7E,wDAAwD;IACxD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACxF,MAAM,IAAI,GAAG,SAAS,EAAE,OAAO,IAAI,QAAQ,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAEzF,yCAAyC;IACzC,IAAI,KAAa,CAAC;IAClB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC3E,KAAK,GAAG,oBAAoB,CAAC;IAC/B,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC;QACtF,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,GAAG,YAAY,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,YAAY,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,CAAC;IACH,CAAC;SAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,KAAK,GAAG,oBAAoB,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,0BAA0B,CAAC;IACrC,CAAC;IAED,OAAO;QACL,KAAK;QACL,WAAW,EAAE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI;KACnE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAmB;IACvD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,+DAA+D;IAC/D,oEAAoE;IACpE,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,IAAI,OAAO,GAAc,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IAEtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC/B,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACrD,OAAO;YACL,UAAU,EAAE,GAAG,GAAG,CAAC;YACnB,KAAK;YACL,WAAW;YACX,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC;SAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kEAAkE;AAElE,MAAM,UAAU,iBAAiB,CAAC,KAAmB;IACnD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,QAAQ;YACtC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;YAC7C,CAAC,CAAC,CAAC,CAAC,OAAO;KACd,CAAC,CAAC,CAAC;AACN,CAAC;AAED,kEAAkE;AAElE,MAAM,UAAU,aAAa,CAAC,QAAyB;IACrD,+CAA+C;IAC/C,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CACrC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAClD,CAAC;IAEF,IAAI,MAA0B,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACzF,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM;QACR,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC9D,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM;QACR,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY;SACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;SACzC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAExC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC;IAC5C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACpG,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,kEAAkE;AAElE,MAAM,UAAU,kBAAkB,CAAC,YAAgC;IACjE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,kEAAkE;AAElE,MAAM,UAAU,cAAc,CAAC,QAAyB;IACtD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAClE,MAAM,cAAc,GAAG,aAAa,KAAK,SAAS,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAE/E,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,eAAe,EAAE,QAAQ,CAAC,eAAe;QACzC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;QAC5B,WAAW,EAAE,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC;QACtD,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC;QAC/B,aAAa,EAAE,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpD,aAAa,EAAE,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnD,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,YAAY,EAAE,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC/C,SAAS,EAAE,SAAS,CAAC,MAAM;QAC3B,GAAG,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,QAAQ,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC"}
package/dist/bridge.js CHANGED
@@ -4,7 +4,7 @@ import { analyzeSession } from "./analyzer.js";
4
4
  import { parseSession } from "./parsers/index.js";
5
5
  export function bridgeToAnalyzer(parsed, opts) {
6
6
  const turns = entriesToTurns(parsed.raw_entries);
7
- const filesChanged = computePerFileChanges(parsed.tool_calls);
7
+ const filesChanged = computePerFileChanges(parsed.tool_calls, parsed.loc_stats);
8
8
  const title = extractTitle(parsed.raw_entries);
9
9
  const rawLog = extractRawLog(parsed.raw_entries);
10
10
  const wallClockMinutes = parsed.wall_clock_ms > 0
@@ -26,6 +26,7 @@ export function bridgeToAnalyzer(parsed, opts) {
26
26
  ...(parsed.cwd ? { cwd: parsed.cwd } : {}),
27
27
  ...(opts.agentRole ? { agentRole: opts.agentRole } : {}),
28
28
  ...(opts.parentSessionId ? { parentSessionId: opts.parentSessionId } : {}),
29
+ source: parsed.source,
29
30
  };
30
31
  }
31
32
  function isToolUseBlock(block) {
@@ -88,7 +89,7 @@ function extractToolInput(block) {
88
89
  return input.path;
89
90
  return undefined;
90
91
  }
91
- function computePerFileChanges(toolCalls) {
92
+ function computePerFileChanges(toolCalls, locStats) {
92
93
  const files = new Map();
93
94
  // Track writes for dedup (last write wins)
94
95
  const writeLineCounts = new Map();
@@ -122,9 +123,28 @@ function computePerFileChanges(toolCalls) {
122
123
  files.set(filePath, existing);
123
124
  }
124
125
  }
125
- return [...files.entries()]
126
+ const result = [...files.entries()]
126
127
  .map(([path, stats]) => ({ path, ...stats }))
127
128
  .sort((a, b) => a.path.localeCompare(b.path));
129
+ // When tool-call-based computation yields nothing, fall back to
130
+ // the parser's loc_stats (which may have data from workspace metadata
131
+ // or other source-specific mechanisms).
132
+ if (result.length === 0 && locStats && (locStats.loc_added > 0 || locStats.loc_removed > 0)) {
133
+ // Use per-file data from loc_stats if available
134
+ if (locStats.files_changed.length > 0) {
135
+ const perFile = Math.ceil(locStats.loc_added / locStats.files_changed.length);
136
+ const perFileDel = Math.ceil(locStats.loc_removed / locStats.files_changed.length);
137
+ return locStats.files_changed.map((path) => ({
138
+ path,
139
+ additions: perFile,
140
+ deletions: perFileDel,
141
+ }));
142
+ }
143
+ // No per-file paths available — return empty array.
144
+ // Aggregate LOC data still flows through loc_stats on the parser output.
145
+ return [];
146
+ }
147
+ return result;
128
148
  }
129
149
  function extractTitle(entries) {
130
150
  // Use the first user prompt as the title
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ const program = new Command();
9
9
  program
10
10
  .name('heyiam')
11
11
  .description('Turn AI coding sessions into portfolio case studies')
12
- .version('0.1.1');
12
+ .version('0.1.2');
13
13
  program
14
14
  .command('open')
15
15
  .description('Start the local server and open the browser')
@@ -27,21 +27,24 @@ program
27
27
  const server = await startServer(port);
28
28
  const url = `http://localhost:${port}`;
29
29
  console.log(`\nheyiam running at ${url}`);
30
+ if (!apiKey) {
31
+ console.log(`Open ${url}/settings to add your Anthropic API key`);
32
+ }
30
33
  console.log('Press Ctrl+C to stop\n');
31
34
  if (opts.open) {
32
- await open(url);
35
+ open(url).catch(() => { }); // fire-and-forget, don't crash if browser fails
33
36
  }
34
37
  // Keep the process alive until Ctrl+C
35
38
  const shutdown = () => {
36
39
  console.log('\nShutting down...');
37
40
  server.close(() => process.exit(0));
38
- // Force exit after 3s if connections hang
39
41
  setTimeout(() => process.exit(0), 3000);
40
42
  };
41
43
  process.on('SIGINT', shutdown);
42
44
  process.on('SIGTERM', shutdown);
43
- // Block forever — the event loop stays alive because the server is listening
44
- await new Promise(() => { });
45
+ // Keep event loop alive explicitly
46
+ const keepAlive = setInterval(() => { }, 60_000);
47
+ keepAlive.unref = undefined; // prevent unref
45
48
  });
46
49
  import { API_URL } from './config.js';
47
50
  const API_BASE = API_URL;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,9 @@ export interface SessionSignals {
8
8
  architecturalKeywords: number;
9
9
  }
10
10
  /**
11
- * Extract cheap signals from a session's raw JSONL file.
12
- * Scans user messages for patterns without full parsing.
11
+ * Extract cheap signals from a session's raw JSONL file or parsed entries.
12
+ * For file paths, streams the JSONL. For non-file paths (cursor://, etc.),
13
+ * parses the session first to get entries, then extracts signals from those.
13
14
  */
14
15
  export declare function extractSignals(sessionPath: string): Promise<SessionSignals>;
15
16
  export interface SessionMetaWithStats {
@@ -7,10 +7,35 @@ const CORRECTION_WORDS = /\b(no|wrong|not that|actually|stop|undo|revert|don't|i
7
7
  const ARCH_KEYWORDS = /\b(design|approach|trade-?off|instead|because|architecture|strategy|decision|chose|alternative)\b/i;
8
8
  const ERROR_WORDS = /\b(error|failed|failure|exception|crash|bug|broken|fix)\b/i;
9
9
  /**
10
- * Extract cheap signals from a session's raw JSONL file.
11
- * Scans user messages for patterns without full parsing.
10
+ * Extract cheap signals from a session's raw JSONL file or parsed entries.
11
+ * For file paths, streams the JSONL. For non-file paths (cursor://, etc.),
12
+ * parses the session first to get entries, then extracts signals from those.
12
13
  */
13
14
  export async function extractSignals(sessionPath) {
15
+ // Non-file paths: parse through the parser to get entries, then extract
16
+ if (sessionPath.includes('://')) {
17
+ const { parseSession } = await import('../parsers/index.js');
18
+ const parsed = await parseSession(sessionPath);
19
+ return extractSignalsFromEntries(parsed.raw_entries);
20
+ }
21
+ // File paths: stream JSONL line by line (efficient for large files)
22
+ const entries = [];
23
+ const stream = fs.createReadStream(sessionPath, { encoding: 'utf-8' });
24
+ const rl = readline.createInterface({ input: stream, crlfDelay: Infinity });
25
+ for await (const line of rl) {
26
+ if (!line.trim())
27
+ continue;
28
+ try {
29
+ entries.push(JSON.parse(line));
30
+ }
31
+ catch {
32
+ // Skip malformed lines
33
+ }
34
+ }
35
+ return extractSignalsFromEntries(entries);
36
+ }
37
+ /** Core signal extraction that works on any array of entries. */
38
+ function extractSignalsFromEntries(entries) {
14
39
  const signals = {
15
40
  correctionCount: 0,
16
41
  avgUserExplanationLength: 0,
@@ -25,49 +50,37 @@ export async function extractSignals(sessionPath) {
25
50
  let totalUserWords = 0;
26
51
  const tools = new Set();
27
52
  const topDirs = new Set();
28
- const stream = fs.createReadStream(sessionPath, { encoding: 'utf-8' });
29
- const rl = readline.createInterface({ input: stream, crlfDelay: Infinity });
30
- for await (const line of rl) {
31
- if (!line.trim())
32
- continue;
33
- try {
34
- const entry = JSON.parse(line);
35
- totalTurns++;
36
- if (entry.type === 'user' && entry.message?.role === 'human') {
37
- userTurnCount++;
38
- const text = extractText(entry.message?.content);
39
- const words = text.split(/\s+/).filter(Boolean);
40
- totalUserWords += words.length;
41
- if (CORRECTION_WORDS.test(text))
42
- signals.correctionCount++;
43
- // Count all architectural keyword matches
44
- const archMatches = text.match(new RegExp(ARCH_KEYWORDS.source, 'gi'));
45
- if (archMatches)
46
- signals.architecturalKeywords += archMatches.length;
47
- }
48
- if (entry.type === 'tool_result' || entry.type === 'tool_use') {
49
- const text = extractText(entry.message?.content);
50
- if (ERROR_WORDS.test(text))
51
- signals.errorRetryCount++;
52
- }
53
- // Track tool diversity
54
- if (entry.message?.content && Array.isArray(entry.message.content)) {
55
- for (const block of entry.message.content) {
56
- if (block.type === 'tool_use' && block.name) {
57
- tools.add(block.name);
58
- }
59
- // Track file paths for directory scope
60
- if (block.type === 'tool_use' && block.input?.file_path) {
61
- const topDir = String(block.input.file_path).split('/').filter(Boolean)[0];
62
- if (topDir)
63
- topDirs.add(topDir);
64
- }
53
+ for (const entry of entries) {
54
+ totalTurns++;
55
+ if (entry.type === 'user' && (entry.message?.role === 'human' || entry.message?.role === 'user')) {
56
+ userTurnCount++;
57
+ const text = extractText(entry.message?.content);
58
+ const words = text.split(/\s+/).filter(Boolean);
59
+ totalUserWords += words.length;
60
+ if (CORRECTION_WORDS.test(text))
61
+ signals.correctionCount++;
62
+ const archMatches = text.match(new RegExp(ARCH_KEYWORDS.source, 'gi'));
63
+ if (archMatches)
64
+ signals.architecturalKeywords += archMatches.length;
65
+ }
66
+ if (entry.type === 'tool_result' || entry.type === 'tool_use') {
67
+ const text = extractText(entry.message?.content);
68
+ if (ERROR_WORDS.test(text))
69
+ signals.errorRetryCount++;
70
+ }
71
+ // Track tool diversity
72
+ if (entry.message?.content && Array.isArray(entry.message.content)) {
73
+ for (const block of entry.message.content) {
74
+ if (block.type === 'tool_use' && block.name) {
75
+ tools.add(block.name);
76
+ }
77
+ if (block.type === 'tool_use' && block.input?.file_path) {
78
+ const topDir = String(block.input.file_path).split('/').filter(Boolean)[0];
79
+ if (topDir)
80
+ topDirs.add(topDir);
65
81
  }
66
82
  }
67
83
  }
68
- catch {
69
- // Skip malformed lines
70
- }
71
84
  }
72
85
  signals.avgUserExplanationLength = userTurnCount > 0 ? totalUserWords / userTurnCount : 0;
73
86
  signals.userToAiRatio = totalTurns > 0 ? userTurnCount / totalTurns : 0;
@@ -89,10 +102,9 @@ function extractText(content) {
89
102
  // ── Hard floor (Layer 1) ─────────────────────────────────────────
90
103
  const MIN_DURATION = 5; // minutes
91
104
  const MIN_TURNS = 3;
92
- const MIN_FILES = 1; // at least 1 file changed
93
105
  const MAX_SELECTED = 10; // cap featured sessions for a focused portfolio
94
106
  function passesHardFloor(s) {
95
- return s.duration >= MIN_DURATION && s.turns >= MIN_TURNS && s.files >= MIN_FILES;
107
+ return s.duration >= MIN_DURATION && s.turns >= MIN_TURNS;
96
108
  }
97
109
  // ── Scoring fallback (no LLM) ────────────────────────────────────
98
110
  function scoreSession(s, signals) {
@@ -191,8 +203,6 @@ export async function triageSessions(sessions, useLLM = true, onProgress) {
191
203
  reasons.push('Too short');
192
204
  if (s.turns < MIN_TURNS)
193
205
  reasons.push('Too few turns');
194
- if (s.files < MIN_FILES)
195
- reasons.push('No files changed');
196
206
  const reason = reasons.join(', ');
197
207
  hardSkipped.push({ sessionId: s.sessionId, reason });
198
208
  onProgress?.({ type: 'hard_floor', sessionId: s.sessionId, title: s.title, passed: false, reason });