:root{--color-sky-50:#f0f7ff;--color-sky-100:#e0efff;--color-sky-200:#b9ddff;--color-sky-300:#7cc4ff;--color-sky-400:#36a9ff;--color-sky-500:#0090f0;--color-sky-600:#0072cd;--color-sky-700:#005aa6;--color-sky-800:#004d89;--color-sky-900:#003f71;--color-gray-50:#f8fafc;--color-gray-100:#f1f5f9;--color-gray-200:#e2e8f0;--color-gray-300:#cbd5e1;--color-gray-400:#94a3b8;--color-gray-500:#64748b;--color-gray-600:#475569;--color-gray-700:#334155;--color-gray-800:#1e293b;--color-gray-900:#0f172a;--color-status-active:#0090f0;--color-status-recommended:#0d9488;--color-status-on-hold:#f59e0b;--color-status-completed:#475569;--color-tier-1:#0d9488;--color-tier-2:#0090f0;--color-tier-3:#f59e0b;--color-tier-4:#94a3b8;--font-family:"Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, sans-serif;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:1.875rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-family);color:var(--color-gray-800);background:var(--color-gray-50);min-height:100vh;line-height:1.6}#app{min-height:100vh}.loading{min-height:100vh;color:var(--color-gray-500);flex-direction:column;justify-content:center;align-items:center;display:flex}.loading h1{font-size:var(--font-size-2xl);color:var(--color-sky-600);margin-bottom:var(--space-2);font-weight:700}.sign-in-page{min-height:100vh;padding:var(--space-4);background:linear-gradient(135deg, var(--color-sky-50) 0%, var(--color-gray-100) 100%);justify-content:center;align-items:center;display:flex}.sign-in-card{border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:var(--space-10);text-align:center;background:#fff;width:100%;max-width:420px}.sign-in-logo img{height:64px;margin-bottom:var(--space-6)}.sign-in-card h1{font-size:var(--font-size-2xl);color:var(--color-gray-900);margin-bottom:var(--space-2);font-weight:700}.sign-in-subtitle{color:var(--color-gray-500);font-size:var(--font-size-sm);margin-bottom:var(--space-8);line-height:1.5}.sign-in-subtitle a{color:var(--color-sky-600);text-decoration:none}.sign-in-subtitle a:hover{text-decoration:underline}.sign-in-providers{gap:var(--space-3);flex-direction:column;display:flex}.sign-in-btn{justify-content:center;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--color-gray-200);border-radius:var(--radius-md);color:var(--color-gray-700);font-family:var(--font-family);font-size:var(--font-size-sm);cursor:pointer;background:#fff;font-weight:500;transition:background .15s,border-color .15s,box-shadow .15s;display:flex}.sign-in-btn:hover{background:var(--color-gray-50);border-color:var(--color-gray-300);box-shadow:var(--shadow-sm)}.sign-in-btn:active{background:var(--color-gray-100)}.sign-in-btn:disabled{opacity:.6;cursor:not-allowed}.sign-in-btn svg{flex-shrink:0}.sign-in-divider{align-items:center;gap:var(--space-4);margin:var(--space-6) 0;color:var(--color-gray-400);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.05em;display:flex}.sign-in-divider:before,.sign-in-divider:after{content:"";background:var(--color-gray-200);flex:1;height:1px}.sign-in-email-form{gap:var(--space-3);flex-direction:column;display:flex}.sign-in-input{width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--color-gray-200);border-radius:var(--radius-md);font-family:var(--font-family);font-size:var(--font-size-sm);color:var(--color-gray-800);background:#fff;transition:border-color .15s,box-shadow .15s}.sign-in-input:focus{border-color:var(--color-sky-400);outline:none;box-shadow:0 0 0 3px #0090f01a}.sign-in-input::placeholder{color:var(--color-gray-400)}.sign-in-email-btn{background:var(--color-sky-600);color:#fff;border-color:var(--color-sky-600);margin-top:var(--space-1)}.sign-in-email-btn:hover{background:var(--color-sky-700);border-color:var(--color-sky-700)}.sign-in-error{margin-top:var(--space-4);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);color:#991b1b;font-size:var(--font-size-sm);text-align:left;background:#fef2f2;border:1px solid #fecaca}.portal-shell{background:var(--color-gray-50);min-height:100vh}.portal-header{border-bottom:1px solid var(--color-gray-200);padding:var(--space-4) var(--space-6);background:#fff}.portal-header-inner{justify-content:space-between;align-items:center;max-width:1200px;margin:0 auto;display:flex}.portal-logo{height:36px}.portal-user{align-items:center;gap:var(--space-4);font-size:var(--font-size-sm);display:flex}.portal-user-name{color:var(--color-gray-700);font-weight:600}.portal-user-role{color:var(--color-gray-400);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.05em}.portal-sign-out{border:1px solid var(--color-gray-200);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-family:var(--font-family);font-size:var(--font-size-xs);color:var(--color-gray-500);cursor:pointer;background:0 0;transition:background .15s,border-color .15s}.portal-sign-out:hover{background:var(--color-gray-50);border-color:var(--color-gray-300)}.portal-main{max-width:1200px;padding:var(--space-10) var(--space-6);margin:0 auto}.portal-main h2{font-size:var(--font-size-2xl);color:var(--color-gray-900);margin-bottom:var(--space-2);font-weight:700}.portal-main p{color:var(--color-gray-500);margin-bottom:var(--space-4)}.portal-debug{font-size:var(--font-size-xs);color:var(--color-gray-400);margin-top:var(--space-8);padding:var(--space-3) var(--space-4);background:var(--color-gray-100);border-radius:var(--radius-md);font-family:monospace}.roadmap-header{margin-bottom:var(--space-6);justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.roadmap-header-left{flex:1;min-width:0}.roadmap-title{font-size:var(--font-size-2xl);color:var(--color-gray-900);margin:0;font-weight:700}.client-selector{font-family:var(--font-family);font-size:var(--font-size-lg);color:var(--color-gray-900);border:1px solid var(--color-gray-200);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);cursor:pointer;background:#fff;min-width:200px;font-weight:600}.client-selector:focus{border-color:var(--color-sky-400);outline:none;box-shadow:0 0 0 3px #0090f026}.roadmap-controls{align-items:center;gap:var(--space-3);display:flex}.view-toggle{background:var(--color-gray-100);border-radius:var(--radius-md);padding:2px;display:flex}.view-btn{font-family:var(--font-family);font-size:var(--font-size-sm);color:var(--color-gray-500);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);cursor:pointer;background:0 0;border:none;font-weight:500;transition:all .15s}.view-btn:hover{color:var(--color-gray-700)}.view-btn-active{color:var(--color-gray-900);box-shadow:var(--shadow-sm);background:#fff}.seed-btn,.seed-roadmap-btn{font-family:var(--font-family);font-size:var(--font-size-sm);color:var(--color-sky-600);background:var(--color-sky-50);border:1px solid var(--color-sky-200);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);cursor:pointer;font-weight:500;transition:all .15s}.seed-btn:hover,.seed-roadmap-btn:hover{background:var(--color-sky-100)}.seed-btn:disabled,.seed-roadmap-btn:disabled{opacity:.6;cursor:not-allowed}.roadmap-loading,.roadmap-empty,.roadmap-error{text-align:center;padding:var(--space-12) var(--space-4);color:var(--color-gray-400);font-size:var(--font-size-base)}.roadmap-error{color:var(--color-status-on-hold)}.roadmap-cards{gap:var(--space-3);flex-direction:column;display:flex}.tier-group{margin-bottom:var(--space-8)}.tier-heading{align-items:center;gap:var(--space-2);font-size:var(--font-size-base);color:var(--color-gray-700);margin-bottom:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-gray-200);font-weight:600;display:flex}.tier-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.tier-count{font-size:var(--font-size-xs);color:var(--color-gray-400);background:var(--color-gray-100);margin-left:var(--space-1);border-radius:999px;padding:1px 8px;font-weight:500}.roadmap-card{border:1px solid var(--color-gray-200);border-radius:var(--radius-lg);background:#fff;transition:box-shadow .15s,border-color .15s;overflow:hidden}.roadmap-card:hover{border-color:var(--color-gray-300);box-shadow:var(--shadow-md)}.card-drag-handle{width:32px;color:var(--color-gray-300);cursor:grab;flex-shrink:0;justify-content:center;align-self:stretch;align-items:center;transition:color .15s;display:flex}.card-drag-handle:hover{color:var(--color-gray-500)}.card-drag-handle:active{cursor:grabbing}.card-header{align-items:center;gap:var(--space-3);padding:var(--space-4);padding-left:0;display:flex}.card-rank{width:28px;height:28px;font-size:var(--font-size-sm);color:var(--color-sky-600);background:var(--color-sky-50);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:flex}.card-title-group{flex:1;min-width:0}.card-title{font-size:var(--font-size-base);color:var(--color-gray-900);margin:0;font-weight:600;line-height:1.3}.card-summary{font-size:var(--font-size-sm);color:var(--color-gray-500);margin:2px 0 0;line-height:1.4}.card-meta{align-items:center;gap:var(--space-2);flex-shrink:0;display:flex}.card-score{font-size:var(--font-size-lg);color:var(--color-gray-800);font-weight:700}.card-tier{font-size:var(--font-size-xs);color:#fff;white-space:nowrap;border-radius:999px;padding:2px 8px;font-weight:600}.card-status{font-size:var(--font-size-xs);white-space:nowrap;border-radius:999px;padding:2px 8px;font-weight:500}.status-recommended{color:var(--color-status-recommended);background:#f0fdfa}.status-active{color:var(--color-status-active);background:var(--color-sky-50)}.status-completed{color:var(--color-status-completed);background:var(--color-gray-100)}.status-on-hold{color:#92400e;background:#fffbeb}.card-expand-btn{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--color-gray-400);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;transition:all .15s;display:flex}.card-expand-btn:hover{background:var(--color-gray-100);color:var(--color-gray-600)}.card-expanded .card-expand-btn svg{transform:rotate(180deg)}.card-details{border-top:1px solid var(--color-gray-100);padding:var(--space-6);background:var(--color-gray-50)}.card-details-grid{gap:var(--space-6);grid-template-columns:1fr;display:grid}.card-detail-section h4{font-size:var(--font-size-sm);color:var(--color-gray-700);margin-bottom:var(--space-3);text-transform:uppercase;letter-spacing:.03em;font-weight:600}.card-description{font-size:var(--font-size-sm);color:var(--color-gray-600);line-height:1.6}.card-kpis{gap:var(--space-4);flex-wrap:wrap;display:flex}.card-kpi{flex-direction:column;gap:2px;min-width:140px;display:flex}.kpi-label{font-size:var(--font-size-xs);color:var(--color-gray-400);text-transform:uppercase;letter-spacing:.03em}.kpi-value{font-size:var(--font-size-sm);color:var(--color-gray-800);font-weight:600}.score-breakdown{gap:var(--space-3);flex-direction:column;display:flex}.score-row{align-items:center;gap:var(--space-2);grid-template-columns:80px 1fr 40px;display:grid}.score-label{font-size:var(--font-size-xs);color:var(--color-gray-500);font-weight:500}.score-track{background:var(--color-gray-200);border-radius:999px;height:6px;overflow:hidden}.score-fill{background:var(--color-sky-500);border-radius:999px;height:100%;transition:width .3s}.score-value{font-size:var(--font-size-xs);color:var(--color-gray-700);text-align:right;font-weight:600}.score-justification{font-size:var(--font-size-xs);color:var(--color-gray-400);grid-column:1/-1;margin-top:-4px;padding-left:80px;line-height:1.4}.card-ghost{opacity:.4}.card-chosen{box-shadow:var(--shadow-lg);border-color:var(--color-sky-300)}.kanban-board{gap:var(--space-4);grid-template-columns:repeat(4,1fr);min-height:400px;display:grid}.kanban-column{background:var(--color-gray-100);border-radius:var(--radius-lg);flex-direction:column;display:flex;overflow:hidden}.kanban-column-header{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-bottom:2px solid var(--color-gray-200);background:#fff;display:flex}.kanban-column-title{font-size:var(--font-size-sm);color:var(--color-gray-700);flex:1;font-weight:600}.kanban-column-body{gap:var(--space-2);padding:var(--space-3);flex-direction:column;flex:1;min-height:80px;display:flex;overflow-y:auto}.kanban-card{border:1px solid var(--color-gray-200);border-radius:var(--radius-md);padding:var(--space-3);cursor:grab;background:#fff;transition:box-shadow .15s,border-color .15s}.kanban-card:hover{border-color:var(--color-gray-300);box-shadow:var(--shadow-md)}.kanban-card:active{cursor:grabbing}.kanban-card-header{margin-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.kanban-card-header .card-score{font-size:var(--font-size-sm);color:var(--color-gray-800);font-weight:700}.kanban-card-header .card-status{font-size:10px}.kanban-card-title{font-size:var(--font-size-sm);color:var(--color-gray-900);margin:0 0 4px;font-weight:600;line-height:1.3}.kanban-card-summary{font-size:var(--font-size-xs);color:var(--color-gray-500);margin:0 0 var(--space-2);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.4;display:-webkit-box;overflow:hidden}.kanban-card-kpis{gap:var(--space-2);margin-bottom:var(--space-1);display:flex}.kanban-kpi{flex-direction:column;flex:1;min-width:0;display:flex}.kanban-kpi-label{color:var(--color-gray-400);text-transform:uppercase;letter-spacing:.03em;font-size:9px;font-weight:600}.kanban-kpi-value{font-size:var(--font-size-xs);color:var(--color-gray-700);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.kanban-card-roi{margin-bottom:var(--space-2);padding:var(--space-2);border-radius:var(--radius-sm);background:#f0fdfa;flex-direction:column;display:flex}.kanban-roi-value{font-size:var(--font-size-xs);color:var(--color-status-recommended);font-weight:600;line-height:1.4}.detail-panel-wrapper{z-index:1000;pointer-events:none;position:fixed;inset:0}.detail-panel-wrapper.detail-panel-open{pointer-events:auto}.detail-panel-backdrop{opacity:0;background:#0f172a66;transition:opacity .25s;position:absolute;inset:0}.detail-panel-open .detail-panel-backdrop{opacity:1}.detail-panel{width:520px;max-width:100vw;padding:var(--space-6);background:#fff;transition:transform .25s;position:absolute;top:0;bottom:0;right:0;overflow-y:auto;transform:translate(100%);box-shadow:-8px 0 30px #00000026}.detail-panel-open .detail-panel{transform:translate(0)}.detail-panel-header{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;display:flex}.detail-panel-title-row{align-items:center;gap:var(--space-2);display:flex}.detail-panel-title-row .card-score{font-size:var(--font-size-xl);font-weight:700}.detail-panel-close{border-radius:var(--radius-sm);width:36px;height:36px;color:var(--color-gray-400);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;transition:all .15s;display:flex}.detail-panel-close:hover{background:var(--color-gray-100);color:var(--color-gray-600)}.detail-panel-name{font-size:var(--font-size-xl);color:var(--color-gray-900);margin:0 0 var(--space-1);font-weight:700}.detail-panel-summary{font-size:var(--font-size-sm);color:var(--color-gray-500);margin:0 0 var(--space-6);line-height:1.5}.detail-panel-section{margin-bottom:var(--space-6)}.detail-panel-section h4{font-size:var(--font-size-sm);color:var(--color-gray-700);text-transform:uppercase;letter-spacing:.03em;margin-bottom:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-gray-100);font-weight:600}.detail-panel-section p{font-size:var(--font-size-sm);color:var(--color-gray-600);line-height:1.6}.detail-panel-kpis{gap:var(--space-3);flex-direction:column;display:flex}.detail-kpi{padding:var(--space-2) var(--space-3);background:var(--color-gray-50);border-radius:var(--radius-sm);justify-content:space-between;align-items:baseline;display:flex}.detail-kpi-label{font-size:var(--font-size-xs);color:var(--color-gray-500);text-transform:uppercase;letter-spacing:.03em}.detail-kpi-value{font-size:var(--font-size-sm);color:var(--color-gray-800);font-weight:600}.kanban-ghost{opacity:.3;background:var(--color-sky-50);border:2px dashed var(--color-sky-300)}.kanban-chosen{box-shadow:var(--shadow-lg);border-color:var(--color-sky-400);transform:rotate(2deg)}.kanban-drag{opacity:.9;box-shadow:var(--shadow-lg)}@media (width>=768px){.card-details-grid{grid-template-columns:1fr 1fr}.card-details-grid .card-detail-section:last-child{grid-column:1/-1}}@media (width<=960px){.kanban-board{grid-template-columns:repeat(2,1fr)}}@media (width<=640px){.kanban-board{grid-template-columns:1fr}.detail-panel{width:100vw}.card-header{flex-wrap:wrap}.card-meta{width:100%;margin-top:var(--space-1);padding-left:60px}.roadmap-header{flex-direction:column;align-items:stretch}.roadmap-controls{justify-content:space-between}.card-kpis{flex-direction:column}.score-justification{padding-left:0}}
