:root{
  --safe-top:env(safe-area-inset-top,0px); --safe-right:env(safe-area-inset-right,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px); --safe-left:env(safe-area-inset-left,0px);
  --bg:#F7F7F4; --surface:#FFFFFF; --surface-2:#F1F0EC; --ink:#1D1D1A; --muted:#67665E; --faint:#67665E;
  --line:#E6E5DF; --line-strong:#D5D4CC; --ctrl:#8C8B81; --chrome:#2B2B26; --on-chrome:#F7F7F4; --today:#2B2B26;
  --n-t:#185FA5; --n-d:#378ADD; --n-b:#E6F1FB;
  --b-t:#534AB7; --b-d:#7F77DD; --b-b:#EEEDFE;
  --d-t:#854F0B; --d-d:#BA7517; --d-b:#FAEEDA;
  --o-t:#0F6E56; --o-d:#1D9E75; --o-b:#E1F5EE;
  --a-t:#3B6D11; --a-d:#639922; --a-b:#EAF3DE;
  --f-t:#A32D2D; --f-d:#E24B4A; --f-b:#FCEBEB;
  --c-t:#993C1D; --c-d:#D85A30; --c-b:#FAECE7;
  --v-t:#7A2E6E; --v-d:#B84A9A; --v-b:#F8EAF4;
  --r-t:#5F5E5A; --r-d:#888780; --r-b:#F1EFE8;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#151513; --surface:#1E1E1B; --surface-2:#26251F; --ink:#ECEBE5; --muted:#A5A49A; --faint:#A5A49A;
    --line:#2E2D27; --line-strong:#3B3A32; --ctrl:#757469; --chrome:#ECEBE5; --on-chrome:#1D1D1A; --today:#ECEBE5;
    --n-t:#85B7EB; --n-b:#12283E; --d-d:#EF9F27; --b-t:#AFA9EC; --b-b:#211F3C; --d-t:#FAC775; --d-b:#302410;
    --o-t:#5DCAA5; --o-b:#0E2A22; --a-t:#97C459; --a-b:#1D2B10; --f-t:#F09595; --f-b:#361514;
    --c-t:#F0997B; --c-b:#351B13; --v-t:#E19BD2; --v-b:#32172D; --r-t:#B4B2A9; --r-b:#2A2A25;
  }
}
:root[data-theme="dark"]{
  --bg:#151513; --surface:#1E1E1B; --surface-2:#26251F; --ink:#ECEBE5; --muted:#A5A49A; --faint:#A5A49A;
  --line:#2E2D27; --line-strong:#3B3A32; --ctrl:#757469; --chrome:#ECEBE5; --on-chrome:#1D1D1A; --today:#ECEBE5;
  --n-t:#85B7EB; --n-b:#12283E; --d-d:#EF9F27; --b-t:#AFA9EC; --b-b:#211F3C; --d-t:#FAC775; --d-b:#302410;
  --o-t:#5DCAA5; --o-b:#0E2A22; --a-t:#97C459; --a-b:#1D2B10; --f-t:#F09595; --f-b:#361514;
  --c-t:#F0997B; --c-b:#351B13; --v-t:#E19BD2; --v-b:#32172D; --r-t:#B4B2A9; --r-b:#2A2A25;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden;overscroll-behavior:none;touch-action:manipulation}
body{
  background:var(--bg); color:var(--ink);
  font-family:Pretendard,"Noto Sans KR","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;
  font-size:15px; line-height:1.5; -webkit-font-smoothing:antialiased;
}
#app{
  height:100dvh;display:flex;flex-direction:column;
  padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);
}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
button:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--chrome);outline-offset:2px}

.topbar{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:0 14px;height:58px;border-bottom:1px solid var(--line);background:var(--surface);position:relative;z-index:5}
.brand{display:flex;align-items:center;gap:8px;font-weight:800;font-size:16px;white-space:nowrap}
.brand i{width:10px;height:10px;border-radius:3px;background:var(--chrome);display:inline-block}
.tabs{display:flex;flex:0 1 auto;min-width:0;gap:2px;background:var(--surface-2);border-radius:10px;padding:3px;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tab{min-height:28px;font-size:14px;font-weight:700;color:var(--muted);padding:7px 13px;border-radius:8px;white-space:nowrap}
.tab[aria-current="page"]{background:var(--chrome);color:var(--on-chrome)}
.mobiletabs{display:none;flex:0 0 auto;background:var(--surface);border-top:1px solid var(--line);position:relative;z-index:5}
.mobiletab{min-width:0;min-height:44px;padding:5px 3px;color:var(--muted);font-size:12px;font-weight:750;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mobiletab[aria-current="page"]{color:var(--on-chrome);background:var(--chrome)}
.sync{margin-left:auto;flex:0 0 auto;min-height:34px;display:flex;align-items:center;gap:7px;padding:0 9px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);color:var(--muted);font-size:11px;white-space:nowrap}
.sync:hover,.sync:focus-visible{background:var(--surface-2);color:var(--ink)}
.sync:disabled{cursor:wait;opacity:.72}
.syncicon{display:inline-grid;width:18px;height:18px;place-items:center;color:var(--a-t);font-size:18px;font-weight:800;line-height:1}
.synccommand{color:var(--ink);font-size:12px;font-weight:800}
.syncstatus{max-width:150px;overflow:hidden;text-overflow:ellipsis;padding-left:7px;border-left:1px solid var(--line);font-variant-numeric:tabular-nums}
.sync[data-state="loading"] .syncicon,.sync[aria-busy="true"] .syncicon{color:var(--d-t);animation:syncspin 1s linear infinite}
.sync[data-state="paused"] .syncicon{color:var(--r-t)}
.sync[data-state="error"] .syncicon{color:var(--f-t)}
@keyframes pulse{50%{opacity:.25}}
@keyframes syncspin{to{transform:rotate(360deg)}}
.homequick,.sharequick{height:34px;flex:0 0 auto;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);display:flex;align-items:center;justify-content:center;color:var(--ink)}
.homequick{gap:4px;padding:0 9px;font-size:12px;font-weight:800}
.homequick span{font-size:17px;line-height:1}
.homequick:hover,.sharequick:hover{background:var(--surface-2)}
.sharequick{width:34px}
.sharequick span{font-size:20px;line-height:1}
.navbtn{width:34px;height:34px;flex:0 0 auto;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--muted)}
#pgprev,#pgnext{display:none}
.navbtn:hover{border-color:var(--line-strong);color:var(--ink)}
.navbtn:disabled{opacity:.32;cursor:default}

#viewport{flex:1;min-height:0;overflow:hidden;position:relative}
#track{width:100%;height:100%;display:flex;transition:transform .35s cubic-bezier(.3,.8,.3,1);touch-action:pan-y pinch-zoom;will-change:transform}
@media (prefers-reduced-motion:reduce){#track{transition:none}}
.page{flex:0 0 100%;width:100%;min-width:0;height:100%;padding:12px;display:flex;flex-direction:column;gap:10px;min-height:0}

.bootshell{background:var(--bg)}
.bootshell .pagehead h1{font-size:18px;font-weight:800}
.bootcalendar{flex:1;min-height:0;display:flex;flex-direction:column;gap:12px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);overflow:hidden}
.bootline{width:46%;height:16px;border-radius:5px;background:var(--surface-2)}
.bootline.short{width:28%;height:10px}
.bootgrid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;border:1px solid var(--line);background:var(--line)}
.bootgrid i{background:var(--surface)}
.bootstatus{flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:8px;color:var(--muted);font-size:13px;font-weight:700}
.bootstatus b{width:8px;height:8px;border-radius:50%;background:var(--d-d);animation:pulse 1.2s infinite}

.pagehead{display:flex;align-items:center;gap:10px;flex:0 0 auto;min-height:34px}
.pagehead h2{font-size:18px;font-weight:800}
.pagehead .sub{font-size:12px;color:var(--muted)}
.spacer{margin-left:auto}

