:root{--ink:#17243b;--muted:#7c879a;--paper:#f6f8fb;--line:#e5eaf1;--indigo:#465cf5;--navy:#192841}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.5 'DM Sans',system-ui,sans-serif}a{color:inherit;text-decoration:none}button,select,summary{cursor:pointer}button,input,select,textarea{font:inherit}input,select,textarea{border:1px solid #dfe5ed;border-radius:6px;padding:9px;background:#fff;color:#334159;max-width:100%}textarea{resize:vertical}label{display:grid;gap:5px;color:#536078;font-size:12px}h1,h2,h3,p{margin:0}h1{font-size:26px}h2{font-size:18px}.sidebar{position:fixed;inset:0 auto 0 0;width:248px;background:var(--navy);padding:25px 16px 16px;color:#d6deeb;display:flex;flex-direction:column;z-index:5}.brand{display:flex;align-items:center;gap:11px;color:#fff;font-size:19px;font-weight:700;padding:0 7px 37px}.brand-light{font-weight:400;color:#b7c4d9}.brand-mark,.avatar{width:32px;height:32px;border-radius:9px;background:#6878ff;color:white;display:grid;place-items:center;font-weight:700}.avatar{border-radius:50%;background:#d8e0ff;color:#394bd0}.workspace-label{padding:0 11px;color:#8190a9;font-size:10px;font-weight:700;letter-spacing:1.4px;margin-bottom:10px}.projects-label{margin-top:29px;display:flex;justify-content:space-between}.nav-item,.project-link{min-height:40px;display:flex;align-items:center;gap:11px;border-radius:7px;padding:0 11px;color:#bdc9da}.nav-item.active{background:#2a3c59;color:#fff}.project-dot{width:7px;height:7px;border-radius:50%;background:#7e8cff}.sidebar-role{margin-top:auto;padding:12px 4px;display:grid;gap:5px}.sidebar-role label{color:#becbe0}.sidebar-role select{width:100%;background:#243752;color:white;border-color:#52637d}.sidebar-bottom{margin-top:auto;border-top:1px solid #31415b;padding:16px 4px 0;display:flex;align-items:center;gap:10px}.sidebar-role+.sidebar-bottom{margin-top:0}.user-meta{display:grid;min-width:0;flex:1;font-size:12px}.user-meta span{color:#9eabc1;font-size:10px}.icon-button{border:0;background:transparent;color:#8794a9;font-size:18px}.main-shell{margin-left:248px;min-height:100vh}.guest-shell{margin:0;display:grid;place-items:center;padding:32px}.topbar{height:61px;background:#fff;border-bottom:1px solid var(--line);padding:0 38px;display:flex;align-items:center;justify-content:space-between}.breadcrumb,.top-actions{display:flex;align-items:center;gap:10px;color:#929bad;font-size:12px}.live-dot,.project-dot{display:inline-block}.live-dot{width:7px;height:7px;border-radius:50%;background:#25aa77}.page-wrap{max-width:1500px;margin:auto;padding:33px 38px}.eyebrow{color:#93a0b4;font-size:10px;font-weight:700;letter-spacing:1.4px}.project-hero,.page-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.title-line,.hero-actions{display:flex;align-items:center;gap:10px}.project-icon,.metric-icon,.module-symbol,.cycle-icon{display:grid;place-items:center;border-radius:8px;background:#edf0ff;color:#5364e9;padding:8px}.external-link,.page-link,.test-id,.text-button{color:#5364e9}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:20px}.metric-card,.panel,.report-header,.table-wrap{background:#fff;border:1px solid var(--line);border-radius:8px}.metric-card{padding:17px}.metric-top,.panel-heading,.progress-heading{display:flex;justify-content:space-between;align-items:center;color:#7c879a;font-size:12px}.metric-value{font-size:25px;font-weight:700;margin:10px 0}.metric-foot,.table-sub,.muted{color:#94a0b2;font-size:11px}.report-header{display:grid;grid-template-columns:1fr 200px 260px;gap:22px;align-items:center;padding:18px;margin-bottom:20px}.cycle-meta{display:flex;gap:12px;flex-wrap:wrap;color:#8995a8;font-size:11px;margin-top:7px}.cycle-meta a{color:#5364e9}.cycle-select{display:grid;gap:5px}.card-progress{height:5px;border-radius:5px;background:#ebedf3;margin:8px 0}.card-progress span{display:block;height:100%;background:#6878ff;border-radius:5px}.progress-stats{display:flex;justify-content:space-between;font-size:10px;color:#8995a8}.pass-text{color:#21815d}.fail-text{color:#c8444d}.imp-text{color:#a96c13}.report-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.tabs,.filter-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.tab{padding:9px 10px;color:#7c879a;font-size:11px;border-radius:5px}.tab.active{background:#e9ebff;color:#5364e9}.filter-tools input,.filter-tools select{font-size:11px;min-height:34px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;padding:7px 12px;border:1px solid #dfe5ed;border-radius:6px;background:#fff;color:#536078;font-size:11px;font-weight:600}.btn.primary{background:#465cf5;border-color:#465cf5;color:white}.btn.tiny{min-height:30px;padding:5px 8px}.table-wrap{overflow:auto}.report-table{width:100%;border-collapse:collapse;font-size:11px;text-align:left}.report-table th{padding:12px;color:#96a2b4;background:#f8fafc;font-size:9px;letter-spacing:.8px;white-space:nowrap}.report-table td{vertical-align:top;padding:14px 12px;border-top:1px solid #e8edf3;min-width:130px;overflow-wrap:anywhere}.report-table td:nth-child(2){min-width:180px}.report-table td.test-data-cell{min-width:190px;max-width:260px}.report-table tr[data-status=pass]{background:#eaf8f0}.report-table tr[data-status=fixed]{background:#eaf3ff}.report-table tr[data-status=fail]{background:#fff0f0}.report-table tr[data-status=imp]{background:#fff8df}.report-table tr[data-status=blocked]{background:#fff1e6}.report-table tr[data-status=skipped]{background:#f1f2f7}.report-table tr[data-status=not_run]{background:#f8f9fb}.steps-list{padding-left:18px;color:#8995a8}.test-data-item{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:5px 0;border-bottom:1px solid var(--line)}.test-data-key,.test-data-character-count{color:#8995a8}.test-data-value{overflow-wrap:anywhere}.test-data-more summary{color:#5364e9}.test-data-more:not([open]) .test-data-less-label,.test-data-more[open] .test-data-more-label,.test-data-more[open] .test-data-preview{display:none}.status-badge,.status-chip,.count-pill{display:inline-block;padding:4px 8px;border-radius:14px;background:#edf0f4;color:#6b7890;font-size:10px;font-weight:700}.status-pass,.green-chip{background:#e5f6ed;color:#21815d}.status-fail{background:#ffe9e9;color:#c83e49}.status-fixed{background:#dbeafe;color:#1e40af}.status-imp{background:#fff3d2;color:#a96c13}.execution-form,.stack-form,.form-disclosure form{display:grid;gap:8px;margin-top:8px}.execution-form input,.execution-form select,.execution-form textarea{width:100%;font-size:11px}.check-label{display:flex;align-items:center;gap:6px}.evidence-thumb{display:grid;width:150px;gap:5px;padding:5px;margin-bottom:7px;border:1px solid var(--line);border-radius:7px;background:#fff;color:#5364e9;font-size:10px}.evidence-thumb img{width:100%;height:82px;object-fit:cover}.evidence-modal{width:min(92vw,1100px);border:0;border-radius:12px;padding:14px}.evidence-modal::backdrop{background:#111b2ecc}.evidence-modal img{width:100%;max-height:80vh;object-fit:contain}.evidence-modal-header{display:flex;justify-content:space-between}.management-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:20px;align-items:start}.panel{padding:17px}.panel-heading{margin-bottom:12px}.module-row,.cycle-row,.issue-row{display:flex;align-items:center;gap:10px;padding:10px 3px;border-top:1px solid #eff1f5}.module-row>div,.cycle-row>div{display:grid;flex:1}.module-row span,.cycle-row div span{color:#939dad;font-size:10px}.form-disclosure{border-top:1px solid var(--line);margin-top:9px;padding-top:10px}.form-disclosure>summary,.mini-details summary{color:#5364e9;font-weight:600;cursor:pointer}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:9px}.mini-details{margin-top:8px}.issues-panel{margin-top:15px}.issue-row strong{flex:1}.page-footer{display:flex;justify-content:space-between;color:#a4adba;font-size:10px;padding:23px 0}.toast{margin:12px 38px;padding:10px 13px;border-radius:6px}.toast.success{background:#e8f7ef;color:#287354}.toast.error{background:#fff0ef;color:#bc454c}.add-module-menu{position:relative}.add-module-menu>summary{list-style:none}.add-module-menu form{position:absolute;z-index:8;right:0;top:calc(100% + 7px);display:grid;gap:9px;width:240px;padding:13px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 30px #17243b20}.auth-card{width:min(100%,400px);background:#fff;padding:30px;border:1px solid var(--line);border-radius:10px}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.project-card{background:white;border:1px solid var(--line);border-radius:8px;padding:18px}@media(max-width:1200px){.report-toolbar{align-items:flex-start;flex-direction:column}.report-header{grid-template-columns:1fr 180px}.cycle-progress{grid-column:1/-1}}@media(max-width:850px){.sidebar{width:66px;padding:20px 8px}.sidebar .brand>span:last-child,.workspace-label,.project-link,.user-meta,.sidebar-role{display:none}.sidebar-bottom{justify-content:center}.main-shell{margin-left:66px}.metric-grid,.management-grid{grid-template-columns:repeat(2,1fr)}.topbar,.page-wrap{padding-left:16px;padding-right:16px}}@media(max-width:560px){.metric-grid,.management-grid,.report-header,.form-row,.project-grid{grid-template-columns:1fr}.project-hero{align-items:flex-start;flex-direction:column}.page-wrap{padding:20px 13px}.topbar{padding:0 14px}}

/* Login page: shares the matrix terminal visual system used by the SQA landing page. */
.login-layout{position:relative;display:block;min-height:100vh;overflow:hidden;padding:0;background:#080d0b;color:#e5f0e7}
.login-layout::before{position:fixed;z-index:0;inset:0;background:radial-gradient(ellipse at 50% 45%,rgba(28,91,43,.16),transparent 56%),linear-gradient(180deg,rgba(8,13,11,.12),#080d0b 92%);content:"";pointer-events:none}
.login-layout>.toast{position:relative;z-index:2;margin:16px auto 0;width:min(calc(100% - 40px),1240px)}
.login-layout>.toast.error{border:1px solid rgba(255,133,133,.24);background:#281716;color:#ffb2a8}
.login-page{position:relative;z-index:1;display:flex;width:min(calc(100% - 64px),1240px);min-height:100vh;min-height:100svh;flex-direction:column;margin-inline:auto;font-family:Manrope,'DM Sans',system-ui,sans-serif}
.login-matrix{position:fixed;z-index:0;inset:0;width:100%;height:100%;opacity:.18;pointer-events:none}
.login-header{position:relative;z-index:1;display:flex;min-height:86px;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(162,255,180,.13)}
.login-brand{display:inline-flex;align-items:center;gap:11px;color:#e5f0e7;font-family:'DM Mono',monospace;font-size:15px;font-weight:500;letter-spacing:.11em}
.login-brand-mark{display:grid;width:34px;height:34px;place-items:center;border:1px solid rgba(155,255,173,.56);border-radius:8px;color:#9bffad;box-shadow:inset 0 0 18px rgba(95,255,130,.08),0 0 24px rgba(95,255,130,.08)}
.login-brand-slash{color:#58b96e}
.login-system-state{display:flex;align-items:center;gap:9px;color:#91a397;font-family:'DM Mono',monospace;font-size:10px;letter-spacing:.04em}
.login-system-state i,.provider-status i{width:7px;height:7px;border-radius:50%;background:#9bffad;box-shadow:0 0 11px rgba(155,255,173,.75)}
.login-content{position:relative;z-index:1;display:grid;flex:1;grid-template-columns:minmax(0,1fr) minmax(340px,430px);align-items:center;gap:clamp(48px,9vw,128px);padding:64px 0}
.login-copy{animation:login-rise-in .7s .06s both}
.login-eyebrow{display:flex;align-items:center;gap:12px;margin-bottom:24px;color:#9bffad;font-family:'DM Mono',monospace;font-size:10px;letter-spacing:.16em;text-transform:uppercase}
.login-eyebrow::before{width:28px;height:1px;background:#9bffad;content:""}
.login-copy h1{margin:0;color:#f0f7f0;font-size:clamp(46px,6vw,76px);font-weight:600;letter-spacing:-.075em;line-height:1.06;text-wrap:balance}
.login-copy h1 span{color:#9bffad}
.login-description{max-width:490px;margin-top:22px;color:#a8b8ab;font-size:15px;line-height:1.8}
.login-provider{display:flex;max-width:470px;align-items:center;gap:13px;margin-top:34px;padding:14px;border:1px solid rgba(162,255,180,.13);border-radius:7px;background:rgba(12,20,16,.68)}
.provider-mark{display:grid;width:34px;height:34px;flex:none;place-items:center;border:1px solid rgba(155,255,173,.25);border-radius:6px;color:#9bffad;font-family:'DM Mono',monospace}
.login-provider>span:nth-child(2){display:grid;min-width:0;gap:3px}
.login-provider small{color:#718579;font-family:'DM Mono',monospace;font-size:8px;letter-spacing:.1em}
.login-provider strong{color:#cbd9ce;font-size:11px;font-weight:600}
.provider-status{display:flex;align-items:center;gap:6px;margin-left:auto;color:#85c991;font-family:'DM Mono',monospace;font-size:8px;white-space:nowrap}
.provider-status i{width:5px;height:5px}
.login-card{position:relative;overflow:hidden;padding:30px;border:1px solid rgba(155,255,173,.2);border-radius:9px;background:rgba(10,17,13,.94);box-shadow:0 25px 90px rgba(0,0,0,.4),0 0 70px rgba(51,146,68,.07);backdrop-filter:blur(10px);animation:login-rise-in .7s .16s both}
.login-card::before{position:absolute;top:0;right:0;left:0;height:2px;background:linear-gradient(90deg,#9bffad,rgba(155,255,173,0));content:""}
.login-card-kicker{color:#76ba82;font-family:'DM Mono',monospace;font-size:9px;letter-spacing:.12em}
.login-card h2{margin-top:12px;color:#f0f7f0;font-size:25px;font-weight:700;letter-spacing:-.04em}
.login-card-copy{margin-top:9px;color:#a0b0a4;font-size:13px;line-height:1.7}
.login-sso-button{display:grid;min-height:54px;grid-template-columns:28px 1fr 18px;align-items:center;gap:10px;margin-top:25px;padding:0 14px;border:1px solid #9bffad;border-radius:6px;background:#9bffad;color:#07120a;font-size:12px;font-weight:800;transition:transform .2s ease,box-shadow .2s ease,background-color .2s ease}
.login-sso-button:hover{transform:translateY(-2px);background:#b5ffc1;box-shadow:0 8px 30px rgba(102,255,129,.16)}
.login-sso-button:focus-visible,.login-back:focus-visible{outline:3px solid #e4ffe8;outline-offset:4px}
.sso-button-icon{display:grid;width:26px;height:26px;place-items:center;border:1px solid rgba(7,18,10,.24);border-radius:5px;font-family:'DM Mono',monospace}
.login-sso-button svg{width:16px;height:16px}
.login-card-note{display:flex;gap:8px;margin-top:15px;color:#829387;font-size:10px;line-height:1.6}
.login-card-note span{color:#9bffad}
.login-divider{display:flex;align-items:center;gap:10px;margin:25px 0 18px;color:#647568;font-family:'DM Mono',monospace;font-size:8px;letter-spacing:.1em}
.login-divider span:first-child,.login-divider span:last-child{height:1px;flex:1;background:rgba(162,255,180,.12)}
.login-back{display:inline-flex;min-height:32px;align-items:center;gap:8px;color:#a9b8ac;font-size:11px;transition:color .18s ease}
.login-back:hover{color:#9bffad}
.login-footer{position:relative;z-index:1;display:flex;justify-content:space-between;gap:16px;padding:18px 0 24px;border-top:1px solid rgba(162,255,180,.13);color:#718175;font-family:'DM Mono',monospace;font-size:9px}
@keyframes login-rise-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:850px){.login-page{width:min(calc(100% - 40px),620px)}.login-content{grid-template-columns:1fr;gap:45px;padding:56px 0}.login-copy h1{font-size:clamp(48px,9vw,68px)}.login-card{width:min(100%,480px);justify-self:center}}
@media(max-width:520px){.login-page{width:calc(100% - 36px)}.login-header{min-height:70px}.login-system-state{font-size:8px}.login-content{gap:36px;padding:42px 0}.login-eyebrow{margin-bottom:18px;font-size:8px}.login-copy h1{font-size:clamp(42px,12vw,58px)}.login-description{margin-top:17px;font-size:14px}.login-provider{flex-wrap:wrap;margin-top:23px;padding:11px}.provider-status{margin-left:auto}.login-card{padding:23px}.login-footer{flex-direction:column;gap:7px;font-size:8px}}
@media(prefers-reduced-motion:reduce){.login-layout *, .login-layout *::before, .login-layout *::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

.report-toolbar .tabs{flex:1 1 0;min-width:0;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin}.report-toolbar .tabs .tab{flex:0 0 auto;white-space:nowrap}.report-toolbar .filter-tools{flex:0 0 auto}@media(max-width:1200px){.report-toolbar .tabs{width:100%;flex-basis:auto}}

.row-edit[hidden],.row-view[hidden],[hidden]{display:none!important}.row-edit textarea{display:block;width:100%;min-width:150px;margin:4px 0 8px}.row-edit label{margin-bottom:8px}.row-edit-start{margin-bottom:6px}

.report-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.report-filters label{display:flex;align-items:center;gap:5px}.report-pagination{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:12px 0;color:#68778f;font-size:12px}.report-pagination div{display:flex;gap:6px}

.export-menu{position:relative}.export-menu summary{list-style:none}.export-menu>div{position:absolute;right:0;z-index:10;min-width:180px;background:white;border:1px solid #e5eaf1;border-radius:8px;box-shadow:0 8px 24px #17243b22;padding:5px}.export-menu a{display:block;padding:9px;border-radius:5px}.export-menu a:hover{background:#eef0ff}

.new-test-menu form{width:min(400px,85vw);max-height:70vh;overflow:auto}.new-test-menu form textarea,.new-test-menu form select{width:100%}

.new-test-menu form{width:min(700px,90vw);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.new-test-menu form label{min-width:0}.new-test-menu form input,.new-test-menu form textarea,.new-test-menu form select{width:100%}.new-test-menu form button{grid-column:1/-1}@media(max-width:600px){.new-test-menu form{grid-template-columns:1fr;max-width:85vw}.new-test-menu form button{grid-column:auto}}

.new-test-dialog{width:min(760px,94vw);max-width:94vw;max-height:90vh;padding:20px;border:0;border-radius:12px;background:#fff;color:var(--ink);box-shadow:0 24px 70px #17243b66;overflow:auto}.new-test-dialog::backdrop{background:#17243b99}.new-test-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.new-test-header button{border:0;background:transparent;font-size:26px;color:#68778f;cursor:pointer}.new-test-dialog form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.new-test-dialog form label{min-width:0}.new-test-dialog input,.new-test-dialog textarea,.new-test-dialog select{width:100%}.new-test-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px;margin-top:5px}@media(max-width:600px){.new-test-dialog form{grid-template-columns:1fr}.new-test-actions{grid-column:auto}}

.report-toolbar{display:flex;flex-direction:column;align-items:stretch;gap:12px}.report-toolbar .filter-tools{display:flex;flex-wrap:nowrap;overflow-x:auto;align-items:center;gap:8px;padding:3px 0 8px}.report-toolbar .report-filters{display:flex;flex-wrap:nowrap;align-items:center;gap:8px}.report-toolbar .filter-tools>* , .report-toolbar .report-filters>*{flex:0 0 auto}.report-toolbar .tabs{width:100%;flex:none;flex-wrap:nowrap;overflow-x:auto}.report-toolbar .filter-tools .add-module-menu,.report-toolbar .filter-tools .add-module-menu form{position:static}.report-toolbar .filter-tools .add-module-menu[open] form{position:absolute;top:auto;z-index:10}

.report-table td:has(.row-edit:not([hidden])){min-width:260px}.row-edit textarea{min-height:90px;resize:vertical;overflow-y:hidden}.test-data-fields{display:grid;gap:8px}.test-data-fields label{display:grid;gap:4px;overflow-wrap:anywhere}.test-data-fields textarea{width:100%}
/* Kolom aksi tetap terlihat ketika tabel digeser secara horizontal. */
.report-table th:last-child,.report-table td:last-child{position:sticky;right:0;z-index:2;min-width:120px;box-shadow:-4px 0 10px #17243b12;background:#fff}
.report-table th:last-child{z-index:3;background:#f8fafc}
.report-table tr[data-status="pass"] td:last-child{background:#eaf8f0}
.report-table tr[data-status="fixed"] td:last-child{background:#eaf3ff}
.report-table tr[data-status="fail"] td:last-child{background:#fff0f0}
.report-table tr[data-status="imp"] td:last-child{background:#fff8df}
.report-table tr[data-status="blocked"] td:last-child{background:#fff1e6}
.report-table tr[data-status="skipped"] td:last-child{background:#f1f2f7}
.report-table tr[data-status="not_run"] td:last-child{background:#f8f9fb}
.report-table td:last-child .row-edit:not([hidden]){position:sticky;top:8px;display:flex;flex-wrap:wrap;gap:6px;align-items:flex-start}

.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.project-card{display:flex;flex-direction:column;gap:12px;padding:20px;min-width:0;transition:box-shadow .2s,transform .2s,border-color .2s}.project-card:hover{transform:translateY(-2px);border-color:#aeb9ff;box-shadow:0 12px 28px #17243b12}.project-card-top,.project-card-stats,.project-card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px}.project-card-top .project-icon{width:42px;height:42px;font-size:18px;font-weight:700}.project-card h3{font-size:17px;margin:0}.project-url{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-card-stats{justify-content:flex-start;color:#7c879a;font-size:12px;gap:20px}.project-card-foot{color:#7c879a;font-size:11px}.project-dialog{width:min(650px,94vw);max-width:94vw;border:0;border-radius:12px;padding:24px;box-shadow:0 24px 70px #17243b66}.project-dialog::backdrop{background:#17243b99}.project-dialog .section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.project-dialog .project-form{display:grid;gap:16px}.project-dialog .project-form input{width:100%}.project-modal-close{border:0;background:transparent;font-size:26px;color:#68778f;cursor:pointer}@media(max-width:850px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.project-grid{grid-template-columns:1fr}}
.project-setup-panel{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:18px 0}.project-setup-panel h2{margin:6px 0;font-size:18px}.project-setup-panel p{margin:0}.project-setup-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.cycle-create-menu{position:relative}.cycle-create-menu>summary{list-style:none;cursor:pointer}.cycle-create-menu>form{position:absolute;z-index:10;right:0;top:calc(100% + 7px);display:grid;gap:10px;width:min(360px,88vw);padding:16px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 30px #17243b20}.cycle-create-menu fieldset{display:grid;gap:7px;border:1px solid var(--line);border-radius:6px;padding:10px}.cycle-module-option{display:flex;align-items:center;gap:8px}.cycle-module-option input{width:auto}.empty-cycle-state{display:grid;gap:5px;color:#536078;margin:12px 0 20px}.empty-cycle-state span{color:#8995a8;font-size:12px}@media(max-width:650px){.project-setup-panel{align-items:flex-start;flex-direction:column}.project-setup-actions{width:100%}}
.sso-login-button{min-height:46px;display:flex;align-items:center;justify-content:center;gap:10px;margin-top:22px}.sso-login-button:focus-visible{outline:3px solid #192841;outline-offset:3px}.sso-help{margin-top:15px;color:var(--muted);font-size:12px;text-align:center}.auth-card h1{margin-top:8px}.auth-card .muted{margin-top:10px}

.security-quote{max-width:740px;min-height:2.25em}.typing-caret{display:inline-block;width:2px;height:.9em;margin-left:5px;vertical-align:-.06em;background:var(--indigo);animation:typing-caret-blink .8s steps(1,end) infinite}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes typing-caret-blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.typing-caret{animation:none;opacity:0}}
.sidebar-bottom{position:relative}.profile-menu{position:relative;flex:1;min-width:0}.profile-trigger{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer;list-style:none;border-radius:8px;padding:4px;color:inherit}.profile-trigger::-webkit-details-marker{display:none}.profile-trigger:hover{background:#ffffff0c}.profile-trigger:focus-visible,.profile-logout:focus-visible{outline:2px solid #8c9aff;outline-offset:2px}.profile-chevron{margin-left:auto;color:#9eabc1;font-size:16px;transition:transform .16s ease}.profile-menu[open] .profile-chevron{transform:rotate(180deg)}.profile-popover{position:absolute;z-index:30;left:0;bottom:calc(100% + 12px);width:min(270px,calc(100vw - 32px));padding:12px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 34px #14213b2b;color:#27364d}.profile-popover-user{display:grid;gap:3px;padding:5px 7px 11px;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.profile-popover-user span{font-size:11px;color:#8995a8}.profile-popover form{margin:9px 0 0}.profile-logout{display:flex;align-items:center;gap:9px;width:100%;min-height:42px;padding:8px 10px;border:0;border-radius:7px;background:#fff;color:#c8444d;font:inherit;text-align:left;cursor:pointer}.profile-logout:hover{background:#fff0f0}@media(max-width:850px){.profile-menu{flex:0}.profile-trigger{padding:4px}.profile-chevron{display:none}.profile-popover{left:-8px}}
.member-picker{display:grid;gap:8px}.member-search-box{position:relative}.member-options{position:absolute;z-index:20;top:calc(100% + 4px);left:0;right:0;max-height:240px;overflow:auto;border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:0 12px 30px #17243b22}.member-option{display:grid;width:100%;gap:2px;padding:10px 12px;border:0;border-bottom:1px solid #edf0f5;background:#fff;color:var(--ink);text-align:left;cursor:pointer}.member-option:last-child{border-bottom:0}.member-option:hover,.member-option:focus-visible{background:#f1f3ff;outline:none}.member-option span,.member-option-empty{color:var(--muted);font-size:12px}.member-option-empty{padding:12px}.member-selection{display:flex;flex-wrap:wrap;gap:7px}.member-chip{display:inline-flex;align-items:center;gap:7px;max-width:100%;padding:5px 8px;border:1px solid #dfe5ed;border-radius:20px;background:#f4f6ff;color:#394bd0;font-size:12px}.member-chip>span{overflow-wrap:anywhere}.member-chip-remove{flex:0 0 auto;width:24px;height:24px;border:0;border-radius:50%;background:transparent;color:#536078;font-size:18px;line-height:1;cursor:pointer}.member-chip-remove:hover{background:#e5e9fa}.member-picker-hint{color:var(--muted);font-size:12px}
.first-cycle-panel{display:grid;gap:24px;margin:26px auto;width:min(100%,980px);padding:clamp(22px,4vw,38px);border-radius:14px;box-shadow:0 12px 34px #17243b0b}.first-cycle-intro{display:flex;align-items:flex-start;gap:16px}.first-cycle-icon{display:grid;place-items:center;flex:0 0 48px;height:48px;border-radius:14px;background:#eef0ff;color:var(--indigo);font-size:24px}.first-cycle-intro h2{margin:4px 0 6px;font-size:22px}.first-cycle-intro p{max-width:620px;color:var(--muted)}.first-cycle-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:end;gap:16px}.first-cycle-form label{min-width:0}.first-cycle-form input{width:100%;min-width:0;min-height:44px}.first-cycle-form .btn{grid-column:1/-1;justify-self:start;min-height:44px;padding-inline:18px}.first-cycle-permission{padding:14px 16px;border-radius:8px;background:#fff7e8;color:#98611b}#membersDialog.project-dialog{width:min(680px,calc(100vw - 32px));max-width:calc(100vw - 32px);max-height:88vh;overflow:auto;padding:clamp(20px,4vw,32px)}#membersDialog .stack-form{gap:16px}#membersDialog .member-picker input{display:block;width:100%;min-width:0;min-height:48px;padding:12px 14px}.member-list{display:grid;gap:8px;margin-top:20px}.member-list-row{display:flex;align-items:center;gap:12px;min-width:0;padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:#fbfcfe}.member-list-avatar{display:grid;place-items:center;flex:0 0 36px;height:36px;border-radius:50%;background:#eef0ff;color:#5364e9;font-weight:700}.member-list-meta{display:grid;flex:1;min-width:0;gap:2px}.member-list-meta strong,.member-list-meta span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-list-meta span{color:var(--muted);font-size:12px}.member-role-pill{padding:4px 9px;border-radius:20px;background:#edf0f4;color:#627087;font-size:11px;font-weight:700}@media(max-width:650px){.first-cycle-form{grid-template-columns:1fr}.first-cycle-form .btn{grid-column:auto;justify-self:stretch}.first-cycle-panel{margin:18px auto}.first-cycle-intro h2{font-size:19px}}
.cycle-chooser{display:grid;gap:22px;margin:26px 0}.cycle-chooser-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.cycle-chooser-heading h2{margin:5px 0;font-size:22px}.cycle-choice-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:12px}.cycle-choice-card{display:flex;align-items:center;gap:13px;min-width:0;padding:16px;border:1px solid var(--line);border-radius:11px;background:#fff;box-shadow:0 4px 16px #17243b08;transition:border-color .16s,box-shadow .16s,transform .16s}.cycle-choice-card:hover{transform:translateY(-2px);border-color:#abb6ff;box-shadow:0 10px 25px #17243b12}.cycle-choice-icon{display:grid;place-items:center;flex:0 0 42px;height:42px;border-radius:12px;background:#eef0ff;color:var(--indigo);font-size:20px}.cycle-choice-content{display:grid;flex:1;min-width:0;gap:4px}.cycle-choice-content strong,.cycle-choice-content span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cycle-choice-content span{color:var(--muted);font-size:12px}.cycle-choice-arrow{color:var(--indigo);font-size:18px}.cycle-chooser .cycle-create-menu>form{display:grid;gap:10px}@media(max-width:650px){.cycle-chooser-heading{align-items:flex-start;flex-direction:column}.cycle-chooser-heading .cycle-create-menu{align-self:stretch}.cycle-chooser-heading .cycle-create-menu>summary{width:100%}}
.add-module-dialog{width:min(480px,94vw);padding:24px}.add-module-dialog .section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.add-module-dialog .stack-form{display:grid;gap:16px}.add-module-dialog input{width:100%;min-width:0;min-height:44px}.add-module-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}@media(max-width:560px){.add-module-dialog{padding:20px}.add-module-actions .btn{flex:1}}
.report-toolbar .filter-tools{width:100%;justify-content:flex-end;gap:12px}.report-toolbar .report-filters{gap:12px}.report-toolbar .filter-tools>.btn,.report-toolbar .report-filters>select,.report-toolbar .report-filters>label{flex:0 0 auto}@media(max-width:1200px){.report-toolbar .filter-tools{justify-content:flex-end}}
