:root{--teal-700: #0a5f55;--teal-600: #0e7c6f;--teal-100: #d9efe9;--teal-50: #eef7f4;--ink-900: #0d211e;--ink-700: #23423c;--ink-500: #5c7370;--line: #d9e7e2;--bg: #f2f7f5;--surface: #ffffff;--ok: #157347;--ok-fill: #22a06b;--fail: #b42318;--fail-fill: #e5484d;--warn: #b54708;--warn-fill: #f0940a;--gap: #526c76;--radius: 16px;--shadow-sm: 0 1px 2px rgba(13, 33, 30, .06);--shadow-md: 0 10px 30px rgba(13, 33, 30, .09);--shadow-lg: 0 24px 70px rgba(13, 33, 30, .16)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,system-ui,sans-serif;background:radial-gradient(1200px 600px at 50% -10%,#eaf1fa 0%,transparent 60%),linear-gradient(180deg,#f4f7fb,#eaf0f8);color:var(--ink-900);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased}h1,h2,h3,p{margin:0}h1,h2,h3{letter-spacing:-.015em}button{font:inherit}.muted{color:var(--ink-500)}.small{font-size:13px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}:focus-visible{outline:3px solid rgba(14,124,111,.45);outline-offset:2px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink-700);border-radius:12px;padding:10px 14px;font-weight:650;cursor:pointer;min-height:44px;transition:background .15s,border-color .15s,transform .05s}.btn:hover{background:var(--teal-50);border-color:#bcdcd4}.btn:active{transform:translateY(1px)}.btn.icon{padding:10px}.btn.ghost{background:transparent}.btn.primary{background:var(--teal-600);border-color:var(--teal-600);color:#fff}.btn.primary:hover{background:var(--teal-700);border-color:var(--teal-700)}.btn.primary:disabled{opacity:.65;cursor:default}.boot-screen{min-height:100dvh;display:grid;place-items:center;align-content:center;gap:14px;color:var(--ink-500)}.boot-screen .boot-logo{width:72px;height:72px;object-fit:contain;filter:drop-shadow(0 10px 22px rgba(11,42,74,.18))}.login-page{--l-ink: #0b2a4a;--l-ink-2: #14385f;--l-card: #ffffff;--l-card-2: #f8fbfe;--l-line: #e2e9f2;--l-line-2: #cfdae8;--l-muted: #6b7c92;--l-teal: #0e8b8b;--l-teal-2: #0a6f70;--l-shadow: 0 18px 50px rgba(11, 42, 74, .1);min-height:100dvh;display:grid;place-content:center;padding:40px 24px;background:radial-gradient(1200px 600px at 50% -10%,#eaf1fa 0%,transparent 60%),linear-gradient(180deg,#f4f7fb,#eaf0f8);color:var(--l-ink)}.login-card{width:min(520px,100%);background:var(--l-card);border:1px solid var(--l-line);border-radius:28px;box-shadow:var(--l-shadow);padding:46px 42px}.login-logo{display:flex;flex-direction:column;align-items:center;gap:16px;margin-bottom:30px}.login-logo img{width:78px;height:78px;object-fit:contain;filter:drop-shadow(0 10px 22px rgba(11,42,74,.18))}.login-logo .brand-word b{display:block;text-align:center;font-size:20px;letter-spacing:.16em;color:var(--l-ink);font-weight:800}.login-logo .brand-word span{display:block;text-align:center;font-size:12.5px;letter-spacing:.34em;color:var(--l-muted);font-weight:600;margin-top:4px}.login-title{text-align:center;margin:0 0 6px;font-size:26px;font-weight:800;color:var(--l-ink);letter-spacing:-.02em}.login-sub{text-align:center;font-size:14px;color:var(--l-muted);margin:0 0 32px;font-weight:500}.login-form .field{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.login-form .field label{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--l-ink-2)}.login-form .field input{width:100%;padding:15px 18px;border:1px solid var(--l-line-2);border-radius:14px;background:var(--l-card-2);font-family:inherit;font-size:16px;color:var(--l-ink);min-height:46px}.login-form .field input:focus{outline:2px solid var(--l-teal);border-color:var(--l-teal);background:#fff}.signin{width:100%;margin-top:8px;border:none;background:var(--l-ink);color:#fff;border-radius:14px;padding:17px;font-size:16px;font-weight:800;cursor:pointer;letter-spacing:.02em;min-height:52px;transition:background .15s ease}.signin:hover:not(:disabled){background:var(--l-ink-2)}.signin:disabled{opacity:.6;cursor:default}.login-help{display:flex;justify-content:space-between;align-items:center;margin-top:22px;font-size:13px;color:var(--l-muted);font-weight:600}.login-help a{color:var(--l-teal);text-decoration:none;font-weight:700}.login-flow-note{margin-top:28px;font-size:12.5px;color:var(--l-muted);text-align:center;line-height:1.6;border-top:1px solid var(--l-line);padding-top:22px}.error-box{background:#fef1f0;border:1px solid #f4c7c3;color:#93261c;border-radius:14px;padding:12px 14px;margin:14px 0;font-size:14.5px}.error-box .error-actions{margin-top:10px;display:flex;gap:8px}.error-box .btn{border-color:#ecc8c4;background:#fff;color:#93261c;min-height:38px;padding:7px 12px;border-radius:10px}.empty-state{background:var(--surface);border:1px dashed var(--line);border-radius:var(--radius);padding:44px 20px;text-align:center;color:var(--ink-500);display:grid;gap:10px;justify-items:center;margin-top:16px}.app-page{--d-ink: #0b2a4a;--d-ink-2: #14385f;--d-ink-3: #1e4a78;--d-paper-2: #eef3f9;--d-card: #ffffff;--d-card-2: #f8fbfe;--d-line: #e2e9f2;--d-line-2: #cfdae8;--d-muted: #6b7c92;--d-muted-2: #94a4b8;--d-teal: #0e8b8b;--d-teal-2: #0a6f70;--d-teal-soft: #e6f4f2;--d-green: #1f9d6b;--d-green-soft: #e6f6ee;--d-amber: #c9810a;--d-amber-soft: #fbf1dc;--d-red: #c0453f;--d-red-soft: #fbeae9;--d-blue: #2e6fd6;--d-blue-soft: #e6effc;--d-shadow: 0 18px 50px rgba(11, 42, 74, .1);--d-shadow-sm: 0 6px 18px rgba(11, 42, 74, .07);--d-radius: 22px;--d-radius-sm: 14px;width:min(1080px,100% - 36px);margin:0 auto;padding:30px 0 80px;color:var(--d-ink)}@media(min-width:900px){.app-page{width:min(1080px,100% - 56px);padding-top:34px}}.top{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding-bottom:22px;border-bottom:1px solid var(--d-line)}.brand{display:flex;align-items:center;gap:16px}.brand img{width:58px;height:58px;object-fit:contain;filter:drop-shadow(0 8px 18px rgba(11,42,74,.18))}.brand .word b{display:block;font-size:18px;letter-spacing:.14em;color:var(--d-ink)}.brand .word span{display:block;font-size:12.5px;letter-spacing:.34em;color:var(--d-muted);font-weight:600}.top-meta{display:flex;flex-direction:column;align-items:flex-end;gap:10px}.branch-chip{display:inline-flex;align-items:center;gap:9px;background:var(--d-ink);color:#fff;border-radius:999px;padding:8px 16px;font-size:13px;font-weight:700;letter-spacing:.04em}.branch-chip:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--d-teal);box-shadow:0 0 0 4px #0e8b8b40}.sync{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--d-muted);font-weight:500}.sync:before{content:"";width:9px;height:9px;border-radius:50%;background:var(--d-green);box-shadow:0 0 0 4px #1f9d6b2e}.user-chip{display:flex;align-items:center;gap:10px}.user-meta{display:grid;text-align:right}.user-meta b{font-size:14px;line-height:1.25;color:var(--d-ink)}.user-meta small{color:var(--d-muted);font-size:12px}.avatar{width:36px;height:36px;border-radius:50%;background:var(--d-teal-soft);color:var(--d-teal-2);display:grid;place-items:center;font-weight:750;font-size:13px;flex:none}.app-page .btn{background:var(--d-card);border-color:var(--d-line-2);color:var(--d-ink-2)}.app-page .btn:hover{background:var(--d-teal-soft);border-color:var(--d-teal)}.title-row{margin-top:30px}.title-row h1{font-size:40px;line-height:1.05;margin:0 0 8px;letter-spacing:-.025em;font-weight:800;color:var(--d-ink)}.title-sub{font-size:15px;color:var(--d-muted);font-weight:500;margin:0}.monthbar{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px;display:grid;gap:10px;box-shadow:var(--shadow-sm)}.monthbar-main{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.month-label{display:flex;align-items:center;gap:10px;color:var(--teal-700)}.month-label-month{display:block;font-weight:750;font-size:16.5px;color:var(--ink-900);line-height:1.25}.month-label-sub{display:block;font-size:12.5px;color:var(--ink-500)}.month-nav{display:flex;align-items:center;gap:8px}.month-input{display:inline-flex;align-items:center}.month-nav input[type=month]{border:1px solid var(--line);border-radius:12px;padding:9px 10px;font:inherit;background:#fff;color:var(--ink-900);min-height:44px}.month-progress{display:flex;align-items:center;gap:12px}.meter{flex:1;height:6px;border-radius:999px;background:var(--teal-100);overflow:hidden}.meter span{display:block;height:100%;background:var(--teal-600);border-radius:999px}.month-progress-text{font-size:13px;color:var(--ink-500);white-space:nowrap}.summary{margin-top:26px;background:var(--d-card);border:1px solid var(--d-line);border-radius:var(--d-radius);box-shadow:var(--d-shadow);padding:8px}.summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.tile{display:grid;gap:14px;align-content:start;padding:24px;border-radius:var(--d-radius-sm)}.tile+.tile{border-left:1px solid var(--d-line)}.tile h3{font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--d-muted);margin:0;font-weight:700}.attain{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.attain .stat{text-align:center;padding:16px 8px;border-radius:var(--d-radius-sm);border:1px solid var(--d-line);background:var(--d-card-2)}.attain .stat b{display:block;font-size:30px;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.attain .stat span{display:block;font-size:11.5px;color:var(--d-muted);font-weight:600;margin-top:4px;letter-spacing:.02em}.stat.ach b{color:var(--d-green)}.stat.risk b{color:var(--d-amber)}.stat.not b{color:var(--d-red)}.stat.gap b{color:var(--d-blue)}.attain-note{font-size:12px;color:var(--d-muted);margin:0;text-align:center;line-height:1.5}.progress-flex{display:flex;align-items:center;gap:20px}.ring{--p: 0;width:96px;height:96px;border-radius:50%;flex:0 0 auto;position:relative;background:radial-gradient(closest-side,var(--d-card) 78%,transparent 79% 100%),conic-gradient(var(--d-teal) calc(var(--p) * 1%),var(--d-line) 0)}.ring b{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;font-size:24px;font-weight:800;color:var(--d-ink);letter-spacing:-.02em}.progress-text .big{font-size:15px;color:var(--d-ink);font-weight:700;line-height:1.45}.progress-text .sub{font-size:13px;color:var(--d-muted);margin-top:3px}.section{margin-top:34px}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;padding:0 4px 14px;border-bottom:2px solid var(--d-ink);margin-bottom:6px}.section-head .left{display:flex;align-items:center;gap:14px}.section-head .kicker{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--d-teal);font-weight:700}.section-head h2{font-size:26px;margin:2px 0 0;font-weight:800;letter-spacing:-.02em;color:var(--d-ink)}.section-head .tail{font-size:13px;color:var(--d-muted);font-weight:600;white-space:nowrap}.kpi-grid{display:grid;grid-template-columns:1fr;gap:14px}.kpi-card{position:relative;display:grid;text-align:left;background:var(--d-card);border:1px solid var(--d-line);border-radius:var(--d-radius);box-shadow:var(--d-shadow-sm);cursor:pointer;overflow:hidden;font:inherit;color:inherit;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.kpi-card:hover{transform:translateY(-2px);box-shadow:var(--d-shadow);border-color:var(--d-line-2)}.kpi-card.tracking_gap{border-style:dashed;background:var(--d-card-2)}.kpi-head{display:flex;align-items:center;gap:14px;padding:18px 22px;border-bottom:1px solid var(--d-line)}.kpi-num{flex:0 0 auto;width:34px;height:34px;border-radius:10px;background:var(--d-ink);color:#fff;display:grid;place-items:center;font-size:15px;font-weight:800}.kpi-title{flex:1 1 auto;font-size:15.5px;font-weight:700;color:var(--d-ink);line-height:1.35}.kpi-status.pill{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;padding:7px 13px;border-radius:999px}.kpi-status.pill.achieved{background:var(--d-green-soft);color:var(--d-green)}.kpi-status.pill.warning{background:var(--d-amber-soft);color:var(--d-amber)}.kpi-status.pill.not_achieved{background:var(--d-red-soft);color:var(--d-red)}.kpi-status.pill.tracking_gap{background:var(--d-blue-soft);color:var(--d-blue)}.status-icon.achieved{color:var(--d-green)}.status-icon.warning{color:var(--d-amber)}.status-icon.not_achieved{color:var(--d-red)}.status-icon.tracking_gap{color:var(--d-blue)}.kpi-body{display:grid;gap:14px;padding:22px}.kpi-figures{display:flex;align-items:baseline;justify-content:space-between;gap:10px 18px;flex-wrap:wrap}.kpi-actual{font-size:28px;font-weight:800;color:var(--d-ink);letter-spacing:-.02em;line-height:1.15;font-variant-numeric:tabular-nums}.kpi-target{font-size:13.5px;color:var(--d-muted);font-weight:600}.kpi-progress{display:flex;align-items:center;gap:12px}.kpi-bar{flex:1;height:14px;border-radius:10px;background:var(--d-paper-2);border:1px solid var(--d-line);overflow:hidden;min-width:0}.kpi-bar .fill{display:block;height:100%;border-radius:10px}.kpi-bar .fill.achieved{background:linear-gradient(90deg,var(--d-teal),var(--d-teal-2))}.kpi-bar .fill.warning{background:var(--d-amber)}.kpi-bar .fill.not_achieved{background:var(--d-red)}.kpi-pct{font-size:14px;font-weight:800;color:var(--d-ink);font-variant-numeric:tabular-nums;min-width:46px;text-align:right}.kpi-await{font-size:12.5px;color:var(--d-blue);border:1px dashed var(--d-line-2);border-radius:10px;padding:7px 12px;background:var(--d-blue-soft);justify-self:start;font-weight:650}.kpi-meta{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:13px;color:var(--d-ink-2);border-top:1px solid var(--d-line);padding-top:14px}.kpi-proj{display:inline-flex;align-items:center;gap:6px;font-weight:700}.kpi-var{color:var(--d-muted);font-weight:650;font-variant-numeric:tabular-nums}.kpi-note{font-size:12.5px;color:var(--d-muted);line-height:1.55;border-top:1px solid var(--d-line);padding-top:14px}.kpi-go{position:absolute;right:14px;bottom:14px;color:var(--d-muted-2)}.skeleton.grow{flex:1}.data-notes{margin-top:34px;background:var(--d-card);border:1px solid var(--d-line);border-radius:var(--d-radius);box-shadow:var(--d-shadow-sm);padding:20px 22px}.data-notes h2{display:flex;align-items:center;gap:8px;font-size:15px;color:var(--d-ink);margin-bottom:10px}.data-notes h2 svg{color:var(--d-teal)}.data-notes ul{margin:0;padding-left:18px;color:var(--d-ink-2);font-size:13.5px;display:grid;gap:5px}.gen-line{text-align:center;color:var(--d-muted);font-size:12.5px;margin-top:34px}.app-page .monthbar{margin-top:26px;background:var(--d-card);border-color:var(--d-line);border-radius:var(--d-radius-sm);box-shadow:var(--d-shadow-sm);padding:16px 20px}.app-page .month-label{color:var(--d-teal-2)}.app-page .month-label-month{color:var(--d-ink);font-size:17px;font-weight:800}.app-page .month-label-sub{color:var(--d-muted)}.app-page .month-nav input[type=month]{border-color:var(--d-line-2);background:var(--d-card-2);color:var(--d-ink)}.app-page .meter{background:var(--d-paper-2)}.app-page .meter span{background:var(--d-teal)}.app-page .month-progress-text{color:var(--d-muted)}.app-page .empty-state{margin-top:26px;background:var(--d-card);border-color:var(--d-line-2);color:var(--d-muted);box-shadow:var(--d-shadow-sm)}.app-page .error-box{margin-top:16px}@media(max-width:720px){.summary{margin-top:18px;background:transparent;border:none;box-shadow:none;padding:0}.summary-grid{grid-template-columns:1fr;gap:10px}.tile{background:var(--d-card);border:1px solid var(--d-line);border-radius:16px;box-shadow:var(--d-shadow-sm);padding:14px 16px;gap:12px}.tile+.tile{border-left:none}.summary-grid>.tile:nth-child(2){order:-1}.attain{grid-template-columns:repeat(2,1fr);gap:8px}.attain .stat{padding:12px 8px}.attain .stat b{font-size:24px}.attain .stat span{margin-top:3px}.attain-note{font-size:11.5px;text-align:left}.section-head{align-items:flex-start;flex-direction:column;gap:6px}.section-head .tail{white-space:normal}}@media(max-width:640px){html,body{overflow-x:clip}.app-page{width:min(1080px,100% - 24px);padding:16px 0 56px}.top{flex-direction:column;gap:12px;padding-bottom:14px}.brand{gap:12px}.brand img{width:42px;height:42px}.brand .word b{font-size:15px;letter-spacing:.12em}.brand .word span{font-size:10px;letter-spacing:.3em;margin-top:2px}.top-meta{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;width:100%}.branch-chip{order:1;min-width:0;font-size:11px;letter-spacing:.02em;padding:6px 12px}.user-chip{order:2;gap:8px}.user-meta{display:none}.avatar{width:32px;height:32px;font-size:12px}.user-chip .btn{min-height:38px;min-width:38px;padding:8px}.sync{order:3;flex-basis:100%;gap:7px;font-size:11px}.title-row{margin-top:16px}.title-row h1{font-size:24px;text-wrap:balance}.title-sub{font-size:12.5px}.app-page .monthbar{margin-top:14px;padding:12px 14px}.monthbar-main{display:grid;grid-template-columns:1fr;gap:10px}.month-label{gap:8px}.month-label-month{font-size:15px}.month-nav{display:flex;flex-wrap:wrap;width:100%;gap:8px}.month-nav input[type=month]{flex:1 1 120px;width:auto;min-width:0}.month-nav .btn.icon{flex:0 0 auto}.month-nav .btn:not(.icon){order:9;flex:1 1 100%}.month-progress{flex-wrap:wrap;gap:8px}.month-progress-text{white-space:normal;font-size:11.5px}.kpi-head{flex-wrap:wrap;gap:8px 12px;padding:14px 44px 14px 16px}.kpi-num{width:30px;height:30px;border-radius:9px;font-size:13.5px}.kpi-title{flex:1 1 calc(100% - 42px);min-width:0;font-size:14.5px;line-height:1.3}.kpi-status.pill{font-size:10px;letter-spacing:.07em;padding:5px 11px}.kpi-go{top:15px;right:12px;bottom:auto}.kpi-body{gap:10px;padding:14px 16px 16px}.kpi-figures{flex-direction:column;align-items:flex-start;gap:3px}.kpi-actual{font-size:25px}.kpi-target{font-size:12.5px}.kpi-progress{gap:10px}.kpi-bar{height:12px}.kpi-pct{font-size:13px;min-width:42px}.kpi-await{font-size:11.5px;padding:6px 10px}.kpi-meta{padding-top:10px;gap:4px 12px;font-size:12px}.kpi-note{padding-top:10px;font-size:12px}.progress-flex{gap:14px}.ring{width:80px;height:80px}.ring b{font-size:19px}.kpi-grid{gap:10px}.section{margin-top:24px}.section-head{padding:0 2px 10px;margin-bottom:4px}.section-head h2{font-size:21px}.section-head .kicker{font-size:10px}.data-notes{margin-top:24px;padding:16px}.gen-line{margin-top:24px}}@media(max-width:520px){.title-row h1{font-size:22px}.login-page{padding:24px 16px}.login-card{padding:30px 22px;border-radius:22px}.login-logo{gap:12px;margin-bottom:20px}.login-logo img{width:62px;height:62px}.login-logo .brand-word b{font-size:18px}.login-logo .brand-word span{font-size:11px;letter-spacing:.24em}.login-title{font-size:22px}.login-sub{font-size:13px;margin-bottom:24px}.login-help{flex-wrap:wrap;justify-content:center;gap:6px 12px;margin-top:18px;text-align:center}.login-flow-note{margin-top:20px;padding-top:16px;font-size:12px}}@media(max-width:430px){.app-page{width:min(1080px,100% - 20px)}.title-row h1{font-size:21px}.tile{padding:12px 14px}.attain .stat b{font-size:21px}.attain .stat span{font-size:10.5px}.kpi-title{font-size:14px}.kpi-actual{font-size:23px}.app-page .monthbar{padding:10px 12px}.login-card{padding:26px 18px}}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#091a1773;z-index:60;display:flex;justify-content:flex-end}.drawer{width:min(540px,100%);height:100%;background:#f6faf9;overflow-y:auto;padding:20px 20px 32px;box-shadow:-24px 0 60px #091a1740;animation:drawerIn .22s ease}.drawer-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}.drawer-head h2{font-size:20px;line-height:1.25}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:11.5px;color:var(--teal-600);font-weight:800;margin-bottom:4px}.detail-status{display:flex;align-items:center;flex-wrap:wrap;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 14px;font-size:14px;margin-bottom:14px;box-shadow:var(--shadow-sm)}.detail-status.achieved b{color:var(--ok)}.detail-status.not_achieved b{color:var(--fail)}.detail-status.warning b{color:var(--warn)}.detail-status.tracking_gap b{color:var(--gap)}.detail-stats{display:grid;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden;margin:0 0 14px;box-shadow:var(--shadow-sm)}.detail-stats>div{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:10px 14px;font-size:14px}.detail-stats>div+div{border-top:1px solid #edf5f2}.detail-stats dt{color:var(--ink-500);font-weight:650;flex:none}.detail-stats dd{margin:0;font-weight:700;text-align:right}.detail-explain{font-size:14.5px;color:var(--ink-700);margin-bottom:14px}.calc-box{background:#f4f9f7;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:18px}.calc-box h3{font-size:12.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-500);margin-bottom:4px}.calc-box p{font-size:14px;color:var(--ink-700)}.drawer-section{margin-bottom:18px}.drawer-section h3{font-size:14.5px;margin-bottom:8px;color:var(--ink-700)}.chart-wrap{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 8px 4px;box-shadow:var(--shadow-sm)}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:var(--shadow-sm)}table{border-collapse:collapse;width:100%;font-size:13px}th,td{padding:9px 12px;text-align:left;white-space:nowrap}th{background:var(--teal-50);color:var(--ink-700);font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--line);position:sticky;top:0}tbody tr:nth-child(2n){background:#fafcfb}tbody tr:hover{background:var(--teal-50)}th.num,td.num{text-align:right;font-variant-numeric:tabular-nums}th:first-child,td:first-child{position:sticky;left:0}th:first-child{background:var(--teal-50);box-shadow:inset -1px 0 0 var(--line);z-index:2}td:first-child{font-weight:700;background:#fff;box-shadow:inset -1px 0 0 var(--line)}tbody tr:nth-child(2n) td:first-child{background:#fafcfb}tbody tr:hover td:first-child{background:var(--teal-50)}.warnings{background:#fdf8ef;border:1px solid #ecd9b0;border-radius:12px;padding:12px 14px}.warnings h3{color:#8a5a10}.warnings ul{margin:0;padding-left:18px;color:#7a4b09;font-size:13.5px;display:grid;gap:5px}.drawer-loading{display:grid;gap:4px}.skeleton{border-radius:10px;background:linear-gradient(100deg,#e6edf6 35%,#f4f8fc,#e6edf6 65%);background-size:250% 100%;animation:shimmer 1.3s linear infinite;display:block}.skeleton.line{height:14px}.skeleton.line.big{height:24px;width:70%}.skeleton.block{height:120px}.w40{width:40%}.w60{width:60%}@keyframes shimmer{0%{background-position:120% 0}to{background-position:-120% 0}}@keyframes drawerIn{0%{transform:translate(24px);opacity:.4}to{transform:none;opacity:1}}@keyframes sheetIn{0%{transform:translateY(40px);opacity:.5}to{transform:none;opacity:1}}@media(max-width:640px){.drawer-backdrop{align-items:flex-end}.drawer{width:100%;max-width:100%;height:auto;max-height:92dvh;border-radius:20px 20px 0 0;padding:16px 16px calc(28px + env(safe-area-inset-bottom,0px));animation:sheetIn .22s ease}.drawer-head h2{font-size:18px}.detail-stats>div{padding:9px 12px}}@media(prefers-reduced-motion:reduce){.skeleton{animation:none}.kpi-card,.btn{transition:none}.drawer{animation:none}}