.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;flex:0 0 auto}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;min-width:0}
.kpi .lb{font-size:12px;color:var(--muted)}
.kpi .v{font-size:clamp(22px,3.2vw,30px);font-weight:800;font-variant-numeric:tabular-nums;line-height:1.2}
.kpi .v small{font-size:14px;font-weight:600;color:var(--muted)}
.cols{flex:1;min-height:0;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;min-height:0;min-width:0}
.panel h3{font-size:13px;font-weight:800;color:var(--muted);letter-spacing:.02em;flex:0 0 auto;padding-bottom:6px}
.event-list-panel{container-type:inline-size;container-name:event-list}
.plist{flex:1;min-height:0;overflow:hidden}
.today-list-heading{padding-bottom:4px!important}
.today-list-open{display:grid;width:100%;min-width:0;min-height:40px;grid-template-columns:minmax(0,1fr) auto 24px;align-items:center;gap:8px;padding:3px 2px;border:0;border-radius:6px;background:transparent;color:inherit;text-align:left;cursor:pointer}
.today-list-open:hover,.today-list-open:focus-visible{background:var(--surface-2);color:var(--ink)}
.today-list-open:focus-visible{outline:2px solid var(--chrome);outline-offset:1px}
.today-list-open-copy{display:flex;min-width:0;flex-direction:column;gap:1px}
.today-list-open-copy b{min-width:0;overflow:hidden;text-overflow:ellipsis;color:var(--muted);font-size:13px;white-space:nowrap}
.today-list-open-copy small{min-width:0;overflow:hidden;text-overflow:ellipsis;color:var(--faint);font-size:10px;font-weight:650;white-space:nowrap}
.today-list-count{padding:2px 7px;border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:10px;font-variant-numeric:tabular-nums;white-space:nowrap}
.today-list-open-icon{display:flex;width:24px;height:24px;align-items:center;justify-content:center;border-radius:50%;background:var(--surface-2);color:var(--muted);font-size:18px;line-height:1}
.today-schedule-dialog{min-width:0}
.today-schedule-dialog-list{flex:1;min-width:0;min-height:0;padding:0 10px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable}
.today-schedule-group{min-width:0}
.today-schedule-group-title{position:sticky;top:0;z-index:2;display:flex;min-width:0;min-height:40px;align-items:center;gap:10px;margin:0 -2px;padding:7px 8px;border-bottom:1px solid var(--line-strong);background:var(--surface);color:var(--ink)}
.today-schedule-group-title > span{display:flex;min-width:0;align-items:baseline;gap:8px}
.today-schedule-group-title b{flex:0 0 auto;color:var(--n-t);font-size:13px;font-variant-numeric:tabular-nums}
.today-schedule-group-title em{min-width:0;overflow:hidden;text-overflow:ellipsis;color:var(--muted);font-size:12px;font-style:normal;white-space:nowrap}
.today-schedule-group-title > strong{flex:0 0 auto;margin-left:auto;padding:1px 6px;border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:10px;font-variant-numeric:tabular-nums}
.today-schedule-group-rows .prow:first-child{border-top:0}
.today-schedule-empty{height:100%;min-height:180px;display:flex;align-items:center;justify-content:center;padding:20px;color:var(--muted);font-size:13px;text-align:center}
.prow{
  display:grid;grid-template-columns:auto 76px minmax(240px,1fr) 282px minmax(110px,170px);
  align-items:center;gap:5px 9px;width:100%;min-width:0;min-height:64px;padding:6px 4px;
  border-top:1px solid var(--line);font-size:13px;text-align:left;overflow:hidden
}
.prow:is(button):hover,.prow:is(button):focus-visible{background:var(--surface-2)}
.prow .row-when{min-width:0;color:var(--muted);font-size:11px;font-style:normal;font-variant-numeric:tabular-nums;white-space:nowrap}
.prow .row-main{display:flex;min-width:0;flex-direction:column;gap:1px;line-height:1.25}
.prow .nm{font-weight:750;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.prow .work-title{display:-webkit-box;min-width:0;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--muted);font-size:11px;overflow-wrap:anywhere}
.site-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));justify-self:end;gap:0;width:282px;min-width:0}
.site-metric{display:flex;min-width:0;flex-direction:column;padding:2px 8px;border-left:1px solid var(--line-strong);line-height:1.15}
.site-metric b{color:var(--muted);font-size:9px;font-weight:700}
.site-metric em{min-width:0;overflow:hidden;text-overflow:ellipsis;color:var(--ink);font-size:11px;font-style:normal;font-weight:750;white-space:nowrap;font-variant-numeric:tabular-nums}
.prow .mt{display:flex;width:100%;max-width:170px;min-width:0;flex-direction:column;align-items:flex-end;gap:2px;color:var(--muted);font-size:12px;white-space:nowrap;font-variant-numeric:tabular-nums}
.prow .status-label{flex:0 0 auto;font-weight:800;white-space:nowrap}
.prow .award-company{display:flex;max-width:100%;min-width:0;align-items:baseline;gap:4px;color:var(--ink);font-style:normal;line-height:1.15}
.prow .award-company small{flex:0 0 auto;color:var(--muted);font-size:9px;font-weight:700}
.prow .award-company strong{min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:11px;font-weight:800;white-space:nowrap}
/* 2026-10-12 주간 줄의 PDF 버튼(eventDocumentShortcut). 줄 전체가 버튼이라 안쪽은 span 이고 누름은 eventRow 가 가른다. */
.prow .row-docs{display:inline-flex;flex:0 0 auto;align-items:center;min-height:22px;padding:1px 8px;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface-2);color:var(--ink);font-size:10px;font-weight:800;line-height:1.4;white-space:nowrap;cursor:pointer}
.prow .row-docs::before{content:"";width:9px;height:11px;margin-right:4px;border:1.5px solid currentColor;border-radius:2px;box-sizing:border-box}
.prow .row-docs:hover{background:var(--surface);border-color:var(--chrome)}
@media (pointer:coarse){.prow .row-docs{min-height:28px;padding:2px 10px;font-size:11px}}
.event-sources{display:inline-flex;align-items:center;gap:3px;min-width:0;overflow:hidden;white-space:nowrap;flex:0 1 auto}
.source-mini{display:inline-flex;align-items:center;min-width:0;max-width:132px;padding:1px 6px;border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:10px;font-weight:800;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.source-kapt{background:var(--n-b);color:var(--n-t)}
.source-gamis{background:var(--a-b);color:var(--a-t)}
.source-gjhma{background:var(--d-b);color:var(--d-t)}
.source-kg2b{background:var(--b-b);color:var(--b-t)}
.source-g2b{background:var(--o-b);color:var(--o-t)}
.source-d2b{background:var(--c-b);color:var(--c-t)}
.source-cmarket{background:var(--o-b);color:var(--o-t)}
.source-nuri{background:var(--o-b);color:var(--o-t)}
.source-more{background:var(--surface-2);color:var(--muted)}
.prow .event-sources{max-width:100%;align-self:flex-start}
.dday{flex:0 0 auto;font-size:12px;font-weight:800;padding:1px 8px;border-radius:999px;font-variant-numeric:tabular-nums}
.pager{flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:10px;padding-top:6px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.pgbtn{width:28px;height:28px;border:1px solid var(--line-strong);border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--muted)}
.pgbtn:hover{color:var(--ink);border-color:var(--line-strong)}

.prow .dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto}
@container event-list (min-width:661px) and (max-width:900px){
  .prow{grid-template-columns:auto 70px minmax(160px,1fr) 225px minmax(96px,128px);gap-inline:7px}
  .site-metrics{width:225px}
  .site-metric{padding-inline:5px}
  .prow .mt{max-width:128px}
}
@container event-list (max-width:660px){
  .prow{
    grid-template-columns:auto minmax(0,1fr) auto;
    grid-template-areas:"lead when status" "main main main" "metrics metrics metrics";
    min-height:92px;gap:2px 8px;padding:5px 4px
  }
  .prow > .dot,.prow > .dday{grid-area:lead;justify-self:start}
  .prow > .row-when{grid-area:when;justify-self:start}
  .prow > .row-main{grid-area:main}
  .prow > .site-metrics{grid-area:metrics;justify-self:stretch;width:100%}
  .prow > .mt{grid-area:status;justify-self:end;margin-left:0}
  .prow .work-title{-webkit-line-clamp:1}
  .site-metric{padding:2px 5px;border-left:2px solid var(--line-strong)}
}
.weekwrap{flex:1;min-height:0;display:grid;gap:10px;grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:minmax(0,1fr)}
.week-pagehead{display:grid;grid-template-columns:minmax(180px,.75fr) minmax(260px,1fr) auto;align-items:center;gap:8px 12px}
.week-heading{min-width:0;display:flex;align-items:baseline;gap:8px;overflow:hidden}
.week-heading h2,.week-heading .sub{min-width:0;white-space:nowrap}
.week-heading .sub{overflow:hidden;text-overflow:ellipsis}
.week-navigation{min-width:0;display:grid;grid-template-columns:34px minmax(150px,1fr) 34px;align-items:center;gap:6px}
.week-navigation .navbtn{width:34px;height:34px}
.week-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;font-size:14px;font-weight:800;font-variant-numeric:tabular-nums}
.week-actions{display:flex;align-items:center;gap:5px;flex:0 0 auto}
.week-actions .btn{min-height:34px;padding:5px 11px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);font-size:12px;white-space:nowrap}
.week-actions .btn:hover{background:var(--surface-2)}
.week-actions .btn[aria-busy="true"]{opacity:.55;cursor:wait}
.week-filterbar{flex:0 0 auto;display:flex;align-items:center;gap:6px;min-width:0;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface);overflow-x:auto;scrollbar-width:none}
.week-filterbar::-webkit-scrollbar{display:none}
.week-filter{flex:0 0 auto;min-height:30px;padding:4px 10px;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:11px;font-weight:800;white-space:nowrap}
.week-filter[aria-pressed="true"]{border-color:var(--chrome);background:var(--chrome);color:var(--on-chrome)}
.week-filter:focus-visible{outline:2px solid var(--chrome);outline-offset:2px}
.weekwrap > .panel{padding:7px 8px}
.weekwrap > .panel h3{padding-bottom:3px;overflow:hidden}
.week-day-open{display:grid;width:100%;min-width:0;min-height:30px;grid-template-columns:minmax(0,1fr) auto 18px;align-items:center;gap:5px;padding:2px 0;border:0;background:transparent;color:inherit;text-align:left;font:inherit;font-weight:800;cursor:pointer}
.week-day-open > span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.week-day-open:hover,.week-day-open:focus-visible{color:var(--ink)!important}
.week-day-open:focus-visible{outline:2px solid var(--chrome);outline-offset:1px;border-radius:5px}
.week-day-open-icon{display:flex;width:18px;height:18px;align-items:center;justify-content:center;border-radius:50%;background:var(--surface-2);color:var(--muted);font-size:15px;line-height:1}
.week-day-count{flex:0 0 auto;padding:1px 6px;border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:10px;font-weight:800;font-variant-numeric:tabular-nums}
.week-empty{height:100%;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:12px}
.week-day-dialog{min-width:0}
.week-day-dialog-list{flex:1;min-width:0;min-height:0;padding:0 10px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable}
.week-day-dialog-list .prow:first-child{border-top:0}
.week-day-dialog-list .week-empty{min-height:180px}
@container event-list (min-width:151px) and (max-width:660px){
  .prow[data-weekly-stage-count]:not([data-weekly-stage-count="1"]){
    grid-template-columns:auto minmax(0,1fr);
    grid-template-areas:"lead when" "status status" "main main" "metrics metrics";
    min-height:104px
  }
  .prow[data-weekly-stage-count]:not([data-weekly-stage-count="1"]) > .row-when{
    overflow:hidden;text-overflow:ellipsis
  }
  .prow[data-weekly-stage-count]:not([data-weekly-stage-count="1"]) > .mt{
    justify-self:end;max-width:100%;align-items:flex-end;margin-left:0
  }
}
@container event-list (max-width:150px){
  .prow{
    grid-template-columns:minmax(0,1fr);
    grid-template-areas:"when" "status" "main" "metrics";
    min-height:126px;gap:1px;padding:5px 2px
  }
  .prow > .dot,.prow > .dday{display:none}
  .prow > .row-when{grid-area:when;justify-self:start}
  .prow > .mt{grid-area:status;justify-self:start;max-width:100%;align-items:flex-start;overflow:visible;font-size:10px;white-space:nowrap}
  .prow .award-company{display:block}
  .prow .award-company small{display:block}
  .prow > .row-main{grid-area:main}
  .prow > .site-metrics{grid-area:metrics;gap:1px}
  .prow .nm{font-size:12px}
  .prow .work-title{font-size:10px;-webkit-line-clamp:1}
  .site-metric{padding:2px 3px;border-left:2px solid var(--line-strong)}
  .site-metric b{font-size:8px}
  .site-metric em{font-size:10px}
}
@media (min-width:701px) and (max-width:1199px){
  .weekwrap{grid-template-columns:repeat(5,minmax(0,1fr))}
}
.calwrap{flex:1;min-height:0;display:flex;gap:10px}
.calmain{flex:1.7;min-width:0;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.calside{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.calendar-filter-stack{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(300px,.9fr);
  grid-template-areas:"company method" "status status";
  flex:0 0 auto;
  min-width:0;
  border-bottom:1px solid var(--line)
}
.calendar-filter-stack .filters{display:grid;gap:4px;padding:5px 7px;overflow:visible;border-bottom:0}
.calendar-filter-stack .company-filters{
  grid-area:company;
  grid-template-columns:repeat(3,minmax(0,1fr));
  min-width:0;
  border-right:1px solid var(--line)
}
.calendar-filter-stack .status-filters{
  grid-area:status;
  grid-template-columns:repeat(9,minmax(0,1fr));
  min-width:0;
  border-top:1px solid var(--line)
}
.calendar-filter-stack .method-filters{
  grid-area:method;
  grid-template-columns:repeat(4,minmax(0,1fr));
  min-width:0;
  border-left:0
}
@media (orientation:portrait){
  .calwrap{flex-direction:column}
  .calmain{flex:1.5}
  .calside{flex:1}
}
.filters{flex:0 0 auto;display:flex;gap:6px;padding:8px 10px;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.filters::-webkit-scrollbar{display:none}
.company-scope-filters,.today-source-filters{flex:0 0 auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding:6px 8px;border-bottom:1px solid var(--line);background:var(--surface);overflow:visible}
.company-scope-filters .fchip,.today-source-filters .fchip{display:flex;align-items:center;justify-content:center;min-width:0;min-height:32px;padding:5px 8px;text-align:center;white-space:normal;word-break:keep-all;line-height:1.15}
.today-filter-stack{display:grid;flex:0 0 auto;min-width:0;border:1px solid var(--line);border-radius:8px;background:var(--surface);overflow:hidden}
.today-filter-stack>.company-scope-filters,.today-filter-stack>.today-source-filters{border-bottom:0}
.today-filter-stack>.company-scope-filters{border-bottom:1px solid var(--line)}
.today-source-filters{background:var(--surface-2)}
.list-filter-stack{display:grid;gap:0;flex:0 0 auto;border-bottom:1px solid var(--line)}
.list-filter-stack>.filters,.list-filter-stack>.company-scope-filters{border-bottom:0}
.list-filter-stack>.company-scope-filters{border-bottom:1px solid var(--line)}
.result-source-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface);overflow:visible}
.result-source-filters .fchip{display:flex;min-width:0;min-height:34px;align-items:center;justify-content:center;padding:5px 7px;text-align:center;white-space:normal;word-break:keep-all;line-height:1.15}
.fchip{flex:0 0 auto;font-size:12px;font-weight:600;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:3px 10px;white-space:nowrap;font-variant-numeric:tabular-nums}
.fchip[aria-pressed="true"]{background:var(--chrome);color:var(--on-chrome);border-color:var(--chrome)}
.fchip[aria-pressed="true"] i{box-shadow:0 0 0 1.5px var(--on-chrome)}
.fchip i{width:7px;height:7px;border-radius:50%;display:inline-block;margin-right:5px}
.methodchip,.sourcechip{font-weight:800}
.filter-separator{flex:0 0 1px;align-self:stretch;background:var(--line-strong);margin:0 2px}
.calendar-filter-stack .fchip{
  min-width:0;
  min-height:27px;
  padding:3px 4px;
  justify-content:center;
  line-height:1.1;
  white-space:normal;
  word-break:keep-all;
  overflow:visible;
  text-overflow:clip;
  text-align:center
}
@media (min-width:701px) and (max-width:1199px){
  .calendar-filter-stack .status-filters{
    grid-template-columns:repeat(5,minmax(0,1fr));
  }
  .calendar-filter-stack .fchip{
    font-size:10px;
  }
}
.dows{flex:0 0 auto;display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.dow{font-size:12px;color:var(--faint);text-align:center;padding:4px 0;font-weight:600}
.dow.su{color:var(--f-t)}.dow.sa{color:var(--n-t)}
.grid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:1fr;border-top:1px solid var(--line)}
.cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:3px 5px;min-width:0;min-height:0;overflow:hidden;text-align:left;position:relative}
.cell:nth-child(7n){border-right:none}
.cell.blank{background:var(--surface-2)}
.cell.sel{box-shadow:inset 0 0 0 2px var(--chrome)}
.cell .dn{font-size:12px;font-weight:600;color:var(--muted);line-height:19px}
.cell.today .dn b{display:inline-flex;width:19px;height:19px;border-radius:50%;background:var(--today);color:var(--on-chrome);align-items:center;justify-content:center;font-size:12px}
.evline{display:flex;align-items:center;gap:4px;font-size:12px;line-height:1.55;white-space:nowrap;overflow:hidden;min-width:0}
.evline i{width:6px;height:6px;border-radius:50%;flex:0 0 auto}
.evline em{font-style:normal;font-weight:600;font-variant-numeric:tabular-nums;flex:0 0 auto}
.evline b{font-weight:400;overflow:hidden;text-overflow:ellipsis;min-width:0}
.evmore{font-size:12px;color:var(--faint);margin-left:10px}
.dots{display:flex;gap:2px;flex-wrap:wrap;justify-content:center;padding-top:1px}
.dots i{width:5px;height:5px;border-radius:50%}
.cnt{font-size:12px;color:var(--muted);text-align:center;font-variant-numeric:tabular-nums}
.cell[data-c]{cursor:pointer}
.cell[data-c]:hover{background:var(--surface-2)}

.sidehead{flex:0 0 auto;display:flex;align-items:baseline;gap:8px;padding:10px 12px 6px}
.sidehead .dt{font-size:15px;font-weight:800}
.sidehead .ct{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.cards{flex:1;min-height:0;overflow:hidden;padding:0 10px;display:flex;flex-direction:column;gap:7px}
.ecard{flex:0 0 auto;display:flex;gap:9px;width:100%;border:1px solid var(--line);border-radius:10px;padding:8px 10px;min-width:0;background:var(--surface);text-align:left}
.ecard:is(button):hover,.ecard:is(button):focus-visible{border-color:var(--ctrl);background:var(--surface-2)}
.ecard .bar{width:3px;border-radius:2px;flex:0 0 auto}
.ecard .stline{display:flex;align-items:center;gap:6px;min-width:0}
.ecard .st{font-size:12px;font-weight:800;flex:0 0 auto}
.ecard .st em{font-style:normal;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}
.method-mini{margin-left:auto;max-width:34%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--line);border-radius:999px;padding:1px 6px;font-size:10px;font-weight:800;color:var(--muted);background:var(--surface-2)}
.method-mini.method-super,.method-mini.method-pour{color:var(--n-t);background:var(--n-b);border-color:var(--n-d)}
.method-mini.method-other{color:var(--d-t);background:var(--d-b);border-color:var(--d-d)}
.ecard .event-sources{margin-left:0;max-width:36%}
.ecard .nm{font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ecard .tg{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ecard .methodbadge{float:right;margin-left:6px}
.ecard-method{flex:0 0 clamp(122px,30%,230px);min-width:0;align-self:stretch;display:flex;flex-direction:column;justify-content:center;gap:2px;padding-left:10px;border-left:1px solid var(--line);overflow:hidden}
.ecard-method small{font-size:9px;font-weight:750;color:var(--muted)}
.ecard-method strong{font-size:11px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.ecard-method.patent strong{color:var(--d-t)}
.ecard-method em{font-size:9px;font-weight:800;font-style:normal;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ecard-method.patent em{color:var(--d-t);opacity:.86}
.ecard-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:5px;color:var(--muted);font-size:10px}
.ecard-facts > span{min-width:0;padding-left:6px;border-left:1px solid var(--line);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ecard-facts b{color:var(--ink);font-size:11px}
.ecard-facts .ecard-winner{grid-column:1 / -1;display:flex;align-items:baseline;gap:5px;border-left-color:var(--a-d);color:var(--a-t)}
.ecard-winner small{font-size:9px;font-weight:700}
.ecard-winner b{overflow:hidden;text-overflow:ellipsis;color:var(--a-t)}
.result-award-copy{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}
.result-award-meta{display:flex;min-width:0;flex-wrap:wrap;gap:3px 9px;color:var(--muted);font-size:11px}
.result-award-meta span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.result-award-meta .award-company{color:var(--n-t);text-decoration:underline;text-decoration-color:transparent;text-underline-offset:2px}
.result-award-card:hover .award-company,.result-award-card:focus-visible .award-company{text-decoration-color:currentColor}
.calendar-day-view{height:100%;min-height:0;display:flex;flex-direction:column;gap:8px}
.calendar-day-summary{flex:0 0 auto;display:flex;align-items:baseline;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.calendar-day-summary strong{font-size:18px}
.calendar-day-summary span{color:var(--muted);font-size:12px}
.calendar-day-cards{flex:1;min-height:0;display:flex;flex-direction:column;gap:7px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.empty{flex:1;display:flex;align-items:center;justify-content:center;color:var(--faint);font-size:13px}

table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}
th{font-size:12px;color:var(--muted);font-weight:600;text-align:left;padding:6px 8px;border-bottom:1px solid var(--line-strong)}
td{padding:7px 8px;border-bottom:1px solid var(--line);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}
.tag{font-size:12px;font-weight:800;padding:1px 8px;border-radius:999px;white-space:nowrap}

.toolgrid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:1fr;gap:10px}
@media (orientation:portrait){.toolgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.tool{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:6px;min-width:0;min-height:0;overflow:hidden;text-align:left;cursor:pointer}
.tool:hover{border-color:var(--line-strong)}
.tool .tt{font-size:15px;font-weight:800}
.tool .td{font-size:12px;color:var(--muted)}
.tool .go{margin-top:auto;font-size:12px;font-weight:600;color:var(--ink)}
.report-tools-grid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;gap:10px}
.report-tools-grid .detailaction{min-height:0;align-items:flex-start;justify-content:center;flex-direction:column;gap:3px;padding:14px 16px}
.report-tools-grid .detailaction span{font-size:15px;font-weight:800}
.report-tools-grid .detailaction > strong{margin:0;color:var(--muted);font-size:12px;font-weight:600;line-height:1.35}
.appearance-status{flex:0 0 auto;color:var(--muted);font-size:12px;text-align:center}
.searchrow{display:flex;gap:8px;flex:0 0 auto}
.searchrow input{flex:1;min-width:0;font:inherit;font-size:13px;color:var(--ink);background:var(--surface);border:1px solid var(--ctrl);border-radius:8px;padding:8px 12px}
.searchrow input::placeholder{color:var(--faint)}
.btn{font-size:13px;font-weight:600;background:var(--chrome);color:var(--on-chrome);border-radius:8px;padding:8px 16px;white-space:nowrap}
.btn.secondary{background:var(--surface);color:var(--ink);border:1px solid var(--line-strong)}

.company-filter-row{display:flex;align-items:center;gap:6px;flex:0 0 auto;min-width:0;overflow-x:auto;scrollbar-width:none}
.company-filter-row::-webkit-scrollbar{display:none}
.company-segment{display:flex;flex:0 0 auto;gap:2px;padding:3px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2)}
.company-segment button,.company-context-button{min-height:30px;padding:4px 9px;border-radius:6px;color:var(--muted);font-size:11px;font-weight:750;white-space:nowrap}
.company-segment button[aria-pressed="true"]{background:var(--chrome);color:var(--on-chrome)}
.company-context-button{flex:0 0 auto;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink)}
.company-index-summary{display:flex;align-items:center;gap:6px;flex:0 0 auto;min-width:0;overflow-x:auto;scrollbar-width:none}
.company-index-summary::-webkit-scrollbar{display:none}
.company-index-summary span,.company-index-summary strong{flex:0 0 auto;padding:2px 8px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--muted);font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}
.company-index-summary strong{margin-left:auto;border-color:var(--chrome);background:var(--chrome);color:var(--on-chrome)}
.company-index-panel{flex:1;min-height:0}
.company-index-columns,.company-index-row{display:grid;grid-template-columns:92px minmax(160px,.8fr) minmax(180px,1fr) minmax(220px,1.2fr) 18px;align-items:center;gap:8px}
.company-index-columns{flex:0 0 auto;padding:0 10px 6px;color:var(--muted);font-size:11px;font-weight:700}
.company-index-row{flex:0 0 auto;width:100%;min-height:62px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);text-align:left}
.company-index-row:hover,.company-index-row:focus-visible{border-color:var(--ctrl);background:var(--surface-2)}
.company-source-badges{display:flex;gap:3px;min-width:0;flex-wrap:wrap}
.company-source-badges i{padding:2px 5px;border-radius:4px;font-size:9px;font-style:normal;font-weight:800;white-space:nowrap}
.company-source-badges .cak{background:var(--n-b);color:var(--n-t)}
.company-source-badges .kosca{background:var(--o-b);color:var(--o-t)}
.company-index-main{display:flex;min-width:0;flex-direction:column}
.company-index-main strong,.company-index-main small,.company-index-trade,.company-index-address{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.company-index-main strong{font-size:14px}
.company-index-main small,.company-index-trade,.company-index-address{color:var(--muted);font-size:11px}
.company-index-row > b{font-size:20px;color:var(--muted)}
.company-profile-hero{min-height:94px}
.company-profile-facts{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(54px,1fr)}
.company-association-grid{flex:0 0 auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.company-source-card{position:relative;min-width:0;min-height:86px;display:flex;flex-direction:column;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);text-decoration:none}
.company-source-card:hover{background:var(--surface-2)}
.company-source-card span,.company-source-card small{color:var(--muted);font-size:11px}
.company-source-card strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}
.company-source-card i{position:absolute;right:10px;top:10px;width:8px;height:8px;border-radius:50%;background:var(--r-d)}
.company-source-card i[data-confirmed="true"]{background:var(--a-d)}
.company-association-facts{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(56px,1fr)}
.company-history-panel{flex:1;min-height:0}
.company-history-columns,.company-history-row{display:grid;grid-template-columns:88px minmax(150px,.8fr) minmax(190px,1.3fr) minmax(150px,.8fr);align-items:center;gap:8px}
.company-history-columns{flex:0 0 auto;padding:0 9px 6px;color:var(--muted);font-size:11px;font-weight:700}
.company-history-columns span:last-child{text-align:right}
.company-history-row{flex:0 0 auto;width:100%;min-height:66px;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface);text-align:left}
.company-history-row:is(button):hover,.company-history-row:is(button):focus-visible{border-color:var(--ctrl);background:var(--surface-2)}
.company-history-row time{color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap}
.company-history-agency,.company-history-result{min-width:0;display:flex;flex-direction:column}
.company-history-agency strong,.company-history-agency small,.company-history-work,.company-history-result b,.company-history-result small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.company-history-agency small,.company-history-result small{color:var(--muted);font-size:10px}
.company-history-work{font-size:12px}
.company-history-result{text-align:right}
.company-history-result b{font-size:13px}
/* 2026-10-05: 회사 '입찰 참여'의 조달청 개찰 사후 분석 행. 사후 분석 문구는 자르지 않고 줄바꿈한다(목록은 실제 높이로 묶는다). */
.company-g2b-row .company-history-result b,.company-g2b-row .company-history-result small{white-space:normal;overflow-wrap:anywhere;text-overflow:clip}
.company-g2b-postmortem{grid-column:1/-1;min-width:0;margin-top:3px;padding-top:5px;border-top:1px dashed var(--line-strong)}
/* 2026-10-05(오후): 낙찰하한가 · 1위 투찰 · 우리 투찰 세 줄을 같은 칸에 맞추고(subgrid, 미지원이면 고정 폭),
   그 아래 한 문장을 둔다. 세 금액 막대는 같은 날 저녁 검토로 뺐다(표식이 겹치고 실제 행에서는 띠가 안 보였다). */
