:root{--bg:#f5f6fa;--surface:#fff;--text:#1c1f2a;--text-sub:#6b7080;--border:#e4e6ee;--primary:#4f5bd5;--primary-soft:#eceefe;--success:#1f9d63;--success-soft:#e3f6ec;--danger:#e04f5f;--danger-soft:#fdebed;--skip:#8a8f9e;--skip-soft:#eeeff3;--chart-pass:#4f5bd5;--chart-fail:#e04f5f;--chart-skip:#8a8f9e;--radius:14px;--sidebar-width:232px;--tabbar-height:64px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:Pretendard,-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Malgun Gothic,system-ui,sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#12141b;--surface:#1b1e27;--text:#eceef4;--text-sub:#9a9fb0;--border:#2a2e3a;--primary:#8b94ff;--primary-soft:#262a48;--success:#4cc98d;--success-soft:#183327;--danger:#ff7a87;--danger-soft:#3a1d22;--skip:#9096a6;--skip-soft:#2a2d36;--chart-pass:#7c86f5;--chart-fail:#e86170;--chart-skip:#62677a}}*{box-sizing:border-box}body{background:var(--bg);margin:0}h1,h2,h3,p{margin:0}.btn{border:1px solid var(--border);background:var(--surface);height:40px;color:var(--text);font:inherit;cursor:pointer;white-space:nowrap;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:0 16px;font-size:14px;font-weight:700;display:inline-flex}.btn:hover{background:var(--bg)}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary);filter:brightness(1.08)}.btn-danger{color:var(--danger)}.btn-danger-solid{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger-solid:hover{background:var(--danger);filter:brightness(1.08)}.icon-btn{width:36px;height:36px;color:var(--text-sub);cursor:pointer;background:0 0;border:none;border-radius:8px;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--bg);color:var(--text)}.input{border:1px solid var(--border);background:var(--surface);width:100%;height:42px;color:var(--text);font:inherit;border-radius:10px;padding:0 12px;font-size:16px}textarea.input{resize:vertical;height:auto;min-height:84px;padding:10px 12px}.input:focus{outline:2px solid var(--primary);outline-offset:-1px}.modal-backdrop{z-index:100;background:#0a0c1473;place-items:center;padding:24px;animation:.15s ease-out fade-in;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border-radius:18px;flex-direction:column;width:100%;min-width:0;max-width:540px;max-height:88vh;display:flex;box-shadow:0 20px 60px #00000040}.modal.wide{max-width:820px}.modal-head{justify-content:space-between;align-items:center;padding:18px 16px 8px 24px;display:flex}.modal-head h2{font-size:19px;font-weight:800}.modal-body{padding:8px 24px 24px;overflow-y:auto}@media (width<=767px){.modal-backdrop{place-items:end stretch;padding:0}.modal,.modal.wide{border-radius:20px 20px 0 0;max-width:100vw;max-height:92dvh;animation:.22s ease-out slide-up}.modal-body{padding:8px 16px calc(20px + env(safe-area-inset-bottom))}.modal-head{padding:16px 8px 4px 16px}}@keyframes fade-in{0%{opacity:0}}@keyframes slide-up{0%{transform:translateY(100%)}}.login-wrap{place-items:center;min-height:100dvh;padding:24px 16px;display:grid}.login-card{flex-direction:column;gap:16px;width:100%;max-width:400px;padding:32px 28px;display:flex}.login-brand{font-size:24px;font-weight:800}.login-sub{color:var(--text-sub);margin-top:-8px;font-size:14px}.login-title{font-size:18px;font-weight:800}.login-tabs .seg{height:40px}.login-form{flex-direction:column;gap:14px;display:flex}.login-form .field{flex-direction:column;gap:6px;display:flex}.login-form .field>span{color:var(--text-sub);font-size:13px;font-weight:700}.login-submit{height:46px;margin-top:4px;font-size:15px}.login-submit:disabled{opacity:.6}.login-error,.login-notice{border-radius:10px;padding:10px 12px;font-size:13px;line-height:1.5}.login-error{background:var(--danger-soft);color:var(--danger)}.login-notice{background:var(--success-soft);color:var(--success)}.login-links{flex-wrap:wrap;justify-content:center;gap:4px 18px;display:flex}.login-links .link-btn:disabled{color:var(--text-sub);cursor:default}.muted-link{color:var(--text-sub)}.login-help{color:var(--text-sub);font-size:14px;line-height:1.6}.otp-input{letter-spacing:8px;text-align:center;font-variant-numeric:tabular-nums;height:56px;font-size:26px;font-weight:800}.otp-input::placeholder{color:var(--border)}.app-center{min-height:100dvh;color:var(--text-sub);text-align:center;place-items:center;padding:24px;line-height:1.7;display:grid}.layout{min-height:100vh}.nav{width:var(--sidebar-width);background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:4px;padding:24px 14px;display:flex;position:fixed;top:0;bottom:0;left:0}.nav-logo{padding:0 12px 20px;font-size:20px;font-weight:800}.nav-version{color:var(--primary);vertical-align:middle;font-size:12px;font-weight:600}.nav-item{color:var(--text-sub);border-radius:10px;align-items:center;gap:12px;padding:11px 12px;font-size:15px;font-weight:600;text-decoration:none;display:flex}.nav-item:hover{background:var(--bg);color:var(--text)}.nav-item.active{background:var(--primary-soft);color:var(--primary)}.content{margin-left:var(--sidebar-width);max-width:1200px;padding:36px 40px}.nav-account{border-top:1px solid var(--border);margin-top:auto;padding:12px}.account{flex-direction:column;gap:4px;min-width:0;display:flex}.account-email{color:var(--text-sub);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.account-actions{align-items:center;gap:12px;display:flex}.account-out{color:var(--text-sub);gap:4px}.account-delete{color:var(--text-sub);opacity:.8;font-size:12px;font-weight:500}.account-delete:hover{color:var(--danger)}.mobile-account{display:none}.banner{border:1px solid var(--primary);border-radius:var(--radius);background:var(--primary-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 16px;margin-bottom:20px;padding:14px 16px;font-size:14px;line-height:1.5;display:flex}.banner-error{border-color:var(--danger);background:var(--danger-soft);color:var(--danger)}.banner-actions{gap:8px;display:flex}.loading{color:var(--text-sub);text-align:center;padding:40px 0}@media (width<=767px){.nav{width:auto;height:calc(var(--tabbar-height) + env(safe-area-inset-bottom));padding:0 0 env(safe-area-inset-bottom);border-right:none;border-top:1px solid var(--border);z-index:10;flex-direction:row;gap:0;top:auto;right:0}.nav-logo,.nav-account{display:none}.mobile-account{border-top:1px solid var(--border);margin-top:32px;padding-top:16px;display:block}.mobile-account .account{flex-direction:row;justify-content:space-between;align-items:center}.nav-item{border-radius:0;flex-direction:column;flex:1;justify-content:center;gap:3px;padding:0;font-size:11px}.nav-item:hover,.nav-item.active{background:0 0}.content{padding:20px 16px calc(var(--tabbar-height) + env(safe-area-inset-bottom) + 20px);margin-left:0}}.app-form{flex-direction:column;gap:18px;display:flex}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.form-row-wide{grid-template-columns:3fr 2fr}.field{flex-direction:column;gap:8px;min-width:0;display:flex}.field>span{color:var(--text-sub);font-size:13px;font-weight:700}.hint{color:var(--text-sub);font-size:12px}.segmented{flex-wrap:wrap;gap:6px;display:flex}.seg{border:1px solid var(--border);background:var(--surface);min-width:64px;height:38px;color:var(--text-sub);font:inherit;cursor:pointer;border-radius:10px;flex:1;font-size:14px;font-weight:700}.seg.active{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.seg.active.result-pass{border-color:var(--success);background:var(--success-soft);color:var(--success)}.seg.active.result-fail{border-color:var(--danger);background:var(--danger-soft);color:var(--danger)}.seg.active.result-skip{border-color:var(--skip);background:var(--skip-soft);color:var(--skip)}.schedule-row{grid-template-columns:1fr 160px 36px;align-items:center;gap:8px;display:grid}.add-schedule{height:36px;color:var(--text-sub);border-style:dashed;align-self:flex-start}.form-actions{gap:8px;padding-top:4px;display:flex}.spacer{flex:1}.stage-flow{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.stage-chip{border:1px solid var(--border);background:var(--surface);height:36px;color:var(--text-sub);font:inherit;cursor:pointer;border-radius:10px;align-items:center;gap:6px;padding:0 12px 0 8px;font-size:14px;font-weight:700;display:inline-flex}.stage-num{background:var(--bg);border-radius:9px;place-items:center;width:18px;height:18px;font-size:11px;display:inline-grid}.stage-chip.done{color:var(--primary)}.stage-chip.current{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.stage-chip.pass{border-color:var(--success);background:var(--success-soft);color:var(--success)}.stage-chip.fail{border-color:var(--danger);background:var(--danger-soft);color:var(--danger)}.stage-chip.skip{border-color:var(--skip);background:var(--skip-soft);color:var(--skip)}.stage-chip.current .stage-num,.stage-chip.fail .stage-num,.stage-chip.skip .stage-num{background:var(--surface)}.stage-editor-bar{justify-content:space-between;align-items:center;gap:8px;margin-top:8px;display:flex}.link-btn{color:var(--primary);font:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:2px;padding:4px 0;font-size:13px;font-weight:700;display:inline-flex}.flip{transform:rotate(180deg)}.stage-edit{background:var(--bg);border-radius:12px;flex-direction:column;gap:8px;margin-top:10px;padding:12px;display:flex}.stage-row{grid-template-columns:1fr 88px 32px 32px 32px;align-items:center;gap:4px;display:grid}.stage-row .icon-btn{width:32px}.stage-row .icon-btn:disabled{opacity:.3;cursor:default}.preset-list{flex-wrap:wrap;gap:6px;display:flex}.preset-chip{border:1px dashed var(--border);background:var(--surface);height:30px;color:var(--text-sub);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:3px;padding:0 10px;font-size:13px;font-weight:600;display:inline-flex}.preset-chip:hover{border-color:var(--primary);color:var(--primary)}.preset-chip.custom{color:var(--primary);border-style:solid}@media (width<=767px){.form-row{grid-template-columns:1fr}.schedule-row{grid-template-columns:1fr 140px 36px}}.page-header{margin-bottom:24px}.page-header-row{justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.header-actions{flex-shrink:0;gap:8px;display:flex}@media (width<=767px){.hide-mobile{display:none}}.page-title{font-size:26px;font-weight:800}.page-desc{color:var(--text-sub);margin-top:6px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.placeholder{min-height:180px;color:var(--text-sub);text-align:center;border-style:dashed;place-items:center;display:grid}.grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;display:grid}@media (width<=767px){.page-title{font-size:22px}}.dday{background:var(--primary-soft);color:var(--primary);border-radius:6px;flex-shrink:0;padding:2px 8px;font-size:12px;font-weight:800}.badge{white-space:nowrap;border-radius:999px;justify-self:end;padding:4px 10px;font-size:12px;font-weight:800}.badge-progress{background:var(--primary-soft);color:var(--primary)}.badge-pass{background:var(--success-soft);color:var(--success)}.badge-fail{background:var(--danger-soft);color:var(--danger)}.badge-skip{background:var(--skip-soft);color:var(--skip)}.chip{border:1px solid var(--border);background:var(--surface);height:34px;color:var(--text-sub);font:inherit;cursor:pointer;border-radius:999px;flex-shrink:0;padding:0 14px;font-size:14px;font-weight:700}.chip.active{border-color:var(--text);background:var(--text);color:var(--surface)}.chip-count{opacity:.7;margin-left:2px}.dash-filter{margin-bottom:16px}.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px;display:grid}.stat-tile{flex-direction:column;gap:4px;padding:18px 20px;display:flex}.stat-label{color:var(--text-sub);font-size:13px;font-weight:700}.stat-value{letter-spacing:-.5px;font-variant-numeric:tabular-nums;font-size:30px;font-weight:800}.stat-value small{color:var(--text-sub);margin-left:2px;font-size:15px;font-weight:700}.stat-sub{color:var(--text-sub);font-size:12px}.dash-columns{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;margin-bottom:16px;display:grid}.dash-card{padding:20px}.dash-card-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.dash-card-head h2{font-size:17px;font-weight:800}.dash-more{color:var(--text-sub);align-items:center;font-size:13px;font-weight:700;text-decoration:none;display:inline-flex}.dash-more:hover{color:var(--primary)}.dash-muted{color:var(--text-sub);padding:16px 0;font-size:14px}.dash-note{color:var(--text-sub);margin-top:12px;font-size:12px}.dash-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.dash-list li+li{border-top:1px solid var(--border)}.dash-item{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:12px;padding:10px 4px;display:flex}.dash-item:hover{background:var(--bg)}.dash-item-text{flex-direction:column;flex:1;min-width:0;display:flex}.dash-item-text strong{font-size:15px}.dash-item-text>span,.dash-pos{color:var(--text-sub);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;overflow:hidden}.dash-next{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.dash-next small{color:var(--text-sub);font-size:12px}.rate-list{flex-direction:column;gap:14px;margin:4px 0 0;padding:0;list-style:none;display:flex}.rate-row{grid-template-columns:40px minmax(0,1fr) 64px;align-items:center;gap:12px;display:grid}.rate-label{font-size:14px;font-weight:700}.rate-track{background:var(--bg);border-radius:5px;height:10px;overflow:hidden}.rate-fill{background:var(--primary);border-radius:5px;height:100%;display:block}.rate-value{font-variant-numeric:tabular-nums;flex-direction:column;align-items:flex-end;font-size:15px;font-weight:800;display:flex}.rate-value small{color:var(--text-sub);font-size:11px;font-weight:600}.dash-empty{text-align:center;flex-direction:column;align-items:center;gap:8px;padding:48px 20px;display:flex}.dash-empty-title{font-size:17px;font-weight:800}.dash-empty .btn{margin-top:10px;text-decoration:none}@media (width<=1100px){.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=767px){.stat-grid{gap:8px}.stat-tile{padding:14px 16px}.stat-value{font-size:26px}.dash-columns{grid-template-columns:1fr}.dash-card{padding:16px}}.import-pick{flex-direction:column;gap:14px;display:flex}.drop-zone{border:2px dashed var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text-sub);font:inherit;text-align:center;cursor:pointer;flex-direction:column;align-items:center;gap:8px;padding:40px 20px;display:flex}.drop-zone strong{color:var(--text);font-size:15px}.drop-zone span{font-size:13px}.drop-zone:hover,.drop-zone.over{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.import-tips{color:var(--text-sub);margin:0;padding-left:18px;font-size:13px;line-height:1.7}.import-error{color:var(--danger);font-size:14px;font-weight:600}.import-file{background:var(--bg);color:var(--text-sub);border-radius:10px;align-items:center;gap:8px;margin-bottom:16px;padding:10px 12px;font-size:14px;font-weight:600;display:flex}.import-file span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.import-sheet{width:auto;height:34px;font-size:14px}.import-steps{flex-direction:column;gap:24px;display:flex}.import-section{flex-direction:column;gap:8px;display:flex}.import-section h3{align-items:center;gap:8px;font-size:16px;font-weight:800;display:flex}.step-badge{background:var(--primary);color:#fff;border-radius:11px;place-items:center;width:22px;height:22px;font-size:12px;display:inline-grid}.table-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.table-item{border:1px solid var(--border);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;display:flex}.table-item.off{opacity:.55}.table-check{cursor:pointer;align-items:center;gap:8px;display:flex}.table-check input{width:18px;height:18px;accent-color:var(--primary)}.segmented.small .seg{min-width:56px;height:32px;font-size:13px}.col-list{flex-direction:column;gap:6px;display:flex}.col-row{grid-template-columns:minmax(0,1.3fr) 16px minmax(0,1fr) minmax(0,1fr);align-items:center;gap:8px;display:grid}.col-row.off .col-head{opacity:.5}.col-head{flex-direction:column;min-width:0;display:flex}.col-head strong{font-size:14px}.col-sample{color:var(--text-sub);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.col-arrow{color:var(--text-sub);text-align:center}.col-row .input,.value-row .input{height:38px;font-size:14px}.value-list{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:6px 16px;display:grid}.value-row{grid-template-columns:minmax(0,1fr) 110px;align-items:center;gap:8px;display:grid}.value-text{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:700;overflow:hidden}.value-text small{color:var(--text-sub);font-weight:500}.preview-wrap{border:1px solid var(--border);border-radius:12px;max-height:320px;overflow:auto}.preview{border-collapse:collapse;width:100%;font-size:13px}.preview th{background:var(--bg);color:var(--text-sub);text-align:left;white-space:nowrap;padding:8px 10px;font-weight:700;position:sticky;top:0}.preview td{border-top:1px solid var(--border);vertical-align:top;padding:8px 10px}.preview td:first-child{white-space:nowrap;font-weight:700}.preview td small{color:var(--text-sub);font-weight:500}.preview b{color:var(--primary)}.import-actions{background:var(--surface);border-top:1px solid var(--border);margin:0 -24px -24px;padding:12px 24px 24px;position:sticky;bottom:-24px}.btn:disabled{opacity:.5;cursor:default}@media (width<=767px){.col-row{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:8px 0}.col-head{grid-column:1/-1}.col-arrow,.col-row>span:empty{display:none}.col-row:has(>span:empty) select{grid-column:1/-1}.import-actions{bottom:calc(-20px - env(safe-area-inset-bottom));margin:0 -16px calc(-20px - env(safe-area-inset-bottom));padding:12px 16px calc(20px + env(safe-area-inset-bottom))}}.empty{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:48px 20px;display:flex}.empty-title{font-size:17px;font-weight:800}.empty-actions{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:14px;display:flex}.filters{flex-direction:column;gap:8px;margin-bottom:14px;display:flex}.filter-row{scrollbar-width:none;gap:8px;display:flex;overflow-x:auto}.chip-sub{height:30px;padding:0 12px;font-size:13px}.chip-sub.active{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.filter-line{align-items:center;gap:12px;display:flex}.filter-line .filter-row{flex:1;min-width:0}.reset-btn{white-space:nowrap;flex-shrink:0}.link-btn.danger{color:var(--text-sub);gap:4px}.link-btn.danger:hover{color:var(--danger)}.reset-body{flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:20px;line-height:1.6;display:flex}.app-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.app-list-empty{color:var(--text-sub);text-align:center;padding:32px}.app-row{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;grid-template-columns:minmax(140px,1.3fr) minmax(170px,1.3fr) minmax(160px,1.4fr) 76px;grid-template-areas:"main steps next badge";align-items:center;gap:16px;padding:16px 20px;display:grid}.app-row:hover{border-color:var(--primary)}.app-main{flex-direction:column;grid-area:main;gap:2px;min-width:0;display:flex}.app-main strong{text-overflow:ellipsis;white-space:nowrap;font-size:16px;overflow:hidden}.app-main span{color:var(--text-sub);font-size:13px}.steps{flex-direction:column;grid-area:steps;gap:6px;display:flex}.steps-bar{gap:4px;display:grid}.steps-count{opacity:.7;font-weight:500}.step{background:var(--border);border-radius:3px;height:6px}.step.done{background:var(--primary);opacity:.45}.step.current{background:var(--primary)}.step.pass{background:var(--success)}.step.fail{background:var(--danger)}.step.skip{background:var(--skip)}.steps-label{color:var(--text-sub);font-size:13px;font-weight:700}.app-next{grid-area:next;align-items:center;gap:8px;min-width:0;font-size:14px;display:flex}.next-text{flex-direction:column;min-width:0;display:flex}.next-text small{color:var(--text-sub);font-size:12px}.muted{color:var(--text-sub)}.app-row .badge{grid-area:badge}@media (width<=767px){.app-row{grid-template-columns:1fr auto;grid-template-areas:"main badge""steps steps""next next";gap:12px;padding:16px}.badge{align-self:start}.app-next:empty{display:none}.app-next:has(.muted:empty){display:none}}.cal-layout{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:16px;display:grid}.cal{padding:20px}.cal-toolbar{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.cal-title{font-size:20px;font-weight:800}.cal-nav{align-items:center;gap:4px;display:flex}.cal-today{height:34px;margin-right:4px;padding:0 12px}.cal-grid{border-top:1px solid var(--border);border-left:1px solid var(--border);grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.cal-week{border-right:1px solid var(--border);border-bottom:1px solid var(--border);color:var(--text-sub);text-align:center;padding:8px 0;font-size:13px;font-weight:700}.sun,.sun .cal-date{color:var(--danger)}.sat,.sat .cal-date{color:var(--primary)}.cal-day{border:none;border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-height:104px;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;flex-direction:column;align-items:stretch;gap:4px;padding:6px;display:flex}.cal-day:hover{background:var(--bg)}.cal-day.selected{background:var(--primary-soft)}.cal-day.other-month .cal-date,.cal-day.other-month .cal-events{opacity:.4}.cal-date{border-radius:12px;align-self:flex-start;place-items:center;min-width:24px;height:24px;font-size:13px;font-weight:700;display:inline-grid}.cal-day.today .cal-date{background:var(--primary);color:#fff}.cal-events{flex-direction:column;gap:3px;min-width:0;display:flex}.cal-event{border-radius:5px;flex-direction:column;padding:3px 6px;line-height:1.3;display:flex}.cal-event b,.cal-event small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cal-event b{font-size:12px}.cal-event small{opacity:.85;font-size:11px}.cal-more{color:var(--text-sub);padding-left:4px;font-size:11px}.cal-event.ev-progress{background:var(--primary-soft);color:var(--primary)}.cal-event.ev-pass{background:var(--success-soft);color:var(--success)}.cal-event.ev-fail{background:var(--danger-soft);color:var(--danger)}.cal-event.ev-skip{background:var(--skip-soft);color:var(--skip)}.dot{border-radius:50%;width:6px;height:6px;display:inline-block}.dot.ev-progress,.day-bar.ev-progress{background:var(--primary)}.dot.ev-pass,.day-bar.ev-pass{background:var(--success)}.dot.ev-fail,.day-bar.ev-fail{background:var(--danger)}.dot.ev-skip,.day-bar.ev-skip{background:var(--skip)}.cal-dots{display:none}.cal-legend{color:var(--text-sub);flex-wrap:wrap;gap:14px;margin-top:12px;font-size:12px;display:flex}.cal-legend span{align-items:center;gap:5px;display:inline-flex}.day-panel{position:sticky;top:24px}.day-title{align-items:center;gap:8px;margin-bottom:14px;font-size:17px;font-weight:800;display:flex}.day-empty{color:var(--text-sub);padding:20px 0;font-size:14px}.day-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.day-event{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:10px 12px 10px 10px;display:flex}.day-event:hover{border-color:var(--primary)}.day-bar{border-radius:2px;flex-shrink:0;align-self:stretch;width:4px}.day-event-text{flex-direction:column;flex:1;min-width:0;display:flex}.day-event-text strong{font-size:15px}.day-event-text span{color:var(--text-sub);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.day-tip{color:var(--text-sub);margin-top:14px;font-size:12px}@media (width<=1100px){.cal-layout{grid-template-columns:1fr}.day-panel{position:static}}@media (width<=767px){.cal{padding:14px 10px}.cal-toolbar{padding:0 4px}.cal-title{font-size:18px}.cal-grid,.cal-week,.cal-day{border:none}.cal-day{border-radius:10px;align-items:center;gap:3px;min-height:52px;padding:4px 0}.cal-date{border-radius:14px;align-self:center;min-width:28px;height:28px;font-size:14px}.cal-events{display:none}.cal-dots{justify-content:center;gap:3px;height:6px;display:flex}.cal-day.other-month .cal-dots{opacity:.4}}.insight{border-color:var(--primary-soft);background:linear-gradient(var(--primary-soft), var(--surface) 70%);margin-bottom:16px;padding:18px 20px}.insight h2{color:var(--primary);align-items:center;gap:6px;margin-bottom:8px;font-size:16px;font-weight:800;display:flex}.insight ul{margin:0;padding-left:20px;font-size:14px;line-height:1.8}.dash-card+.dash-card{margin-top:16px}.cat-group+.cat-group{border-top:1px solid var(--border);margin-top:18px;padding-top:14px}.cat-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px;display:flex}.cat-head strong{background:var(--bg);color:var(--text-sub);border-radius:6px;padding:2px 8px;font-size:12px;font-weight:800}.cat-head span{color:var(--text-sub);font-variant-numeric:tabular-nums;font-size:13px;font-weight:700}.legend{color:var(--text-sub);gap:14px;margin-bottom:12px;font-size:12px;display:flex}.legend span{align-items:center;gap:5px;display:inline-flex}.sw{border-radius:3px;width:10px;height:10px}.sw-pass,.seg-pass{background:var(--chart-pass)}.sw-fail,.seg-fail{background:var(--chart-fail)}.sw-skip,.seg-skip{background:var(--chart-skip)}.stage-stats{flex-direction:column;gap:14px;margin:0;padding:0;list-style:none;display:flex}.stage-stat{grid-template-columns:110px minmax(0,1fr) 150px;align-items:center;gap:12px;display:grid}.stage-stat-name{flex-direction:column;min-width:0;font-size:14px;font-weight:700;display:flex}.stage-stat-name small{color:var(--text-sub);font-size:11px;font-weight:600}.stack{gap:2px;height:14px;display:flex}.stack>span{min-width:3px;height:100%}.stack>span:first-child{border-radius:4px 0 0 4px}.stack>span:last-child{border-radius:0 4px 4px 0}.stack>span:only-child{border-radius:4px}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}@media (width<=767px){.stage-stat{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name value""bar bar";gap:6px 12px}.stage-stat-name{flex-direction:row;grid-area:name;align-items:baseline;gap:6px}.stack{grid-area:bar}.stage-stat .rate-value{grid-area:value}}