.g2b-compare{display:grid;grid-template-columns:max-content max-content minmax(0,1fr);gap:3px 8px;align-items:baseline;min-width:0;color:var(--ink);font-size:12px;line-height:1.4}
.g2b-fact{min-width:0;overflow-wrap:anywhere}
.g2b-line{grid-column:1/-1;display:grid;grid-template-columns:5.8em 10.5em minmax(0,1fr);grid-template-columns:subgrid;align-items:baseline;column-gap:8px}
.g2b-line b{font-weight:700;white-space:nowrap}
.g2b-line strong{font-weight:800;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.g2b-line small{min-width:0;color:var(--muted);font-size:11px;overflow-wrap:anywhere}
.g2b-sentence{grid-column:1/-1}
.g2b-sentence.is-target{font-weight:800}
.g2b-sentence.is-listed{color:var(--muted);font-size:11px}
.g2b-mark{display:inline-block;width:8px;height:8px;margin-right:5px;border-radius:50%;vertical-align:1px}
.g2b-mark.is-floor{width:3px;height:11px;border-radius:1px;background:var(--f-d);vertical-align:-1px}
.g2b-mark.is-first{background:var(--a-d)}
.g2b-mark.is-ours{border-radius:1px;background:var(--n-d);transform:rotate(45deg)}
.g2b-compare-card{flex:0 0 auto}
.g2b-compare-card .g2b-compare{font-size:13px}
.g2b-compare-card .g2b-line small{font-size:12px}
.awardpending small{display:block;color:var(--muted);font-size:11px;line-height:1.35;overflow-wrap:anywhere}
/* 휴대폰 폭: 셋째 칸이 좁아 괄호 설명이 세 줄로 쪼개진다. 설명은 금액 아래 한 줄로 내린다. */
@media (max-width:560px){.g2b-line{row-gap:0}.g2b-line small{grid-column:2/-1}}
/* 2026-10-10: 추정 하한가가 큰 금액의 범위면(약 1,283,225,341 ~ 1,283,225,390원) 375px 에서 금액 칸이 9px 넘쳤다
   (verify-bid-guidance-built AWARD_UI_LAYOUT, 신안 압해 낙석 정비공사). 휴대폰 폭에서는 금액 칸이 줄어들며 '~' 뒤에서 줄을 바꾼다. */
@media (max-width:560px){.g2b-compare{grid-template-columns:max-content minmax(0,max-content) minmax(0,1fr)}.g2b-line strong{white-space:normal;overflow-wrap:anywhere}}
.company-g2b-row.is-awarded{border-color:var(--a-d);background:var(--a-b)}
.company-g2b-row.is-awarded:is(button):hover,.company-g2b-row.is-awarded:is(button):focus-visible{border-color:var(--a-t);background:var(--a-b)}
.company-g2b-row.is-awarded .company-history-result b{color:var(--a-t)}
.unified-search-layout{flex:1;min-height:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.unified-search-layout.single{grid-template-columns:1fr}
.unified-search-layout > .panel{min-height:0}

.directorypanel,.rankingpanel{flex:1;min-height:0}
.directory-regions{flex:0 0 auto;display:grid;grid-template-columns:auto auto auto auto minmax(120px,1fr);align-items:center;gap:6px;min-width:0}
.directory-region-button{min-height:34px;padding:5px 10px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);color:var(--muted);font-size:12px;font-weight:700;white-space:nowrap}
.directory-region-button b{margin-left:4px;color:inherit;font-variant-numeric:tabular-nums}
.directory-region-button[aria-pressed="true"]{border-color:var(--chrome);background:var(--chrome);color:var(--on-chrome)}
.directory-region-path{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right;color:var(--muted);font-size:12px;font-weight:700}
button.directory-region-path{padding:0;border:0;background:transparent;font:inherit;font-size:12px;cursor:pointer}
button.directory-region-path:hover,button.directory-region-path:focus-visible{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.directorycard-copy{min-width:0;flex:1}
.directorymeta{display:flex;align-items:center;gap:12px;margin-top:3px;color:var(--muted);font-size:11px;min-width:0}
.directorymeta span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.directorymeta span:last-child{margin-left:auto;text-align:right}
.directory-picker{width:min(100%,980px);margin:0 auto;flex:1;min-height:0;display:flex;flex-direction:column;gap:10px}
.directory-picker-summary{flex:0 0 auto;min-height:62px;display:flex;align-items:center;gap:16px;padding:10px 12px;border-bottom:1px solid var(--line)}
.directory-picker-summary > div:first-child{min-width:0;display:flex;flex-direction:column}
.directory-picker-summary strong{font-size:15px}
.directory-picker-summary span{color:var(--muted);font-size:11px}
.directory-picker-summary dl{margin-left:auto;display:flex;align-items:center;gap:6px}
.directory-picker-summary dl div{min-width:78px;padding:5px 9px;border-left:1px solid var(--line)}
.directory-picker-summary dt{color:var(--muted);font-size:10px;font-weight:700}
.directory-picker-summary dd{font-size:16px;font-weight:800;font-variant-numeric:tabular-nums}
.directory-district-grid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-auto-rows:54px;align-content:start;gap:7px;padding:1px 2px 2px;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.directory-district-choice{min-width:0;height:54px;display:grid;grid-template-columns:minmax(0,1fr) auto 16px;align-items:center;gap:8px;padding:7px 9px 7px 11px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);text-align:left}
.directory-district-choice:hover,.directory-district-choice:focus-visible{border-color:var(--ctrl);background:var(--surface-2)}
.directory-district-choice[aria-pressed="true"]{border-color:var(--chrome);background:var(--chrome);color:var(--on-chrome)}
.directory-district-choice:disabled{opacity:.42;cursor:default}
.directory-choice-label{min-width:0;display:flex;flex-direction:column;line-height:1.25}
.directory-choice-label strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.directory-choice-label small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:10px;font-weight:600}
.directory-choice-count{display:flex;align-items:baseline;gap:2px;white-space:nowrap;color:var(--muted)}
.directory-choice-count b{font-size:13px;font-variant-numeric:tabular-nums}
.directory-choice-count small{font-size:9px;font-weight:700}
.directory-choice-arrow{color:var(--muted);font-size:20px;font-weight:500;line-height:1;text-align:right}
.directory-district-choice[aria-pressed="true"] :is(.directory-choice-label small,.directory-choice-count,.directory-choice-arrow){color:inherit}
.directory-district-all{grid-column:1 / -1;min-height:58px;height:58px;border-color:var(--n-d);background:var(--n-b);color:var(--n-t)}
.directory-district-all:not([aria-pressed="true"]):hover,.directory-district-all:not([aria-pressed="true"]):focus-visible{border-color:var(--n-t);background:var(--n-b)}
.directory-company-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.directory-company-choice{min-height:58px;height:58px}
.ranking-controls select{flex:0 0 118px;min-width:0;font:inherit;font-size:13px;color:var(--ink);background:var(--surface);border:1px solid var(--ctrl);border-radius:8px;padding:8px 10px}
.ranking-source-note{flex:0 0 auto;padding:0 10px 6px;color:var(--muted);font-size:10px;font-weight:700}
.ranking-columns,.rankingrow{display:grid;grid-template-columns:52px minmax(0,1fr) 150px 64px 110px;align-items:center;gap:8px}
.ranking-columns{flex:0 0 auto;padding:0 10px 6px;color:var(--muted);font-size:11px;font-weight:700}
.ranking-columns span:nth-child(n+3){text-align:right}
.rankingrow{flex:0 0 auto;width:100%;min-height:48px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);text-align:left}
.rankingrow:hover,.rankingrow:focus-visible{border-color:var(--ctrl);background:var(--surface-2)}
.rankingrow > b{font-variant-numeric:tabular-nums;text-align:center}
.rankingcompany{min-width:0;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rankingrow > strong,.rankingrow > em,.rankingrow > small{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.rankingrow > em{font-style:normal;color:var(--muted)}
.rankingrow > small{color:var(--muted)}
.ranking-value-label{display:none;font-style:normal;font-weight:700;color:var(--muted)}
.winner-company-summary{flex:0 0 auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.winner-company-summary > div{min-width:0;padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.winner-company-summary span{display:block;color:var(--muted);font-size:11px;font-weight:700}
.winner-company-summary strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-variant-numeric:tabular-nums}
.winner-company-breakdown{flex:0 0 auto}
.winner-company-profile .detailtabs{grid-template-columns:repeat(3,minmax(0,1fr))}
.winner-company-overview{overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.winner-company-hero{min-height:88px}
.winner-company-facts{flex:0 0 auto;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(62px,auto);overflow:visible}
.winner-company-facts .wide{grid-column:span 2}
.winner-company-sources{flex:0 0 auto;padding-bottom:2px}
.winner-company-history{flex:1;min-height:0}
.winner-history-columns,.winner-award-row{display:grid;grid-template-columns:92px minmax(140px,.8fr) minmax(180px,1.4fr) 118px;align-items:center;gap:3px 10px}
.winner-history-columns{flex:0 0 auto;padding:0 9px 6px;color:var(--muted);font-size:11px;font-weight:700}
.winner-history-columns span:last-child{text-align:right}
.winner-award-row{flex:0 0 auto;width:100%;min-height:66px;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface);text-align:left}
.winner-award-row:is(button):hover,.winner-award-row:is(button):focus-visible{border-color:var(--ctrl);background:var(--surface-2)}
.winner-award-row time{color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap}
.winner-award-agency{min-width:0;display:flex;flex-direction:column}
.winner-award-agency strong,.winner-award-agency small,.winner-award-work{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.winner-award-agency small{color:var(--muted);font-size:10px}
.winner-award-work{font-size:12px}
.winner-award-row > .money{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.winner-award-meta{grid-column:2 / 4;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:10px}

.bars .prow{gap:10px}
.bar-track{flex:1;height:8px;border-radius:4px;background:var(--surface-2);min-width:40px;overflow:hidden}
.bar-fill{height:100%;border-radius:4px;background:var(--chrome)}

.hint{flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:8px;font-size:12px;color:var(--faint);padding-top:2px}
.statebox{flex:1;display:flex;align-items:center;justify-content:center;min-height:0;border:1px dashed var(--line-strong);border-radius:12px;color:var(--muted);text-align:center;padding:20px}
.livebadge{font-size:11px;font-weight:800;color:var(--a-t);background:var(--a-b);border-radius:999px;padding:2px 8px}
.sourcebadge{font-size:11px;font-weight:800;color:var(--n-t);background:var(--n-b);border-radius:999px;padding:2px 8px;white-space:nowrap}
.money{color:var(--a-t);font-weight:800}

.overlay{
  position:fixed;inset:0;z-index:40;background:var(--bg);display:flex;flex-direction:column;
  padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);
}
.overlay[hidden]{display:none}
.overlaybar{height:58px;flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line);background:var(--surface)}
.overlaybar h2{font-size:18px;font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.overlaybtn{height:40px;min-width:74px;padding:0 12px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);font-weight:700;white-space:nowrap}
.overlaybtn.close{min-width:44px;width:44px;padding:0;font-size:24px}
.overlaybody{flex:1;min-height:0;padding:12px;display:flex;flex-direction:column;gap:10px;overflow:hidden}
.overlaybody .panel{flex:1}
.overlay[data-view="device-status"] .overlaybody{overflow-y:auto;overscroll-behavior:contain}
.overlay[data-view="device-status"] .overlaybody > *{flex:0 0 auto!important}
.readiness-status{padding:12px 0;min-width:0}
.readiness-status h3{margin:0 0 12px;font-size:16px}
.readiness-status dl{display:grid;grid-template-columns:minmax(100px,1fr) minmax(0,2fr);margin:0;font-size:13px;line-height:1.5}
.readiness-status dt,.readiness-status dd{margin:0;padding:10px 4px;border-bottom:1px solid var(--line);overflow-wrap:anywhere}
.readiness-status dt{color:var(--muted)}
.readiness-status dd{text-align:right}
.readiness-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.readiness-actions > *{min-height:44px;flex:1;display:flex;align-items:center;justify-content:center;padding:8px 12px;border:1px solid var(--line-strong);border-radius:6px;background:var(--surface);color:var(--ink);font:inherit;text-decoration:none;white-space:nowrap}
.overlaymeta{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.detailview,.apartmentview{flex:1;min-height:0;min-width:0;display:flex;flex-direction:column;gap:8px;overflow:hidden}
.detailtabs{--detail-tab-count:5;flex:0 0 auto;display:grid;width:100%;min-width:0;grid-template-columns:repeat(var(--detail-tab-count),minmax(0,1fr));gap:4px;padding:3px;overflow:hidden;background:var(--surface-2);border:1px solid var(--line);border-radius:8px}
.apartmentview > .detailtabs{grid-template-columns:repeat(2,minmax(0,1fr))}
.detailtab{min-width:0;min-height:38px;padding:6px 8px;border-radius:6px;color:var(--muted);font-size:13px;font-weight:700;line-height:1.15;white-space:normal;word-break:keep-all;overflow-wrap:anywhere;overflow:hidden;text-overflow:clip}
.detailtab[aria-current="page"]{background:var(--chrome);color:var(--on-chrome)}
.detailstage{flex:1;min-height:0;min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--surface);touch-action:pan-y}
.detailrail{height:100%;display:flex;transition:transform .28s cubic-bezier(.3,.8,.3,1);will-change:transform}
.detailpage{flex:0 0 100%;width:100%;height:100%;min-width:0;min-height:0;padding:12px;display:flex;flex-direction:column;gap:10px;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.detailpager{flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:12px;min-height:34px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.detailarrow{width:34px;height:34px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);font-size:22px;line-height:1}
.detailarrow:disabled{opacity:.35;cursor:default}
.detailcount{min-width:52px;text-align:center;font-weight:700}
.detailhero{flex:0 0 auto;display:flex;align-items:center;min-height:104px;padding:14px 16px;border:1px solid var(--line);border-left:5px solid var(--ctrl);border-radius:8px;background:var(--surface-2)}
.detailhero-copy{min-width:0}
.detailhero-copy h3{margin:4px 0 1px;font-size:clamp(19px,3vw,28px);line-height:1.25;overflow-wrap:anywhere}
.detailhero-copy p{color:var(--muted);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.detailstatus{display:inline-flex;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:800}
/* min-height:0 이면 이 격자가 제 내용보다 작게 줄어드는데 overflow 는 visible 이라
   줄어든 만큼이 상자 밖으로 새어 아래 카드를 덮는다. 2026-09-24 모바일에서 일정칸이
   66px 로 눌려 둘째 줄(입찰·개찰·하자 기간)이 자격 카드 위에 겹쳐 찍혔다.
   내용 높이 아래로는 줄어들지 않게 막는다 — winner-company-facts 가 같은 이유로
   이미 그렇게 되어 있다. */
.detailfacts{flex:0 1 auto;min-height:max-content;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(52px,auto);align-content:start;gap:8px;overflow:visible}
.detailfact{min-width:0;padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.detailfact.wide{grid-column:span 2}
.detailfact span{display:block;margin-bottom:2px;color:var(--muted);font-size:11px;font-weight:700}
.detailfact strong{display:block;font-size:14px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;overflow-wrap:anywhere}
.detailfact-link a{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px;color:var(--n-t);text-decoration:none}
.detailfact-link a:hover strong,.detailfact-link a:focus-visible strong{text-decoration:underline;text-underline-offset:2px}
.detailfact-link a small{color:var(--n-t);font-size:10px;font-weight:800;white-space:nowrap}
/* 주소 칸: TMAP 링크(주소 전체) 오른쪽에 카카오맵 링크를 하나 더 둔다. */
.detailfact-address{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;align-items:end}
.detailfact-address>span{grid-column:1/-1}
.detailfact-link a.detailfact-alt{display:block;padding-left:10px;border-left:1px solid var(--line)}
.detailpage.winner-company-overview{overflow-x:hidden;overflow-y:auto;align-content:flex-start;padding-bottom:14px}
.detailfacts.winner-company-facts{flex:0 0 auto;min-height:max-content;overflow:visible}
.winner-company-facts .detailfact{align-self:start;height:auto;min-height:54px;overflow:visible}
.winner-company-facts .detailfact strong{overflow:visible;text-overflow:clip}
.detailaction{flex:0 0 auto;min-height:56px;display:flex;align-items:center;gap:12px;width:100%;padding:9px 12px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);color:var(--ink);text-align:left;text-decoration:none}
.detailaction:hover{background:var(--surface-2)}
.detailaction span{min-width:0;display:flex;flex-direction:column}
.detailaction b{font-size:14px}
.detailaction small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.detailaction > strong{margin-left:auto;font-size:22px}
/* 예전에는 카드가 flex:1 로 패널 높이를 채워서, 두 줄짜리 내용 아래로 빈 상자가
   수백 픽셀씩 남았다. 내용만큼만 차지하고 길 때만 스크롤하도록 바꾼다. */
.detailtwocol{flex:0 1 auto;min-height:max-content;display:grid;align-items:start;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.detailonecol{grid-template-columns:1fr}
.clausecard .detailscroll{flex:0 1 auto;max-height:46vh;white-space:normal}
.clausecard-full .detailscroll{max-height:62vh}
.clausecard h3{display:flex;align-items:center;gap:8px;justify-content:space-between}
.clausefull{flex:0 0 auto;padding:2px 8px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--muted);font-size:11px;cursor:pointer}
.clausefull:hover{color:var(--ink)}
.clausefull[disabled]{opacity:.6;cursor:default}
.clausemeta{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.clausemeta span{display:flex;flex-direction:column;gap:1px;padding:4px 8px;border:1px solid var(--line);border-radius:6px;background:var(--surface-2,transparent)}
.clausemeta small{font-size:10px;color:var(--muted)}
.clausemeta b{font-size:12px;font-weight:600}
.clauselist{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:6px}
.clauselist-plain{list-style:disc}
.clauselist li{line-height:1.5}
.clauseempty{margin:0;color:var(--muted)}
.detailcard{min-height:0;display:flex;flex-direction:column;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.detailcard h3{flex:0 0 auto;padding-bottom:6px;font-size:13px;color:var(--muted)}
.bid-price-detail-note{display:grid;grid-template-columns:auto minmax(0,1fr);gap:3px 8px;padding:9px 11px;border-left:3px solid var(--n-t);background:var(--n-b);color:var(--ink)}
.bid-price-detail-note strong{font-size:12px}
.bid-price-detail-note span{min-width:0;font-size:12px;overflow-wrap:anywhere}
.bid-price-detail-note small{grid-column:1 / -1;color:var(--muted);font-size:11px;line-height:1.45}
/* 2026-09-29: 사정률 분포 기반 투찰 안내 */
.bid-guide-panel{display:grid;gap:6px;padding:10px 11px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink)}
.bid-guide-panel .sectionhead{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.bid-guide-panel .sectionhead strong{font-size:14px}
.bid-guide-panel .sectionhead small{color:var(--muted);font-size:10px}
.bid-guide-panel p{margin:0}
.bid-guide-base strong,.bid-guide-base span{display:block;overflow-wrap:anywhere}
.bid-guide-base span,.bid-guide-note,.bid-guide-numbers,.bid-guide-caveat,.bid-guide-rows small{color:var(--muted);font-size:11px;line-height:1.45}
.bid-guide-rows{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.bid-guide-rows li{display:grid;grid-template-columns:minmax(72px,auto) minmax(0,1fr) auto;gap:2px 10px;align-items:baseline;padding:7px 9px;border:1px solid var(--line);border-radius:6px;background:var(--surface-2)}
.bid-guide-rows b{text-align:right;overflow-wrap:anywhere}
.bid-guide-rows small{grid-column:1 / -1}
.bid-guide-candidates{table-layout:auto;font-size:12px}
.bid-guide-candidates caption{caption-side:top;text-align:left;color:var(--muted);font-size:11px;line-height:1.45;padding:0 0 4px}
.bid-guide-candidates th,.bid-guide-candidates td{padding:5px 4px;white-space:normal;overflow:visible;text-overflow:clip;vertical-align:top}
.bid-guide-candidates th:not(:first-child),.bid-guide-candidates td:not(:first-child){text-align:right;white-space:nowrap}
.bid-guide-candidates td:first-child{overflow-wrap:anywhere}
.bid-guide-candidates td small{display:block;color:var(--muted);font-size:11px}
.bid-guide-numbers{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
.bid-guide-numbers button{min-height:32px;padding:4px 10px;border:1px solid var(--line-strong);border-radius:6px;background:var(--surface);color:var(--ink);font:inherit;cursor:pointer}
.bid-guide-caveat{padding-top:6px;border-top:1px dashed var(--line)}
.bid-price-help{min-width:0;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);overflow-wrap:anywhere;font-size:13px;line-height:1.65}
.bid-price-help h4{margin:0 0 6px;font-size:16px;color:inherit}.bid-price-help p{margin:6px 0}
.bid-price-help-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0;padding:0;list-style:none;counter-reset:bid-help}
.bid-price-help-steps li{min-width:0;padding:10px;border-radius:8px;background:var(--surface-2);counter-increment:bid-help}.bid-price-help-steps strong,.bid-price-help-steps span{display:block}.bid-price-help-steps strong:before{content:counter(bid-help) ". ";font-variant-numeric:tabular-nums}
.bid-price-help summary{min-height:44px;display:list-item;align-content:center;cursor:pointer;font-weight:700;padding:10px 2px}.bid-price-help summary:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:4px}
.bid-price-help dl{display:grid;grid-template-columns:minmax(110px,1fr) minmax(0,4fr);gap:8px 14px;margin:8px 0}.bid-price-help dt{font-weight:700}.bid-price-help dd{margin:0;min-width:0}
.bid-price-help-calculation{padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2)}.bid-price-help-formula{font-weight:700;font-variant-numeric:tabular-nums}.bid-price-help-final{padding-top:8px;border-top:1px dashed var(--line)}
@media(max-width:640px){.bid-price-help{padding:12px}.bid-price-help-steps{grid-template-columns:1fr;gap:6px}.bid-price-help dl{grid-template-columns:1fr;gap:3px}.bid-price-help dd{margin-bottom:9px}}
@media (max-width:640px){.bid-guide-rows li{grid-template-columns:1fr}.bid-guide-rows b{text-align:left}}
/* 2026-10-05(저녁) 대표 요청: 투찰 안내 맨 위 카드 '이 공고, 이렇게 쓰세요' 하나와, 나머지 안내 전부를 접은 '자세히 보기'. */
.bid-guide-simple{flex:0 0 auto;display:flex;flex-direction:column;gap:8px;min-width:0}
.bid-simple-card{min-width:0;padding:14px 16px;border:1px solid var(--line-strong);border-left:4px solid var(--n-d);border-radius:10px;background:var(--surface);color:var(--ink)}
.bid-simple-card h4{margin:0 0 8px;font-size:16px;color:var(--ink)}
.bid-simple-card dl{display:grid;grid-template-columns:minmax(6.5em,max-content) minmax(0,1fr);gap:8px 14px;margin:0;align-items:baseline}
.bid-simple-line{display:contents}
.bid-simple-card dt{color:var(--muted);font-size:13px;font-weight:700;white-space:nowrap}
.bid-simple-card dd{min-width:0;margin:0;font-size:14px;line-height:1.45;overflow-wrap:anywhere;color:var(--ink)}
.bid-simple-card dd small{display:block;margin-top:2px;color:var(--muted);font-size:12px}
.bid-simple-amount{display:block;font-size:22px;font-weight:800;line-height:1.25;font-variant-numeric:tabular-nums;color:var(--ink)}
.bid-simple-amount.is-muted{font-size:17px}
.bid-guide-more{min-width:0;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink)}
.bid-guide-more > summary{min-height:44px;display:list-item;align-content:center;padding:10px 14px;cursor:pointer;font-weight:700;font-size:14px}
.bid-guide-more > summary:focus-visible{outline:2px solid var(--n-d);outline-offset:2px;border-radius:8px}
.bid-guide-more-body{display:flex;flex-direction:column;gap:10px;min-width:0;padding:0 10px 10px}
.bid-guide-more-body > *{flex:0 0 auto}
@media (max-width:640px){.bid-simple-card{padding:12px}.bid-simple-card dl{grid-template-columns:max-content minmax(0,1fr);gap:7px 10px}.bid-simple-card dt{font-size:12px}.bid-simple-amount{font-size:20px}.bid-guide-more-body{padding:0 6px 8px}}
.overview-apartment{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.overview-apartment .sectionhead{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.overview-apartment .sectionhead strong{font-size:14px}
.overview-apartment .sectionhead small{color:var(--muted);font-size:10px}
.detailscroll{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;white-space:pre-wrap;overflow-wrap:anywhere}
.awardhero{flex:0 0 auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.awardhero > div{min-width:0;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2)}
.awardhero span{display:block;color:var(--muted);font-size:11px;font-weight:700}
.awardhero strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px}
.company-detail-link{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:7px;width:100%;min-width:0;padding:0;border:0;background:transparent;color:inherit;text-align:left;font:inherit;cursor:pointer}
.company-detail-link strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.company-detail-link small{color:var(--n-t);font-size:10px;font-weight:800;white-space:nowrap}
.company-detail-link:hover strong,.company-detail-link:focus-visible strong{text-decoration:underline;text-underline-offset:2px}
.company-detail-link:focus-visible{outline:2px solid var(--chrome);outline-offset:3px;border-radius:4px}
.resultreason{flex:0 0 auto;padding:8px 10px;border-left:3px solid var(--d-d);border-radius:4px;background:var(--d-b);color:var(--d-t);font-size:12px;font-weight:700}
/* 2026-10-21: flex:1(기준 0)이라 낮은 화면(375×667)에서 비교 상자가 자리를 차지하면 순위 목록이 높이 0으로 접혀 884개 줄이 안 보였다.
   목록 칸은 최소 높이를 지키고, 모자라면 상세 쪽 전체가 스크롤된다. */
.rankcard{flex:1 0 min(320px,55vh)}
.ranklist{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.rankrow{width:100%;min-height:46px;display:grid;grid-template-columns:36px minmax(0,1fr) minmax(110px,.45fr);align-items:center;gap:8px;padding:6px 8px;border:0;border-top:1px solid var(--line);background:transparent;color:inherit;text-align:left;font:inherit;cursor:pointer}
.rankrow:first-child{border-top:none}
.rankrow.winner{background:var(--a-b);color:var(--a-t)}
.rankrow:hover,.rankrow:focus-visible{background:var(--surface-2)}
.rankrow.winner:hover,.rankrow.winner:focus-visible{filter:brightness(.98)}
.rankrow > b{text-align:center;font-variant-numeric:tabular-nums}
.rankrow > span{min-width:0;display:flex;flex-direction:column}
.rankrow > span strong,.rankrow > span small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rankrow > span small{color:var(--muted);font-size:11px}
.rankrow > em{text-align:right;font-style:normal;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.statebox.compact{min-height:90px}
/* 2026-10-11: 알림으로 연 공고가 아직 자료에 없을 때(오늘 올라온 나라장터 공고) 설명과 원문 버튼 */
.statebox .missing-note{display:block;max-width:34em;margin:8px auto 0;line-height:1.55}
.statebox .missing-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:14px}
.statebox a.btn{display:inline-flex;align-items:center;text-decoration:none}
.dochead{flex:0 0 auto;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:4px 2px}
.dochead > div{display:flex;align-items:baseline;gap:8px}
.dochead strong{font-size:18px}
.dochead span,.dochead small{color:var(--muted);font-size:12px}
.docgrid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(62px,auto);align-content:start;gap:8px;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.doclink{min-width:0;display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);text-decoration:none;text-align:left}
.doclink:hover{background:var(--surface-2)}
.doclink > span{min-width:0;display:flex;flex-direction:column}
.doclink strong,.doclink small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.doclink small{color:var(--muted)}
.doclink > b{margin-left:auto}
.methodbadge{display:inline-flex;align-self:flex-start;max-width:100%;margin-top:2px;padding:1px 6px;border-radius:999px;background:var(--r-b);color:var(--r-t);font-size:9px;font-weight:850;line-height:1.45;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 2026-10-19 경쟁 적은 공고: 예상 참여 30곳 미만(수요기관 경쟁입찰 개찰 중앙값). 공법 배지와 같은 크기, 연두. */
.compbadge{display:inline-flex;align-self:flex-start;max-width:100%;margin-top:2px;padding:1px 6px;border-radius:999px;background:var(--a-b);color:var(--a-t);font-size:9px;font-weight:850;line-height:1.45;white-space:nowrap}
.rank-badge.is-low-competition{background:var(--a-b);color:var(--a-t)}
.methodbadge.patent{background:var(--d-b);color:var(--d-t);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--d-d) 42%,transparent)}
.week-day-panel .methodbadge{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;line-height:1.25}
.priorawardhead{flex:0 0 auto;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:4px 2px}
.priorawardhead > div{display:flex;align-items:baseline;gap:8px}
.priorawardhead strong{font-size:18px}
.priorawardhead span,.priorawardhead small{color:var(--muted);font-size:12px}
.priorawardlist{flex:1;min-height:0;display:flex;flex-direction:column;gap:6px;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.priorawardrow{flex:0 0 auto;width:100%;min-width:0;min-height:62px;display:grid;grid-template-columns:94px minmax(180px,1fr) minmax(160px,.72fr) 20px;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);text-align:left}
.priorawardrow:hover,.priorawardrow:focus-visible{background:var(--surface-2);border-color:var(--ctrl)}
.priorawardrow time{color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap}
.priorawardproject,.priorawardwinner{min-width:0;display:flex;flex-direction:column}
.priorawardproject strong,.priorawardproject small,.priorawardwinner strong,.priorawardwinner small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.priorawardproject small,.priorawardwinner small{color:var(--muted);font-size:11px}
.priorawardwinner{align-items:flex-end;text-align:right}
.priorawardwinner small{color:var(--a-t);font-weight:800}
.priorawardwinner strong{color:var(--n-t);text-decoration:underline;text-decoration-color:transparent;text-underline-offset:2px}
.priorawardrow:hover .priorawardwinner strong,.priorawardrow:focus-visible .priorawardwinner strong{text-decoration-color:currentColor}
.priorawardrow > b{font-size:20px;color:var(--muted)}
.priorawarddetail{flex:1;min-height:0;display:flex;flex-direction:column;gap:10px;overflow:auto}
.priorawarddetail > *{flex-shrink:0}
.prioraward-result-detail{display:flex;flex-direction:column;gap:10px;min-width:0}
.prioraward-result-detail .ranklist{overflow:visible}
.award-coverage{margin:0 0 8px;color:var(--muted);font-size:12px;line-height:1.5;overflow-wrap:anywhere}

.briefing-docs{flex:1;min-height:0;display:flex;flex-direction:column;gap:10px}
.briefing-doc-intro{flex:0 0 auto;padding:8px 10px;border-left:3px solid var(--n-d);border-radius:5px;background:var(--n-b);color:var(--n-t);font-size:12px;font-weight:750}
.briefing-doc-share{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.briefing-doc-selectall{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:750;white-space:nowrap}
.briefing-doc-selectall input{width:16px;height:16px;accent-color:var(--n-d)}
.briefing-doc-share [data-doc-selected-count]{font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}
.briefing-doc-share button{margin-left:auto;padding:7px 12px;border:1px solid var(--line);border-radius:7px;background:var(--n-b);color:var(--n-t);font-size:12px;font-weight:800;cursor:pointer}
.briefing-doc-share button:disabled{opacity:.45;cursor:default}
.rankingcompany .rankingidentity{display:block;margin-top:2px;font-size:11px;font-weight:500;color:var(--muted);white-space:normal}
.briefing-doc-share [data-doc-print]{margin-left:0}
@media (max-width:700px),(hover:none) and (pointer:coarse){.briefing-doc-share [data-doc-print]{display:none}}
#briefing-print-root{display:none}
.briefing-doc-share small{flex:1 0 100%;font-size:11px;color:var(--muted)}
.briefing-doc-select{flex:0 0 auto;display:flex;align-items:center}
.briefing-doc-select input{width:18px;height:18px;accent-color:var(--n-d)}
.briefing-doc-grid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(min-content,1fr);gap:8px;overflow:auto;overscroll-behavior:contain}
.briefing-people{flex:0 0 auto;min-width:0;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.briefing-people-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.briefing-people [role=tablist]{display:flex;flex-wrap:wrap;gap:5px;min-width:0;max-height:84px;overflow:auto}
.briefing-people button{min-height:36px;max-width:100%;padding:6px 12px;border:1px solid var(--line-strong);border-radius:7px;background:var(--surface-2);color:var(--ink);font:inherit;font-size:13px;font-weight:750;overflow-wrap:anywhere}
.briefing-people [role=tab][aria-selected=true]{background:var(--chrome);border-color:var(--chrome);color:var(--on-chrome)}
.briefing-people [data-person-status]{margin:6px 0 0;font-size:11px;color:var(--muted)}
.briefing-people button:disabled{opacity:.5;cursor:default}
.briefing-signature-dialog{width:min(720px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;border:1px solid var(--line);border-radius:12px;padding:16px;background:var(--surface);color:var(--ink)}
.briefing-signature-dialog::backdrop{background:rgba(0,0,0,.5)}
.briefing-signature-dialog h3{margin:0 0 8px}.briefing-signature-dialog p{font-size:13px;line-height:1.5}
.briefing-signature-dialog canvas{display:block;width:100%;aspect-ratio:3/1;border:1px solid var(--line-strong);border-radius:6px;background:#fff;touch-action:none;cursor:crosshair}
.briefing-signature-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
.briefing-signature-actions button{min-height:44px;padding:8px 16px;font:inherit;border:1px solid var(--line-strong);border-radius:7px;background:var(--surface-2);color:var(--ink)}
.briefing-signature-actions [data-save]{background:var(--chrome);color:var(--on-chrome)}
.briefing-application-signature{display:flex;align-items:center;gap:8px;font-size:14px}.briefing-application-signature input{font-size:16px;width:20px;height:20px}
@media(min-width:1200px){.briefing-doc-grid.has-application{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-height:520px){.briefing-signature-dialog{padding:10px}.briefing-signature-dialog canvas{width:min(100%,480px);height:auto;margin:auto}}
.briefing-person-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:12px;border:0;padding:0;margin:10px 0;min-width:0}
.briefing-person-fields legend{font-size:12px;font-weight:750;margin-bottom:8px}
.briefing-person-field{display:flex;flex-direction:column;gap:5px;min-width:0;font-size:12px;font-weight:750}
.briefing-person-field input{width:100%;min-width:0;box-sizing:border-box;min-height:40px;border:1px solid var(--line-strong);border-radius:7px;padding:7px 9px;background:var(--surface);color:var(--ink);font:inherit;font-size:16px}
.briefing-person-field input:disabled{background:var(--surface-2);color:var(--muted)}
.briefing-sensitive-field{display:flex;align-items:flex-end;gap:5px;min-width:0}
.briefing-sensitive-field label{flex:1}
.briefing-sensitive-field button{flex:0 0 auto;min-height:40px;padding:6px 10px;border:1px solid var(--line-strong);border-radius:7px;background:var(--surface-2);color:var(--ink);font:inherit;font-size:12px}
.briefing-current{display:flex;align-items:center;gap:7px;font-size:12px;min-height:40px;align-self:end}
.briefing-current input{width:20px;height:20px;font-size:16px;accent-color:var(--chrome)}
.briefing-person-fields small,.briefing-tenure{grid-column:1/-1;font-size:12px;line-height:1.5}
.briefing-person-fields small{color:var(--muted);font-size:11px}
.briefing-tenure{padding:9px 10px;border-radius:6px;background:var(--n-b);color:var(--n-t);font-weight:800}
.briefing-tenure[data-valid=false]{background:var(--surface-2);color:var(--muted)}
@media(max-height:520px){.briefing-docs{overflow:auto;overscroll-behavior:contain;display:block}.briefing-people{margin:8px 0}.briefing-doc-grid{overflow:visible;grid-auto-rows:max-content;align-content:start}}
.briefing-doc-card{min-width:0;display:flex;flex-direction:column;gap:7px;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.briefing-doc-title{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:8px}
.briefing-doc-title img{flex:0 0 auto;width:46px;height:46px;object-fit:contain}
.briefing-doc-card h3{font-size:16px}
.briefing-doc-card p{color:var(--muted);font-size:11px;line-height:1.5}
.briefing-doc-meta{display:flex;flex-wrap:wrap;gap:5px;color:var(--faint);font-size:10px}
.briefing-doc-override{display:flex;flex-direction:column;gap:4px;margin:8px 0 10px}
.briefing-doc-override label{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:850;color:var(--ink)}
.briefing-doc-override label span{flex:0 0 auto}
.briefing-doc-override label em{flex:0 0 auto;font-style:normal;font-weight:700;color:var(--muted)}
.briefing-doc-override input{flex:1 1 auto;min-width:0;min-height:34px;padding:4px 8px;border:1px solid var(--line-strong);border-radius:7px;background:var(--surface);color:var(--ink);font:inherit;font-size:16px;font-weight:700}
.briefing-doc-override input[data-serial]{flex:0 0 72px;text-align:center}
.briefing-doc-override small{font-size:11px;font-weight:650;color:var(--muted);line-height:1.4}
.briefing-doc-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:auto}
.briefing-doc-actions button{min-height:38px;padding:6px 8px;border:1px solid var(--line-strong);border-radius:7px;background:var(--surface-2);color:var(--ink);font-weight:850}
.briefing-doc-actions button:last-child{border-color:var(--chrome);background:var(--chrome);color:var(--on-chrome)}

body.document-viewer-open{overflow:hidden}
.document-viewer-modal[hidden]{display:none}
.document-viewer-modal{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:max(18px,var(--safe-top)) max(14px,var(--safe-right)) max(14px,var(--safe-bottom)) max(14px,var(--safe-left))}
.document-viewer-backdrop{position:absolute;inset:0;background:rgba(7,14,25,.74);backdrop-filter:blur(3px)}
.document-viewer-panel{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:min(1120px,100%);height:min(92dvh,940px);overflow:hidden;border:1px solid var(--line);border-radius:10px;background:var(--surface);box-shadow:0 24px 60px rgba(10,10,8,.28)}
.document-viewer-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--surface)}
.document-viewer-title{min-width:0;margin:0;font-size:16px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.document-viewer-back,.document-viewer-close{min-height:38px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface-2);color:var(--ink);font-weight:850}
.document-viewer-back{min-width:72px;padding:6px 10px}
.document-viewer-close{width:38px;font-size:21px;line-height:1}
.document-viewer-back:hover,.document-viewer-back:focus-visible,.document-viewer-close:hover,.document-viewer-close:focus-visible{border-color:var(--ctrl);background:var(--surface)}
.document-viewer-body{position:relative;min-width:0;min-height:0;background:var(--surface-2);overflow:hidden}
.document-viewer-frame{width:100%;height:100%;border:0;background:#fff}
.document-viewer-actions{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;min-width:0;padding:8px 10px max(8px,var(--safe-bottom));border-top:1px solid var(--line);background:var(--surface)}
.document-viewer-share-status{min-width:0;color:var(--muted);font-size:10px;font-weight:750;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.document-viewer-action-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;min-width:0}
.document-viewer-action-strip > a,.document-viewer-action-strip > button{display:inline-flex;align-items:center;justify-content:center;min-width:0;min-height:38px;padding:6px 8px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface-2);color:var(--ink);font-size:11px;font-weight:850;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.document-viewer-action-strip > a:last-child{border-color:var(--chrome);background:var(--chrome);color:var(--on-chrome)}
.document-viewer-action-strip > [hidden]{display:none}
.document-viewer-modal.share-choice .document-viewer-panel{grid-template-rows:auto minmax(0,1fr)}
.document-viewer-modal.share-choice .document-viewer-actions{display:none}
.document-share-sheet{display:grid;height:100%;min-height:0;place-content:center;gap:14px;padding:clamp(18px,5vw,56px);overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.document-share-card{min-width:0;padding:18px;border:1px solid var(--line);border-radius:10px;background:var(--surface);box-shadow:0 10px 30px rgba(15,23,42,.08)}
.document-share-kicker{display:inline-flex;margin-bottom:8px;padding:3px 8px;border-radius:999px;background:var(--n-b);color:var(--n-t);font-size:11px;font-weight:850}
.document-share-card h3{font-size:clamp(18px,3vw,26px);line-height:1.3;overflow-wrap:anywhere}
.document-share-card p{margin-top:6px;color:var(--muted);font-size:13px;line-height:1.5;overflow-wrap:anywhere}
.document-share-card small{display:block;margin-top:12px;color:var(--faint);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.document-share-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.document-share-actions button,.document-share-actions a{display:flex;min-width:0;min-height:46px;align-items:center;justify-content:center;padding:8px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);color:var(--ink);font-size:13px;font-weight:850;text-align:center;text-decoration:none;word-break:keep-all}
.document-share-actions a{border-color:var(--chrome);background:var(--chrome);color:var(--on-chrome)}
.document-share-help{color:var(--muted);font-size:12px;line-height:1.5;text-align:center}
.pdf-reader-loading{display:grid;height:100%;min-height:220px;place-content:center;justify-items:center;gap:10px;padding:20px;color:var(--ink);text-align:center}
.pdf-reader-loading progress{width:min(280px,72vw);height:9px;accent-color:var(--n-d)}
.pdf-reader-loading span:last-child{color:var(--muted);font-size:12px}
.pdf-reader-spinner{width:32px;height:32px;border:4px solid var(--line);border-top-color:var(--n-d);border-radius:50%;animation:bidops-pdf-spin .8s linear infinite}
@keyframes bidops-pdf-spin{to{transform:rotate(360deg)}}
.pdf-reader-toolbar{position:absolute;z-index:3;top:8px;left:50%;display:grid;grid-template-columns:40px auto 40px;align-items:center;gap:6px;transform:translateX(-50%);border:1px solid var(--line-strong);border-radius:9px;padding:3px;background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:0 4px 14px rgba(15,23,42,.16);backdrop-filter:blur(8px)}
.pdf-reader-toolbar button{width:40px;height:36px;border:0;border-radius:6px;background:var(--surface-2);color:var(--ink);font-size:24px}
.pdf-reader-toolbar strong{font-size:12px;white-space:nowrap}
.pdf-reader-pages{display:flex;height:100%;flex-direction:row;overflow-x:auto;overflow-y:hidden;overscroll-behavior:contain;scroll-snap-type:x mandatory;background:#d9dee5;-webkit-overflow-scrolling:touch;touch-action:pan-x}
.pdf-reader-pages.pdf-zoomed{scroll-snap-type:none;touch-action:none}
.pdf-reader-page{display:grid;flex:0 0 100%;width:100%;height:100%;margin:0;place-items:center;overflow:hidden;scroll-snap-align:center;scroll-snap-stop:always;text-align:center}
.pdf-zoom-wrap{position:relative;transition:transform .12s ease-out;will-change:transform}
.pdf-reader-pages.pdf-zoomed .pdf-zoom-wrap{transition:none}
.pdf-reader-canvas{display:block;background:#fff;box-shadow:0 3px 14px rgba(15,23,42,.2)}
.pdf-text-layer,.pdf-important-overlay{position:absolute;inset:0;z-index:1;overflow:clip;line-height:1;text-align:initial;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;pointer-events:none;user-select:none}
.pdf-text-layer{visibility:hidden!important;opacity:0!important;contain:strict;isolation:isolate}
.pdf-text-layer span,.pdf-text-layer br{position:absolute;color:transparent!important;-webkit-text-fill-color:transparent!important;visibility:hidden!important;white-space:pre;transform-origin:0 0}
.pdf-text-layer span.markedContent{top:0;height:0}
.pdf-important-overlay .pdf-important-text{position:absolute;color:#d71920!important;-webkit-text-fill-color:#d71920!important;background:#fff!important;box-shadow:0 0 0 .75px #fff;visibility:visible!important;white-space:pre;font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif!important;text-shadow:none}
.pdf-float-back{position:absolute;z-index:6;top:calc(10px + var(--safe-top));left:10px;display:none;align-items:center;min-height:42px;padding:7px 13px 7px 9px;border:0;border-radius:999px;background:rgba(15,23,42,.64);color:#fff;font-size:14px;font-weight:900;backdrop-filter:blur(6px)}
.pdf-float-page{position:absolute;z-index:6;bottom:calc(12px + var(--safe-bottom));left:50%;display:none;transform:translateX(-50%);padding:4px 12px;border-radius:999px;background:rgba(15,23,42,.58);color:#fff;font-size:11px;font-weight:900;pointer-events:none;backdrop-filter:blur(6px)}
.document-viewer-modal.pdf-immersive .document-viewer-head,.document-viewer-modal.pdf-immersive .document-viewer-actions,.document-viewer-modal.pdf-immersive .pdf-reader-toolbar{display:none}
.document-viewer-modal.pdf-immersive .document-viewer-panel{grid-template-rows:minmax(0,1fr)}
.document-viewer-modal.pdf-immersive .document-viewer-body{grid-row:1;height:100%;min-height:0}
.document-viewer-modal.pdf-immersive .pdf-float-back{display:inline-flex}
.document-viewer-modal.pdf-immersive .pdf-float-page{display:block}
.pdf-reader-page-placeholder{display:grid;min-height:220px;place-items:center;border:1px solid #cbd5e1;background:#fff;color:#475569;font-weight:800}
.document-viewer-empty{display:grid;height:100%;place-items:center;padding:24px;color:var(--muted);font-weight:850;text-align:center}
.document-viewer-empty p{margin-top:5px;font-size:12px;font-weight:650}
.apartmentview{overflow:hidden}
.apartmenthero{flex:0 0 auto;padding:14px 16px;border:1px solid var(--line);border-left:5px solid var(--b-d);border-radius:8px;background:var(--surface)}
.apartmenthero span,.apartmenthero small{color:var(--muted);font-size:12px}
.apartmenthero h3{font-size:clamp(22px,3.4vw,32px);overflow-wrap:anywhere}
.apartmentfacts{flex:0 0 auto;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(66px,auto);overflow:visible}
.apartmentfacts .wide{grid-column:span 2}
.shareview{flex:1;min-height:0;display:grid;grid-template-columns:minmax(220px,.8fr) minmax(280px,1.2fr);gap:14px;overflow:hidden}
.shareqrbox,.sharecopy{min-width:0;min-height:0;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.shareqrbox{display:grid;place-items:center;padding:14px}
.shareqr{display:block;width:min(100%,360px);height:auto;max-height:100%;aspect-ratio:1;object-fit:contain;border:8px solid #fff;background:#fff}
.sharecopy{display:flex;flex-direction:column;gap:10px;padding:18px}
.sharecopy h3{font-size:20px;line-height:1.3}
.sharecopy p{color:var(--muted);font-size:13px}
.sharecopy label{margin-top:auto;color:var(--muted);font-size:12px;font-weight:700}
.shareurl{width:100%;min-width:0;min-height:46px;padding:9px 11px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface-2);color:var(--ink);font:600 13px/1.3 inherit}
.shareactions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.shareactions .btn{min-height:46px}
.sharehint{font-size:12px;color:var(--muted);text-align:center}
.toast{position:fixed;z-index:60;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));transform:translateX(-50%);max-width:min(92vw,560px);padding:10px 14px;border-radius:8px;background:var(--chrome);color:var(--on-chrome);font-size:13px;font-weight:700;box-shadow:0 8px 28px rgba(0,0,0,.2)}
.toast[hidden]{display:none}
@media (display-mode:standalone){
  #app{padding-top:max(28px,var(--safe-top))}
  .overlay{padding-top:max(28px,var(--safe-top))}
}
@media (min-width:1001px) and (max-width:1199px){
  .sync{width:34px;min-height:34px;justify-content:center;gap:0;padding:0}
  .synccommand,.syncstatus{display:none}
}
@media (min-width:701px) and (max-width:1000px){
  .topbar{gap:5px;padding-inline:8px}
  .brand{gap:0}
  .brand span,.synccommand,.syncstatus{display:none}
  .tabs{flex:1 1 auto;justify-content:space-between;overflow:hidden;gap:0}
  .tab{flex:0 1 auto;font-size:11px;padding:7px 4px}
  .sync{width:32px;min-height:32px;margin-left:0;justify-content:center;gap:0;padding:0}
  .homequick{width:32px;height:32px;padding:0}
  .homequick b{display:none}
  .navbtn,.sharequick{width:32px;height:32px}
  .week-pagehead{grid-template-columns:minmax(220px,1fr) minmax(260px,1fr)}
  .week-actions{grid-column:1 / -1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}
  .week-actions .btn{width:100%;min-width:0}
}
@media (max-width:700px) and (orientation:portrait){
  .topbar{
    height:88px;display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;
    grid-template-rows:36px 38px;grid-template-areas:"brand sync home share" "tabs tabs tabs tabs";
    gap:4px 7px;padding:5px 8px;
  }
  .brand{grid-area:brand}
  .sync{grid-area:sync;margin-left:0;justify-self:end;min-width:0;overflow:hidden}
  .synccommand{overflow:hidden;text-overflow:ellipsis}
  .syncstatus{display:none}
  .sharequick{grid-area:share}
  .homequick{grid-area:home;width:34px;padding:0}
  .homequick b{display:none}
  .tabs{grid-area:tabs;min-width:0;width:100%}
  .shareview{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto;gap:8px}
  .shareqrbox{padding:8px}
  .shareqr{width:auto;max-width:100%;height:100%;max-height:min(44dvh,360px)}
  .sharecopy{gap:7px;padding:12px}
  .sharecopy h3{font-size:16px}
  .sharecopy p{font-size:11px}
  .sharecopy label{margin-top:0}
}
@media (max-width:700px), (max-height:430px) and (max-width:900px){
  .tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;overflow:hidden}
  .tabs .tab{min-width:0;padding:7px 2px;font-size:0;overflow:hidden}
  .tabs .tab::after{content:attr(data-short-label);font-size:10px;line-height:1;white-space:nowrap;word-break:keep-all}
  .tabs .tab:first-child::after{font-weight:800}
  .tabs .tab:nth-child(n+6){display:none}
  .mobiletabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));height:48px}
  .calwrap{display:block}
  .calmain{width:100%;height:100%;min-height:0}
  .calside{display:none}
  .calendar-filter-stack{display:block}
  .calendar-filter-stack .company-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px;padding:4px 5px;border-right:0;border-bottom:1px solid var(--line);overflow:visible}
  .calendar-filter-stack .company-filters .fchip{min-width:0;min-height:25px;padding:2px 3px;justify-content:center;font-size:9px;overflow:hidden;text-overflow:ellipsis}
  .calendar-filter-stack .status-filters{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:3px;padding:4px 5px;overflow:visible}
  .calendar-filter-stack .status-filters .fchip{min-width:0;min-height:23px;padding:2px 3px;justify-content:center;font-size:9px;line-height:1.05;white-space:normal;word-break:keep-all;overflow:visible;text-overflow:clip}
  .calendar-filter-stack .status-filters .fchip i{display:none}
  .calendar-filter-stack .method-filters{border-left:0;border-top:1px solid var(--line);padding-block:4px}
  .calendar-filter-stack .method-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;overflow:visible}
  .calendar-filter-stack .method-filters .fchip{min-width:0;min-height:23px;padding:2px 3px;justify-content:center;font-size:9px;line-height:1.05;white-space:normal;word-break:keep-all;overflow:visible;text-overflow:clip}
  .ecard-method{flex-basis:112px;padding-left:8px}
  .ecard-method strong{font-size:10px}
}
@media (max-width:560px){
  .brand span{display:none}
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cols{grid-template-columns:1fr;grid-template-rows:repeat(2,minmax(0,1fr))}
  .sync{width:34px;min-height:34px;justify-content:center;gap:0;padding:0}
  .synccommand,.syncstatus{display:none}
  .page{padding:8px;gap:8px}
  .pagehead h2{font-size:16px}
  .pagehead .sub{display:none}
  .result-source-filters{grid-template-columns:repeat(2,minmax(0,1fr))}
  .result-source-filters .fchip{min-height:36px;font-size:10px}
  .today-filter-stack .fchip{min-height:34px;padding:4px 3px;font-size:10px;line-height:1.15}
  .calendar-filter-stack .status-filters{grid-template-columns:repeat(5,minmax(0,1fr))}
  .kpi{padding:8px 10px}
  .kpi .v{font-size:20px}
  .today-list-open{min-height:44px;grid-template-columns:minmax(0,1fr) auto 28px}
  .today-list-open-icon{width:28px;height:28px}
  .today-schedule-summary{align-items:flex-start;flex-direction:column;gap:1px}
  .today-schedule-dialog-list{padding:0 6px 8px}
  .today-schedule-group-title{min-height:42px;padding-inline:6px}
  .overlaybar h2{font-size:16px}
  .overlaybtn{min-width:44px;padding:0 8px}
  .overlaybtn span{display:none}
  .detailtabs{gap:2px}
  .detailview > .detailtabs{overflow:hidden}
  .detailview > .detailtabs[data-tab-count="6"]{grid-template-columns:repeat(3,minmax(0,1fr))}
  .detailview > .detailtabs[data-tab-count="5"]{grid-template-columns:repeat(6,minmax(0,1fr))}
  .detailview > .detailtabs[data-tab-count="5"] > .detailtab{grid-column:span 2}
  .detailview > .detailtabs[data-tab-count="5"] > .detailtab:nth-child(n+4){grid-column:span 3}
  .detailview > .detailtabs[data-tab-count="4"]{grid-template-columns:repeat(2,minmax(0,1fr))}
  .detailtab{min-height:40px;padding:4px 1px;font-size:10px;line-height:1.15;white-space:normal}
  .detailpage{padding:8px;gap:8px}
  .detailhero{min-height:88px;padding:10px 12px}
  .detailhero-copy h3{font-size:19px}
  .detailfacts{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(52px,auto);gap:6px}
  .detailfact{padding:7px 8px}
  .detailfact.wide{grid-column:span 2}
  /* 행을 1fr 로 고정하면 내용이 더 큰 카드가 제 행을 넘어 다음 카드를 덮는다.
     카드 자체가 max-height 로 이미 제한돼 있으니 행은 내용에 맞춘다. */
  .detailtwocol{grid-template-columns:1fr;grid-auto-rows:auto;grid-template-rows:none;gap:6px}
  /* 좁은 화면에서는 패널 자체가 스크롤된다. 카드 안에 또 스크롤 상한을 두면
     제목 높이가 행 계산에서 빠져 카드가 제 행을 넘어 다음 카드를 덮는다. */
  .clausecard .detailscroll{max-height:none;overflow:visible}
  .awardhero{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .awardhero > div{padding:7px 8px}
  .rankrow{grid-template-columns:28px minmax(0,1fr);gap:5px}
  .rankrow > em{grid-column:2;text-align:left;font-size:12px}
  .dochead small{display:none}
  .docgrid{grid-template-columns:1fr}
  .briefing-doc-grid{grid-template-columns:1fr;grid-auto-rows:max-content;align-content:start;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  .briefing-doc-card{padding:10px}
  .briefing-sensitive-field{grid-column:1/-1}
  .briefing-doc-actions{gap:4px}
  .briefing-doc-actions button{min-height:36px;padding-inline:4px;font-size:11px;white-space:nowrap}
  .priorawardrow{grid-template-columns:74px minmax(0,1fr) 18px;grid-template-areas:"date project go" "winner winner go";min-height:72px;padding:7px 8px}
  .priorawardrow time{grid-area:date}
  .priorawardproject{grid-area:project}
  .priorawardwinner{grid-area:winner;align-items:flex-start;text-align:left;padding-left:82px}
  .priorawardrow > b{grid-area:go}
  .priorawardhead{align-items:flex-start}
  .priorawardhead small{max-width:48%;text-align:right}
  .apartmentfacts{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(58px,auto)}
  .directory-regions{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}
  .directory-region-button{min-width:0;padding-inline:5px;overflow:hidden;text-overflow:ellipsis}
  .directory-region-button b{display:none}
  .directory-region-path{grid-column:1 / -1;text-align:left;padding-inline:2px}
  .directorymeta{gap:6px}
  .directory-picker{gap:7px}
  .directory-picker-summary{min-height:54px;padding:7px 8px;gap:8px}
  .directory-picker-summary > div:first-child span{display:none}
  .directory-picker-summary strong{font-size:14px}
  .directory-picker-summary dl{gap:2px}
  .directory-picker-summary dl div{min-width:62px;padding:3px 6px}
  .directory-picker-summary dd{font-size:14px}
  .directory-district-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:52px;gap:6px}
  .directory-district-choice{height:52px;padding:6px 7px 6px 9px;gap:5px}
  .directory-district-all{height:56px;min-height:56px}
  .directory-choice-label strong{font-size:12px}
  .directory-choice-count b{font-size:12px}
  .directory-company-grid{grid-template-columns:1fr}
  .directory-company-choice{height:52px;min-height:52px}
  .company-search-form input{padding-inline:9px}
  .company-filter-row{gap:4px}
  .company-segment button,.company-context-button{padding-inline:7px;font-size:10px}
  .company-index-summary{gap:4px}
  .company-index-summary span,.company-index-summary strong{padding-inline:6px;font-size:10px}
  .company-index-columns{display:none}
  .company-index-row{grid-template-columns:58px minmax(0,1fr) 16px;grid-template-areas:"source main go" "trade trade trade" "address address address";gap:1px 6px;min-height:76px;padding:6px 8px}
  .company-source-badges{grid-area:source}
  .company-index-main{grid-area:main}
  .company-index-trade{grid-area:trade}
  .company-index-address{grid-area:address}
  .company-index-row > b{grid-area:go}
  .company-profile-facts{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(50px,1fr)}
  .company-association-grid{gap:6px}
  .company-source-card{min-height:76px;padding:7px 8px}
  .company-association-facts{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(50px,1fr);gap:6px}
  .company-history-columns{display:none}
  .company-history-row{grid-template-columns:74px minmax(0,1fr);grid-template-areas:"date agency" "work work" "result result";gap:2px 7px;min-height:84px;padding:6px 8px}
  .company-history-row time{grid-area:date}
  .company-history-agency{grid-area:agency}
  .company-history-work{grid-area:work}
  .company-history-result{grid-area:result;flex-direction:row;gap:7px;text-align:left}
  .unified-search-layout{grid-template-columns:1fr;grid-template-rows:repeat(2,minmax(0,1fr));gap:6px}
  .unified-search-layout.single{grid-template-rows:1fr}
  .ranking-columns{display:none}
  .rankingrow{grid-template-columns:30px minmax(0,1fr);grid-template-rows:repeat(4,auto);grid-template-areas:"rank company" "rank amount" "rank count" "rank latest";gap:2px 6px;min-width:0;min-height:76px;overflow:hidden}
  .rankingrow > b{grid-area:rank;align-self:stretch;display:grid;place-items:center;min-width:0}
  .rankingcompany{grid-area:company;max-width:100%}
  .rankingrow > strong{grid-area:amount;min-width:0;max-width:100%;justify-self:start;text-align:left;line-height:1.35;white-space:normal;overflow-wrap:anywhere}
  .rankingrow > em{grid-area:count;min-width:0;justify-self:start;text-align:left;font-size:11px;line-height:1.35;white-space:normal}
  .rankingrow > small{grid-area:latest;min-width:0;max-width:100%;text-align:left;font-size:11px;line-height:1.35;white-space:normal}
  .ranking-value-label{display:inline}
  .ranking-controls select{flex-basis:92px;padding-inline:6px}
  .winner-company-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .winner-company-summary > div{padding:7px 8px}
  .winner-company-profile .detailtab{min-height:42px;padding:4px;font-size:10px;line-height:1.15;white-space:normal}
  .winner-company-facts{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(54px,auto)}
  .winner-company-facts .wide{grid-column:span 2}
  .winner-history-columns{display:none}
  .winner-award-row{grid-template-columns:76px minmax(0,1fr) auto;gap:2px 7px;min-height:82px;padding:6px 8px}
  .winner-award-row time{grid-column:1;grid-row:1}
  .winner-award-agency{grid-column:2;grid-row:1}
  .winner-award-row > .money{grid-column:3;grid-row:1}
  .winner-award-work{grid-column:2 / 4;grid-row:2}
  .winner-award-meta{grid-column:2 / 4;grid-row:3}
  .prow .event-sources{max-width:28%}
  .source-mini{max-width:92px;padding-inline:5px;font-size:9px}
}
@media (max-height:430px){
  .topbar{height:40px;display:flex;min-height:40px;padding:0 8px}
  .navbtn{width:28px;height:28px}
  .homequick,.sharequick{width:28px;height:28px;padding:0}
  .homequick b{display:none}
  .sharequick span{font-size:17px}
  .page{padding:6px;gap:6px}
  .pagehead{min-height:26px}
  .pagehead .sub{display:none}
  .pagehead h2{font-size:15px}
  .filters{padding:3px 6px;gap:3px}
  .fchip{font-size:10px;padding:1px 6px}
  .dows{display:none}
  .grid{border-top:none}
  .cell .dn{line-height:15px}
  .kpi{padding:6px 10px;border-radius:8px}
  .kpi .v{font-size:18px}
  .searchrow input,.btn{padding:5px 10px}
  .directory-regions{grid-template-columns:repeat(4,minmax(0,1fr));gap:3px}
  .directory-region-button{min-height:28px;padding-block:3px;font-size:11px}
  .directory-region-path{display:none}
  .directory-picker{gap:4px}
  .directory-picker-summary{min-height:42px;padding:4px 7px}
  .directory-picker-summary strong{font-size:12px}
  .directory-picker-summary dl div{min-width:52px;padding:1px 5px}
  .directory-picker-summary dt{font-size:8px}
  .directory-picker-summary dd{font-size:12px}
  .directory-district-grid{grid-template-columns:repeat(auto-fill,minmax(125px,1fr));grid-auto-rows:42px;gap:4px}
  .directory-district-choice{height:42px;padding:4px 6px 4px 8px}
  .directory-district-all{height:44px;min-height:44px}
  .directory-company-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}
  .directory-company-choice{height:42px;min-height:42px}
  .directory-choice-label small{display:none}
  .directory-choice-arrow{font-size:17px}
  .company-filter-row{gap:3px}
  .company-segment{padding:2px}
  .company-segment button,.company-context-button{min-height:25px;padding:2px 6px;font-size:10px}
  .company-index-summary span,.company-index-summary strong{padding:1px 6px;font-size:9px}
  .company-index-row{min-height:48px;padding:4px 7px}
  .company-profile-hero{min-height:58px;padding:6px 9px}
  .company-association-grid{gap:5px}
  .company-source-card{min-height:58px;padding:5px 8px}
  .company-source-card small{display:none}
  .company-profile-facts,.company-association-facts{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(42px,1fr);gap:4px}
  .company-history-row{min-height:50px;padding:4px 6px}
  .company-history-result small{display:none}
  .tool{padding:7px 10px;gap:1px;border-radius:8px}
  .tool .td,.tool .go{display:none}
  .tool .tt{font-size:13px}
  .hint{display:none}
  .overlaybar{height:44px;padding:4px 8px}
  .overlaybtn{height:34px}
  .overlaybody{padding:6px;gap:6px}
  .detailview{gap:4px}
  .detailtabs{grid-template-columns:repeat(var(--detail-tab-count),minmax(0,1fr));overflow:hidden}
  .apartmentview > .detailtabs{grid-template-columns:repeat(2,minmax(0,1fr))}
  .winner-company-profile .detailtabs{grid-template-columns:repeat(3,minmax(0,1fr))}
  .detailtab{min-height:30px;padding:2px 1px;font-size:9px;line-height:1.1;white-space:normal}
  .detailpage{padding:6px;gap:6px}
  .detailpager{min-height:28px}
  .detailarrow{width:28px;height:28px}
  .detailhero{min-height:62px;padding:7px 10px}
  .detailhero-copy h3{margin:1px 0;font-size:17px}
  .detailhero-copy p{font-size:12px}
  .detailfacts{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(46px,auto);gap:5px}
  .detailfact{padding:5px 7px}
  .detailfact strong{font-size:12px}
  .detailtwocol{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:auto;grid-template-rows:none}
  .detailaction{min-height:42px;padding:5px 9px}
  .awardhero{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}
  .awardhero > div{padding:5px 7px}
  .rankrow{min-height:38px;grid-template-columns:30px minmax(0,1fr) minmax(90px,.4fr)}
  .rankrow > em{grid-column:auto;text-align:right}
  .apartmenthero{padding:7px 10px}
  .apartmenthero h3{font-size:18px}
  .apartmentfacts{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(48px,auto)}
  .shareview{grid-template-columns:minmax(150px,.55fr) minmax(260px,1.45fr);gap:6px}
  .shareqrbox{padding:5px}
  .sharecopy{gap:5px;padding:8px}
  .sharecopy h3{font-size:14px}
  .sharecopy p,.sharecopy label,.sharehint{font-size:10px}
  .shareurl,.shareactions .btn{min-height:34px;padding:5px 8px;font-size:11px}
  .mobiletabs{height:36px}
  .mobiletab{min-height:35px;padding:2px 3px;font-size:11px}
  .rankingrow{min-height:38px;padding:4px 7px}
  .winner-company-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}
  .winner-company-summary > div{padding:4px 6px}
  .winner-company-summary strong{font-size:12px}
  .winner-company-breakdown{font-size:10px}
  .winner-company-facts{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(42px,auto);gap:4px}
  .winner-company-facts .wide{grid-column:span 2}
  .winner-award-row{grid-template-columns:72px minmax(0,1fr) auto;min-height:58px;padding:4px 6px}
  .winner-award-meta{display:none}
  .priorawardrow{min-height:46px;grid-template-columns:68px minmax(0,1fr) minmax(120px,.65fr) 16px;padding:4px 6px}
  .priorawardrow time,.priorawardproject,.priorawardwinner,.priorawardrow > b{grid-area:auto}
  .priorawardwinner{align-items:flex-end;text-align:right;padding-left:0}
  .document-viewer-modal{padding:max(6px,var(--safe-top)) max(6px,var(--safe-right)) max(6px,var(--safe-bottom)) max(6px,var(--safe-left))}
  .document-viewer-panel{height:100%;max-height:none;border-radius:8px}
  .document-viewer-head{padding:5px 7px}
  .document-viewer-back,.document-viewer-close{min-height:32px}
  .document-viewer-close{width:34px}
  .document-viewer-actions{padding:5px 7px max(5px,var(--safe-bottom))}
  .document-viewer-share-status{display:none}
  .document-viewer-action-strip > a,.document-viewer-action-strip > button{min-height:32px;padding:4px;font-size:9px}
}

@media (max-width:700px){
  .week-filterbar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;overflow:visible}
  .week-filter{display:flex;align-items:center;justify-content:center;gap:5px;min-width:0;width:100%;min-height:38px;padding:4px 7px;overflow:hidden;border-radius:8px;text-overflow:clip}
  .week-filter::before{content:attr(data-short-label);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .week-filter-label{display:none}
  .week-filter-count{flex:0 0 auto;font-size:10px;font-variant-numeric:tabular-nums}
  .week-filterbar .week-filter:last-child{grid-column:auto}
  .week-filter[aria-pressed="true"]{border-color:var(--ink);background:var(--surface);color:var(--ink);box-shadow:inset 3px 0 0 var(--ink)}
  .week-filterbar[data-all-selected="true"] .week-filter:first-child{background:var(--chrome);color:var(--on-chrome);box-shadow:none}
  .week-pagehead{grid-template-columns:minmax(0,1fr);gap:5px}
  .week-heading{justify-content:space-between}
  .week-navigation{grid-template-columns:34px minmax(116px,1fr) 34px}
  .week-label{font-size:12px}
  .week-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}
  .week-actions .btn{width:100%;min-width:0}
  .weekwrap{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .weekwrap > .panel:nth-child(5){grid-column:1 / -1}
  .report-tools-grid{grid-template-columns:1fr;gap:6px}
  .report-tools-grid .detailaction{padding:8px 10px}
}
@media (max-width:700px) and (orientation:portrait){
  .week-pagehead{
    grid-template-columns:minmax(88px,.7fr) minmax(174px,1.3fr);
    grid-template-areas:"heading actions" "navigation navigation";
    gap:5px 8px
  }
  .week-heading{grid-area:heading}
  .week-heading h2{font-size:16px}
  .week-navigation{grid-area:navigation;grid-template-columns:40px minmax(0,1fr) 40px;gap:6px}
  .week-navigation .navbtn{width:40px;height:40px}
  .week-label{font-size:13px}
  .week-actions{grid-area:actions;gap:4px}
  .week-actions .btn{min-height:36px;padding:4px 6px;font-size:11px}
  .week-filterbar{padding:5px}
  .weekwrap{
    grid-template-columns:minmax(0,1fr);grid-auto-rows:auto;align-content:start;gap:7px;
    overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;
    padding-right:2px;scrollbar-gutter:stable
  }
  .weekwrap > .panel:nth-child(5){grid-column:auto}
  .weekwrap > .week-day-panel{height:clamp(246px,34dvh,292px);min-height:246px;padding:8px 10px}
  .weekwrap > .week-day-empty{height:66px;min-height:66px}
  .week-day-empty .plist{min-height:0}
  .week-day-panel h3{min-height:24px;font-size:13px}
  .week-day-count{padding-inline:7px;font-size:10px}
  .week-day-panel .pager{min-height:34px;padding-top:4px}
  .week-day-panel .pgbtn{width:34px;height:34px}
}
@media (max-height:430px){
  .calendar-filter-stack .status-filters{grid-template-columns:repeat(10,minmax(0,1fr));padding-block:2px}
  .calendar-filter-stack .status-filters .fchip{min-height:19px;padding-block:1px;font-size:8px}
  .calendar-filter-stack .method-filters{padding-block:2px}
  .week-filterbar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;padding:3px 5px;overflow:visible}
  .week-filterbar .week-filter:last-child{grid-column:auto}
  .week-filter{display:flex;align-items:center;justify-content:center;gap:3px;min-width:0;width:100%;min-height:24px;padding:2px 3px;font-size:9px;overflow:hidden;text-overflow:clip}
  .week-filter::before{content:attr(data-short-label);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .week-filter-label{display:none}
  .week-filter-count{flex:0 0 auto;font-size:8px}
  .week-pagehead{grid-template-columns:auto minmax(180px,1fr) auto;gap:5px}
  .week-heading .week-sub{display:none}
  .week-heading h2{font-size:14px}
  .week-navigation{grid-template-columns:28px minmax(110px,1fr) 28px;gap:4px}
  .week-label{font-size:11px}
  .week-navigation .navbtn{width:28px;height:28px}
  .week-actions{grid-column:auto;display:flex;width:auto}
  .week-actions .btn{min-height:28px;padding:2px 7px;font-size:10px}
  .weekwrap{grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}
  .weekwrap > .panel:nth-child(5){grid-column:auto}
  .weekwrap > .panel{padding:5px 6px}
  .report-tools-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
  .report-tools-grid .detailaction{padding:5px 8px}
  .report-tools-grid .detailaction span{font-size:12px}
  .report-tools-grid .detailaction > strong{font-size:9px}
}

/* Mobile browsers auto-zoom focused form controls rendered below 16px. */
@media (hover:none) and (pointer:coarse){
  .searchrow input,
  .ranking-controls select,
  .shareurl{font-size:16px;touch-action:manipulation}
}

.weekly-export-print-root{display:none}
@page{size:A4 landscape;margin:7mm}
@page briefing-a4{size:A4 portrait;margin:0}
@media print{
  html,body{height:auto!important;overflow:visible!important;background:#fff!important;color:#111!important}
  body.briefing-docs-printing > :not(#briefing-print-root){display:none!important}
  body.briefing-docs-printing #briefing-print-root{display:block!important;margin:0;padding:0;background:#fff}
  .briefing-print-page{page:briefing-a4;width:210mm;height:297mm;margin:0;overflow:hidden;break-after:page;page-break-after:always}
  .briefing-print-page:last-child{break-after:auto;page-break-after:auto}
  .briefing-print-page img{display:block;width:210mm;height:297mm;object-fit:contain}
  body.weekly-export-printing > :not(#weekly-export-print-root){display:none!important}
  body.weekly-export-printing #weekly-export-print-root{display:block!important;width:100%;margin:0;padding:0;background:#fff;color:#111}
  .weekly-print-sheet{width:100%;font-family:"Malgun Gothic","Noto Sans KR",sans-serif;page:A4 landscape}
  .weekly-print-sheet > header{display:flex;align-items:flex-end;gap:4mm;margin-bottom:2mm;border-bottom:.7mm solid #2b2b26;padding-bottom:2mm}
  .weekly-print-sheet > header div{display:flex;align-items:baseline;gap:3mm}
  .weekly-print-sheet > header strong{font-size:15pt;line-height:1}
  .weekly-print-sheet > header span{font-size:8pt;color:#444}
  .weekly-print-sheet > header em{margin-left:auto;font-size:7pt;font-style:normal;color:#555}
  .weekly-print-sheet table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:6.6pt;line-height:1.25}
  .weekly-print-sheet thead{display:table-header-group}
  .weekly-print-sheet tr{break-inside:avoid;page-break-inside:avoid}
  .weekly-print-sheet th,.weekly-print-sheet td{border:.2mm solid #aaa;padding:1.1mm 1.2mm;vertical-align:top;overflow-wrap:anywhere}
  .weekly-print-sheet th{background:#2b2b26!important;color:#fff!important;font-weight:700;text-align:left;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .weekly-print-sheet tbody tr:nth-child(even) td{background:#f4f4f1!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .weekly-print-sheet th:nth-child(1),.weekly-print-sheet td:nth-child(1){width:6%}
  .weekly-print-sheet th:nth-child(2),.weekly-print-sheet td:nth-child(2){width:4%}
  .weekly-print-sheet th:nth-child(3),.weekly-print-sheet td:nth-child(3){width:7%}
  .weekly-print-sheet th:nth-child(4),.weekly-print-sheet td:nth-child(4){width:5%}
  .weekly-print-sheet th:nth-child(5),.weekly-print-sheet td:nth-child(5){width:8%}
  .weekly-print-sheet th:nth-child(6),.weekly-print-sheet td:nth-child(6){width:6%}
  .weekly-print-sheet th:nth-child(7),.weekly-print-sheet td:nth-child(7){width:6%}
  .weekly-print-sheet th:nth-child(8),.weekly-print-sheet td:nth-child(8){width:11%}
  .weekly-print-sheet th:nth-child(9),.weekly-print-sheet td:nth-child(9){width:18%}
  .weekly-print-sheet th:nth-child(10),.weekly-print-sheet td:nth-child(10){width:9%}
  .weekly-print-sheet th:nth-child(11),.weekly-print-sheet td:nth-child(11){width:10%}
  .weekly-print-sheet th:nth-child(12),.weekly-print-sheet td:nth-child(12){width:6%}
  .weekly-print-sheet th:nth-child(13),.weekly-print-sheet td:nth-child(13){width:4%}
  .weekly-print-sheet > footer{margin-top:1.5mm;color:#555;font-size:6.5pt;text-align:right}
}
/* Company bid guidance uses a separate, on-demand dataset. */
.bid-action-guidance,.company-standing-panel{margin:16px 0;padding:16px;border:1px solid var(--line,#d7dee5);border-radius:12px;background:var(--surface);min-width:0;overflow-wrap:anywhere}
.bid-action-guidance h4,.company-standing-company h4{margin:0 0 10px;font-size:16px}
.bid-action-companies{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.bid-action-companies article{padding:12px;border:1px solid var(--line,#d7dee5);border-radius:8px;min-width:0}
.bid-action-companies article>strong,.bid-action-amount{display:block}.bid-action-amount{font-size:22px;margin:10px 0;font-variant-numeric:tabular-nums}.bid-action-numbers{white-space:nowrap}
.bid-action-inputs{display:grid;grid-template-columns:minmax(90px,1fr) minmax(0,2fr);gap:6px 12px;font-size:13px}.bid-action-inputs dt,.bid-action-inputs dd{margin:0}.bid-action-guidance p,.company-standing-panel p{line-height:1.6;font-size:13px}
.company-standing-panel summary{cursor:pointer;font-weight:700;line-height:1.5}.company-standing-company{margin-top:18px}.company-standing-row{display:grid;gap:5px;padding:12px 0;border-top:1px solid var(--line,#d7dee5);font-size:13px;min-width:0}.company-standing-row span,.company-standing-row small{color:var(--muted,#526270)}
@media(max-width:600px){.bid-action-companies{grid-template-columns:1fr}.bid-action-guidance,.company-standing-panel{padding:12px}.bid-action-amount{font-size:20px}}
/* 2026-10-10 결과 탭 안의 탭 · 1순위 분석(buildRankAnalysisView). 숫자는 모두 공식 개찰 자료 · 투찰 안내 자료. */
[data-page="results"] [hidden]{display:none!important}
.result-tabs{max-width:440px}
.result-tabs .detailtab,.rank-modes .detailtab,.week-stagebar .detailtab{min-height:36px}
/* 2026-10-10: 성적표 공고를 누르면 정밀분석 겹창 */
.company-standing-row.is-clickable{position:relative;padding-right:22px;cursor:pointer;border-radius:6px}
.company-standing-row.is-clickable::after{content:"›";position:absolute;right:6px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:18px;font-weight:700}
.company-standing-row.is-clickable:hover{background:var(--surface-2)}
.company-standing-row.is-clickable:focus-visible{outline:2px solid var(--chrome);outline-offset:2px}
/* 2026-10-10: 주간 탭 일정 종류(전체·현설·마감) */
.week-stagebar{max-width:420px}
.rank-modes .detailtab small{margin-left:3px;font-size:11px;font-weight:700;opacity:.75}
.rank-analysis{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px}
.rank-toolbar{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.rank-modes{flex:1 1 300px;max-width:440px}
.rank-company-filters{display:flex;flex-wrap:wrap;gap:5px}
.rank-company-filters .fchip{min-height:32px;display:inline-flex;align-items:center}
.rank-outcome-filters{flex:0 0 auto;display:flex;flex-wrap:wrap;gap:5px}
.rank-outcome-filters .fchip{min-height:30px;display:inline-flex;align-items:center}
.rank-outcome-filters .fchip:disabled{opacity:.45;cursor:default}
.rank-summary{flex:0 0 auto;margin:0;padding:8px 12px;border-radius:10px;background:var(--o-b);color:var(--o-t);font-size:12.5px;font-weight:700;line-height:1.45;overflow-wrap:anywhere}
.rank-panel{flex:1;min-height:0}
.rank-cards{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;overflow:hidden}
.rank-card{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;min-width:0;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.rank-card-head{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;font-size:11.5px;line-height:1.3}
.rank-date{padding:2px 7px;border-radius:6px;background:var(--n-b);color:var(--n-t);font-weight:800;white-space:nowrap}
.rank-date.is-deadline{background:var(--d-b);color:var(--d-t)}
.rank-badge{padding:2px 8px;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);color:var(--ink);font-weight:700;white-space:nowrap}
.rank-badge.is-ms{border-color:var(--n-d)}
.rank-badge.is-pureun{border-color:var(--o-d)}
.rank-badge.is-first{background:var(--a-b);color:var(--a-t)}
.rank-badge.is-below{background:var(--f-b);color:var(--f-t)}
.rank-badge.is-phase{border-style:dashed;color:var(--muted);font-weight:600}
.rank-bidno{margin-left:auto;color:var(--muted);font-variant-numeric:tabular-nums}
.rank-card h4{margin:0;font-size:14px;font-weight:800;line-height:1.35;overflow-wrap:anywhere}
.rank-agency{margin:0;color:var(--muted);font-size:12px;overflow-wrap:anywhere}
.rank-compare{font-size:12.5px}
.rank-leader{margin:0;color:var(--muted);font-size:12px}
.rank-leader b{color:var(--ink)}
.rank-rec{display:grid;grid-template-columns:max-content max-content minmax(0,1fr);gap:3px 8px;align-items:baseline;padding:6px 8px;border-radius:8px;background:var(--surface-2);font-size:12.5px}
.rank-rec b{font-weight:800;white-space:nowrap}
.rank-rec strong{font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.rank-rec small{min-width:0;color:var(--muted);font-size:11.5px;overflow-wrap:anywhere}
.rank-rec.is-none small{grid-column:2/-1}
.rank-rec.is-win{background:var(--a-b)}
.rank-rec.is-win small{color:var(--a-t);font-weight:700}
.rank-rec.is-below,.rank-rec.is-edge{background:var(--f-b)}
.rank-rec.is-below small,.rank-rec.is-edge small{color:var(--f-t);font-weight:700}
.rank-guide-lines{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:4px 12px;margin:0;font-size:12.5px;align-items:baseline}
.rank-guide-lines dt{color:var(--muted)}
.rank-guide-lines dd{margin:0;min-width:0;overflow-wrap:anywhere}
.rank-guide-lines strong{font-size:16px;font-weight:800;font-variant-numeric:tabular-nums}
.rank-open{align-self:stretch;min-height:40px;padding:8px 12px;border-radius:8px;background:var(--chrome);color:var(--on-chrome);font-size:13px;font-weight:800;touch-action:manipulation}
/* 2026-10-10 사장님: "우리회사 성적표는 아래 스크롤이 안되는거같아". 결과 화면은 한 화면 고정이라 펼친 성적표(2,500px 안팎)가
   잘렸다. 펼친 내용은 화면 높이 안에서 따로 스크롤한다. */
.company-standing-panel[open] .company-standing-content{max-height:min(62vh,640px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding-right:4px}
.company-standing-tabs{margin:12px 0 0;max-width:440px}
.company-standing-tabs .detailtab{min-height:36px}
.rank-card.is-clickable{cursor:pointer}
.rank-card.is-clickable:hover{border-color:var(--line-strong)}
.rank-basics{margin:0;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.rank-guide-lines small{margin-left:6px;color:var(--muted);font-size:12px;font-weight:600}
/* 정밀분석 겹창(카드를 눌러 연다) */
.rank-analysis-view{display:flex;flex-direction:column;gap:10px;min-width:0;padding:2px}
.rank-analysis-view h3{margin:0;font-size:17px;font-weight:800;line-height:1.35;overflow-wrap:anywhere}
.rank-analysis-view h4{margin:4px 0 0;font-size:13px;font-weight:800;color:var(--muted)}
.rank-analysis-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px;margin:0}
.rank-analysis-facts div{padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface);min-width:0}
.rank-analysis-facts dt{color:var(--muted);font-size:11px}
.rank-analysis-facts dd{margin:2px 0 0;font-size:13px;font-weight:800;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.rank-analysis-lines{display:flex;flex-direction:column;gap:6px}
.rank-analysis-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:baseline;padding:9px 11px;border-radius:9px;border:1px solid var(--line);background:var(--surface)}
.rank-analysis-line b{font-size:13px;font-weight:800;min-width:0;overflow-wrap:anywhere}
.rank-analysis-line strong{font-size:14px;font-weight:800;font-variant-numeric:tabular-nums;text-align:right}
.rank-analysis-line small{grid-column:1/-1;color:var(--muted);font-size:12px;overflow-wrap:anywhere}
.rank-analysis-line.is-floor{border-left:4px solid var(--f-d)}
.rank-analysis-line.is-first{border-left:4px solid var(--a-d)}
.rank-analysis-line.is-ours{border-left:4px solid var(--n-d)}
.rank-analysis-line.is-rec{border-left:4px solid var(--o-d);background:var(--o-b)}
/* 2026-10-12 투찰 정밀분석의 두 안 비교(rankCompareHtml): 추천안(1위 확률 최대) · 하한가 근접안. */
.rank-compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;min-width:0}
.rank-compare-col{display:flex;flex-direction:column;gap:3px;min-width:0;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface)}
.rank-compare-col.is-rec{border-top:4px solid var(--o-d);background:var(--o-b)}
.rank-compare-col.is-near{border-top:4px solid var(--f-d)}
.rank-compare-kicker{color:var(--muted);font-size:11px;font-weight:800;overflow-wrap:anywhere}
.rank-compare-amount{font-size:16px;font-weight:800;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.rank-compare-col small{color:var(--muted);font-size:11px;line-height:1.4;overflow-wrap:anywhere}
.rank-compare-col dl{display:grid;gap:3px;margin:4px 0 2px}
.rank-compare-col dl div{display:flex;justify-content:space-between;align-items:baseline;gap:6px;min-width:0}
.rank-compare-col dt{color:var(--muted);font-size:12px;min-width:0}
.rank-compare-col dd{margin:0;font-size:14px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
@media (max-width:340px){.rank-compare{grid-template-columns:minmax(0,1fr)}}
.rank-window{margin:0;padding:8px 11px;border-radius:9px;background:var(--surface-2);font-size:12.5px;font-weight:700;overflow-wrap:anywhere}
.rank-analysis-ranking{display:flex;flex-direction:column;gap:3px;margin:0;padding:0;list-style:none}
.rank-analysis-ranking li{display:grid;grid-template-columns:3.2em minmax(0,1fr) auto;gap:8px;align-items:baseline;padding:6px 9px;border-radius:7px;background:var(--surface);border:1px solid var(--line);font-size:12.5px}
.rank-analysis-ranking li b{font-variant-numeric:tabular-nums}
.rank-analysis-ranking li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank-analysis-ranking li em{font-style:normal;font-variant-numeric:tabular-nums;color:var(--muted);text-align:right}
.rank-analysis-ranking li.is-ours{background:var(--n-b);border-color:var(--n-d)}
.rank-analysis-ranking li.is-loading{display:block;color:var(--muted)}
/* 휴대폰(세로 700px 이하 · 가로 높이 430px 이하): 페이지 간격(gap)이 이미 있으므로 성적표 상자의 위아래 16px 여백을 없앤다.
   아이폰 가로(844×390, 작업 영역 314px)에서 탭 막대가 더해지며 결과 화면이 23px 넘쳤다(verify-calendar-scroll). */
@media (max-width:700px), (max-height:430px) and (max-width:900px){
  [data-page="results"] .company-standing-panel{margin:0}
}
@media (max-height:430px){
  .result-tabs .detailtab,.rank-modes .detailtab,.week-stagebar .detailtab{min-height:28px;padding:2px 6px;font-size:12px}
}
@media (max-width:700px){
  .result-tabs,.rank-modes,.week-stagebar{max-width:none}
  .result-tabs .detailtab,.rank-modes .detailtab,.week-stagebar .detailtab{min-height:32px;padding:4px 6px}
  .rank-analysis{gap:6px}
  .rank-toolbar{flex-direction:column;align-items:stretch;gap:6px}
  .rank-panel > h3{display:none}
  .rank-card{gap:5px}
  .rank-card h4{font-size:13.5px}
  .rank-modes{flex:0 0 auto}
  .rank-company-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
  .rank-company-filters .fchip{justify-content:center;white-space:normal;word-break:keep-all;text-align:center;font-size:11px;padding:4px 6px}
  .rank-summary{font-size:12px;padding:7px 10px}
  .rank-card{padding:10px}
  .rank-bidno{margin-left:0;flex-basis:100%}
  .rank-rec{grid-template-columns:max-content minmax(0,1fr)}
  .rank-rec small{grid-column:1/-1}
  .rank-open{min-height:44px;font-size:14px}
  .rank-analysis-facts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rank-analysis-line{grid-template-columns:minmax(0,1fr)}
  .rank-analysis-line strong{text-align:left}
  .rank-analysis-ranking li{grid-template-columns:2.6em minmax(0,1fr)}
  .rank-analysis-ranking li em{grid-column:2/-1;text-align:left}
}
/* 2026-10-19 사장님 "왜 숫자가 한칸 내려쓰기 될까?": 달력 업체 버튼은 3등분 칸(약 80px)에서 띄어쓰기마다 줄을 바꿔
   숫자가 아래 줄로 떨어졌다. 버튼마다 이름과 숫자를 한 줄로 다 보이게 하고(줄임표 없음), 한 줄에 다 안 들어가면 버튼째
   다음 줄로 넘긴다("탭 자리들은 글이 충분히 나오게").
   데스크톱·휴대폰 규칙보다 뒤에 두어 둘 다에 적용한다(글자 크기는 화면별 규칙 그대로). */
.calendar-filter-stack .company-filters{display:flex;flex-wrap:wrap;align-items:stretch;gap:4px}
.calendar-filter-stack .company-filters .company-calendar-filter{display:flex;align-items:center;justify-content:center;gap:3px;flex:1 0 auto;min-width:auto;white-space:nowrap;overflow:visible}
.calendar-filter-stack .company-filters .chip-label{white-space:nowrap}
.calendar-filter-stack .company-filters .chip-count{flex:none;font-variant-numeric:tabular-nums}
/* 중간 폭(701~1199px)에서는 왼쪽 달력 칸이 약 500px 이라 업체 버튼 셋과 공법·출처 버튼을 옆으로 나란히 두면 이름이
   잘린다 — 위아래로 쌓아 업체 줄이 폭을 다 쓰게 한다. */
@media (min-width:701px) and (max-width:1199px){
  .calendar-filter-stack{grid-template-columns:minmax(0,1fr);grid-template-areas:"company" "method" "status"}
  .calendar-filter-stack .company-filters{border-right:0;border-bottom:1px solid var(--line)}
  .calendar-filter-stack .method-filters:empty{display:none}
}
/* 2026-10-19 맨 위 탭 줄: 넘칠 때만(fitTabLabels 가 .tabs-compact 를 붙인다) 짧은 이름으로 — 어떤 폭에서도 탭 글자가 잘리지 않는다. */
.tabs.tabs-compact .tab{font-size:0}
.tabs.tabs-compact .tab::after{content:attr(data-short-label);font-size:13px;line-height:1.2;white-space:nowrap}
/* 조달청 달력 출처 줄은 버튼 넷(전체·나라장터·씨마켓·누리장터). 아래 공통 규칙(flex·줄바꿈)이 실제 배치를 정하고, 격자로 보이는 환경에서도 빈 칸이 없게 넷으로 나눈다. */
[data-page="g2b-calendar"] .calendar-filter-stack .method-filters{grid-template-columns:repeat(4,minmax(0,1fr))}
/* 상태 버튼(전체·공고·현설·마감·입찰·개찰·낙찰…)도 같은 원칙: 칸을 9등분해 '입찰·개찰 108'의 숫자가 아래 줄로 떨어졌다(1280px).
   글자 길이대로 놓고 넘치면 버튼째 다음 줄로. */
.calendar-filter-stack .status-filters{display:flex;flex-wrap:wrap;gap:4px}
.calendar-filter-stack .status-filters .fchip{flex:1 0 auto;white-space:nowrap;word-break:normal}
/* 거르기 버튼 공통(달력 공법·출처, 오늘·목록 업체·출처, 목록 상태): 폭별 실측(1920·1280·1100·1024·768·375)에서 '공법+일반 333',
   목록 업체 '엠에스이앤지(주) 2248'이 두 줄이 되고 목록 상태 버튼은 가로 밀기 줄 밖으로 숨었다. 글자는 한 줄로 다 보이고,
   넘치면 버튼째 다음 줄로 넘긴다. */
.calendar-filter-stack .method-filters,.company-scope-filters,.today-source-filters,.list-filter-stack .status-filters{display:flex;flex-wrap:wrap;gap:4px;overflow:visible}
.calendar-filter-stack .method-filters .fchip,.company-scope-filters .fchip,.today-source-filters .fchip,.list-filter-stack .status-filters .fchip{flex:1 0 auto;white-space:nowrap;word-break:normal}
