:root{--ink:#1b2430;--sub:#5a6676;--line:#dfe4ea;--bg:#f5f7f9;--card:#fff;--pri:#0f6b5c;--pri2:#e5f2ef;--warn:#b5470b;--bad:#c62828;--ok:#1e7d32;--r:10px}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.65 "Pretendard","Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR","Noto Sans CJK KR",system-ui,sans-serif;word-break:keep-all;overflow-wrap:anywhere}
a{color:var(--pri)}
.wrap{max-width:1180px;margin:0 auto;padding:0 16px}
h1{font-size:1.6rem;line-height:1.35;margin:20px 0 10px}
h2{font-size:1.15rem;margin:0 0 12px}
.h3,h3{font-size:1.02rem;margin:18px 0 6px}
.top{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.top-in{display:flex;justify-content:space-between;align-items:center;height:56px;gap:12px}
.brand{font-weight:800;font-size:1.15rem;text-decoration:none;color:var(--ink);display:flex;align-items:center;gap:8px}
.logo{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:8px;background:var(--pri);color:#fff;font-size:.95rem}
.top-right{display:flex;align-items:center;gap:14px;font-size:.95rem}
.top-right a{text-decoration:none;color:var(--ink)}
.bell b{display:inline-block;min-width:20px;padding:0 6px;margin-left:4px;border-radius:10px;background:var(--bad);color:#fff;font-size:.78rem;text-align:center}
.nav{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;padding-bottom:0}
.nav a{white-space:nowrap;padding:10px 12px;text-decoration:none;color:var(--sub);border-bottom:3px solid transparent;font-weight:600}
.nav a.on,.nav a:hover{color:var(--pri);border-color:var(--pri)}
main{padding-bottom:40px;min-height:60vh}
.foot{color:var(--sub);font-size:.85rem;border-top:1px solid var(--line);padding:18px 16px 40px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin:0 0 16px}
.narrow{max-width:440px}
.lead{color:var(--sub);margin:0 0 16px}
.note{background:var(--pri2);padding:8px 12px;border-radius:8px}
.warn{background:#fff4e5;color:var(--warn);padding:8px 12px;border-radius:8px}
.muted{color:var(--sub)} .small{font-size:.88rem}
.src{font-size:.82rem;color:var(--sub);border-top:1px dashed var(--line);padding-top:8px;margin-top:12px}
.flash{padding:10px 14px;border-radius:8px;margin:14px 0;background:var(--pri2);color:#0b4d42}
.flash.err{background:#fdecea;color:var(--bad)}
label{display:block;font-weight:600;font-size:.92rem;margin:0 0 10px}
label small,legend small{font-weight:400;color:var(--sub)}
input,select,textarea{display:block;width:100%;margin-top:4px;padding:10px 12px;border:1px solid #c9d1da;border-radius:8px;font:inherit;font-weight:400;background:#fff;color:var(--ink);min-height:44px}
textarea{min-height:80px}
input:focus,select:focus,textarea:focus,button:focus-visible,a:focus-visible{outline:3px solid #8cc8bb;outline-offset:1px}
fieldset{border:1px solid var(--line);border-radius:8px;padding:8px 12px 4px;margin:0 0 10px}
legend{font-weight:600;font-size:.92rem;padding:0 4px}
.chk{display:inline-flex;align-items:center;gap:6px;font-weight:400;margin:4px 14px 6px 0;min-height:32px}
.chk input{width:18px;height:18px;min-height:0;margin:0}
.chk.standalone{margin-top:26px}
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 14px}
.span2{grid-column:span 2}.span3{grid-column:1/-1}
.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border-radius:8px;border:1px solid var(--pri);background:var(--pri);color:#fff;font:inherit;font-weight:700;text-decoration:none;cursor:pointer}
.btn.sm{min-height:38px;padding:0 12px;font-size:.9rem}
.btn.ghost{background:#fff;color:var(--pri)}
.btn.block{width:100%}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.danger{color:var(--bad)!important;border-color:var(--bad)!important}
.linkbtn{background:none;border:0;padding:4px 0;color:var(--pri);font:inherit;cursor:pointer;text-decoration:underline;text-align:left}
form.inline{display:inline}
.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin:6px 0 12px}
.toolbar p{margin:0}
.save-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.save-form input[name=name]{width:240px;margin:0}
.badge{display:inline-block;padding:1px 8px;border-radius:20px;font-size:.76rem;font-weight:700;margin-right:4px;background:#eef1f4;color:var(--sub);vertical-align:middle;white-space:nowrap}
.badge.test{background:#fff1c2;color:#7a5800}
.badge.real{background:#e3f1ff;color:#0b4f8a}
.badge.tag{background:#f0f0f0}
.badge.st-fix{background:#fde7d6;color:#9a3d00}
.badge.st-cancel{background:#fdecea;color:var(--bad)}
.badge.res{background:#e8e3ff;color:#4a35a8}
.badge.my{background:var(--pri);color:#fff}
.badge.dd{background:#e9f5ee;color:var(--ok)}
.badge.dd-hot{background:var(--bad);color:#fff}
.badge.dd-over{background:#e5e7ea;color:#77808c}
.kind{font-weight:700;font-size:.82rem;margin-right:6px}
.bulkbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.bulkbar select{width:auto;margin:0}
.nlist{list-style:none;padding:0;margin:0}
.nitem{display:grid;grid-template-columns:auto 1fr 360px;gap:12px;align-items:start;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px;margin-bottom:10px}
.nitem>input{width:20px;height:20px;min-height:0;margin:4px 0 0}
.nitem.viewed .ntitle{color:#6b4fa3}
.ntitle{font-weight:700;font-size:1.05rem;text-decoration:none;color:var(--ink);display:block;margin:4px 0 2px}
.ntitle:hover{text-decoration:underline}
.nsub{color:var(--sub);font-size:.88rem}
.nnum{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;margin:0;font-size:.88rem}
.nnum dt{color:var(--sub);font-size:.78rem}.nnum dd{margin:0;font-weight:600}
.empty{text-align:center;color:var(--sub);padding:30px}
.pager{display:flex;gap:4px;flex-wrap:wrap;justify-content:center;margin:16px 0}
.pager a,.pager b{min-width:40px;min-height:40px;display:grid;place-items:center;border:1px solid var(--line);border-radius:8px;background:#fff;text-decoration:none;padding:0 8px}
.pager b{background:var(--pri);color:#fff;border-color:var(--pri)}
.crumbs{font-size:.88rem;color:var(--sub);margin:14px 0 0}
.dhead h1{margin:6px 0}
.bidno{color:var(--sub);margin:0 0 10px}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.cols>.card{margin:0 0 16px}
.kv{width:100%;border-collapse:collapse;font-size:.93rem}
.kv th{width:22%;text-align:left;color:var(--sub);font-weight:600;padding:7px 6px;border-bottom:1px solid var(--line);vertical-align:top}
.kv td{padding:7px 6px;border-bottom:1px solid var(--line)}
.num{text-align:right;font-variant-numeric:tabular-nums}
.timeline{list-style:none;margin:0;padding:0}
.timeline li{display:flex;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line)}
.timeline li span{width:100px;color:var(--sub);font-size:.9rem}
.timeline li.past b{color:#8b949e;font-weight:500}
.statuses{display:flex;flex-wrap:wrap;gap:6px}
.pill{margin:0}.pill input{position:absolute;opacity:0;width:1px;height:1px}
.pill span{display:inline-flex;align-items:center;min-height:40px;padding:0 14px;border:1px solid #c9d1da;border-radius:20px;background:#fff;font-weight:600;cursor:pointer}
.pill input:checked+span{background:var(--pri);border-color:var(--pri);color:#fff}
.pill input:focus-visible+span{outline:3px solid #8cc8bb}
.files{padding-left:18px}
.prose{font-size:.95rem;max-height:420px;overflow:auto}
.rev{margin-bottom:12px}
table.mini{border-collapse:collapse;width:100%;font-size:.88rem;margin-top:6px}
.mini th,.mini td{border:1px solid var(--line);padding:6px;text-align:left}
.mini input{margin:0;min-height:38px}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.scroll>table.list{min-width:720px}
.scroll>table.mini{min-width:420px}
table.list{width:100%;border-collapse:collapse;background:#fff;font-size:.92rem}
.list th{background:#f0f3f6;text-align:left;padding:9px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.list td{padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.memo{max-width:220px;color:var(--sub)}
.prevnext{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:10px 0}
.admin-box{margin-top:12px;border-top:1px dashed var(--line);padding-top:10px}
.stats{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;margin:0 0 16px}
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:12px;text-decoration:none;color:var(--ink);display:flex;flex-direction:column}
.stat span{color:var(--sub);font-size:.85rem}.stat b{font-size:1.5rem}
.evlist{list-style:none;padding:0;margin:0}
.evlist li{padding:8px 0;border-bottom:1px solid var(--line)}
.plain{padding-left:18px}.plain li{margin:4px 0}
.alist{list-style:none;padding:0}
.alist li{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;padding:10px 12px;background:#fff;border:1px solid var(--line);border-radius:8px;margin-bottom:6px}
.alist li.unread{border-left:4px solid var(--pri)}
.alist li.read{opacity:.7}
.alist.compact li{border:0;padding:4px 0;border-bottom:1px solid var(--line);border-radius:0}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.tabs a{padding:8px 12px;border:1px solid var(--line);border-radius:20px;background:#fff;text-decoration:none;color:var(--ink);font-size:.92rem}
.tabs a.on{background:var(--pri);color:#fff;border-color:var(--pri)}
.cards{list-style:none;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--line);gap:1px;margin-bottom:20px}
.cal-h{background:#f0f3f6;text-align:center;padding:6px;font-weight:700;font-size:.88rem}
.cal-d{background:#fff;min-height:96px;padding:4px;font-size:.78rem;overflow:hidden}
.cal-d.empty{background:#fafbfc}
.cal-d.today{background:#f0faf7}
.dn{font-weight:700;display:block}
.ev{display:block;margin:2px 0;padding:2px 4px;border-radius:4px;background:#eef3f8;color:var(--ink);text-decoration:none;line-height:1.35}
.ev-bid_end{background:#fdecea}.ev-open_at{background:#e8e3ff}.ev-consortium_deadline,.ev-reg_deadline{background:#fff4e5}
.month{font-size:1.1rem}
.result{background:var(--pri2);border-radius:8px;padding:10px 14px;margin-top:12px}
.result p{margin:4px 0}.big{font-size:1.2rem}
.ok{color:var(--ok)}.bad{color:var(--bad)}
.landing .lead{font-size:1.05rem;color:var(--ink)}
code{background:#eef1f4;padding:1px 5px;border-radius:4px;font-size:.88em}
@media (max-width:900px){
  .nitem{grid-template-columns:auto 1fr}
  .nnum{grid-column:2}
  .stats{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media (max-width:680px){
  body{font-size:15px}
  h1{font-size:1.35rem}
  .grid{grid-template-columns:1fr 1fr}
  .span2,.span3{grid-column:1/-1}
  .cols,.cards{grid-template-columns:1fr}
  .stats{grid-template-columns:repeat(3,minmax(0,1fr))}
  .kv,.kv tbody{display:block}
  .kv tr{display:grid;grid-template-columns:7.5em 1fr}
  .kv th{width:auto}
  .kv td.num{text-align:left}
  .card{padding:14px}
  .cal-d{min-height:64px;font-size:.7rem}
  .cal .ev b{display:block}
  .cal .evt{display:none}
  .save-form input[name=name]{width:100%}
  .top-right{gap:10px;font-size:.88rem}
}
@media (max-width:420px){.grid{grid-template-columns:1fr}.chk.standalone{margin-top:0}}
/* ===== v7 대시보드·공통 디자인 ===== */
:root{--pri:#0d5c8f;--pri2:#e7f1f8;--ink:#17202b;--sub:#5b6776;--line:#e1e6ec;--bg:#f4f6f9}
body{font-size:15.5px;letter-spacing:-.005em}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:#fff;padding:6px 10px;z-index:20}
.top{box-shadow:0 1px 0 var(--line)}
.top-in{height:60px;gap:16px}
.logo{background:var(--pri)}
.gsearch{flex:1;max-width:520px;display:flex;border:1.5px solid var(--pri);border-radius:10px;overflow:hidden;background:#fff}
.gsearch input{border:0;margin:0;min-height:40px;border-radius:0}
.gsearch button{flex:0 0 auto;min-width:72px;white-space:nowrap;word-break:keep-all;border:0;background:var(--pri);color:#fff;padding:0 16px;font:inherit;font-weight:700;cursor:pointer}
.gsearch input{flex:1 1 auto;min-width:0}
.uname{font-weight:700}
.nav{gap:2px;align-items:center;overflow:visible;flex-wrap:nowrap}
.nav>a,.more-menu>summary{padding:11px 12px;font-size:.95rem}
.more-menu{position:relative}
.more-menu>summary{list-style:none;cursor:pointer;color:var(--sub);font-weight:600;border-bottom:3px solid transparent;white-space:nowrap}
.more-menu>summary::-webkit-details-marker{display:none}
.more-menu>summary::after{content:" ▾"}
.more-menu>summary.on{color:var(--pri);border-color:var(--pri)}
.more-menu>div{position:absolute;right:0;top:100%;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.08);padding:6px;min-width:180px;z-index:10;display:grid}
.more-menu>div a{padding:9px 12px;text-decoration:none;color:var(--ink);border-radius:6px}
.more-menu>div a:hover,.more-menu>div a.on{background:var(--pri2);color:var(--pri)}
.databar{margin:16px 0 12px;padding:10px 14px;border-radius:10px;font-size:.92rem;background:#eef6ee;color:#1e5a2a}
.databar.warn{background:#fff6e5;color:#7a4b00}
.databar span{margin-left:6px}
.kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-bottom:12px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:2px}
.kpi span{color:var(--sub);font-size:.85rem;font-weight:600}
.kpi b{font-size:1.7rem;font-variant-numeric:tabular-nums;line-height:1.2}
.kpi b.small{font-size:1.05rem;color:var(--pri)}
.kpi.hot b{color:#c62828}
.kpi.my{border-color:#bcd6ea}
.kpi:hover{border-color:var(--pri)}
.quick{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:12px}
.quick input,.quick select{margin:0;width:auto;flex:1 1 160px;min-height:42px}
.quick input[type=search]{flex:3 1 240px}
.chips{display:flex;gap:6px}
.chip input{position:absolute;opacity:0;width:1px;height:1px}
.chip span{display:inline-flex;align-items:center;min-height:38px;padding:0 12px;border:1px solid #c9d1da;border-radius:20px;background:#fff;font-weight:600;cursor:pointer}
.chip input:checked+span{background:var(--pri);color:#fff;border-color:var(--pri)}
.chip input:focus-visible+span{outline:3px solid #9cc3e0}
.dash{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:16px;align-items:start}
.list-card{overflow:hidden}
.list-card{padding:12px 0 6px}
.list-head{display:flex;justify-content:space-between;align-items:center;padding:0 14px 8px;border-bottom:1px solid var(--line)}
.list-head .tabs{margin:0}
.more{font-size:.9rem;font-weight:600;text-decoration:none}
.side .card{padding:14px}
.side h2{font-size:1rem;margin-bottom:8px}
.mini-list{list-style:none;padding:0;margin:0 0 6px}
.mini-list li{padding:7px 0;border-bottom:1px solid var(--line);font-size:.9rem;line-height:1.45}
.mini-list li a{display:block}
.mini-list .t{color:var(--sub);font-variant-numeric:tabular-nums;font-size:.84rem;margin-right:4px}
.mini-list small{display:block;color:var(--sub)}
.tools{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.tools h2{grid-column:1/-1}
.tools a{padding:8px 10px;border:1px solid var(--line);border-radius:8px;text-decoration:none;font-weight:600;font-size:.9rem;text-align:center}
.tools a:hover{border-color:var(--pri);background:var(--pri2)}
.help details{border-bottom:1px solid var(--line);padding:4px 0}
.help summary{cursor:pointer;list-style:none}
.help summary h3{display:inline;font-size:1rem}
.help summary::before{content:"＋ ";color:var(--pri)}
.help details[open] summary::before{content:"－ "}
.ntable{display:grid}
.nt-head,.nt-row{display:grid;grid-template-columns:96px minmax(260px,1fr) 84px 112px 140px;gap:10px;align-items:center;padding:10px 14px}
.ntable.sel .nt-head,.ntable.sel .nt-row{grid-template-columns:22px 96px minmax(260px,1fr) 84px 112px 140px}
.nt-dt small{display:block;color:var(--sub);font-size:.8rem}
.nt-dt .dl{display:block}
.nt-title{min-width:0}
.nt-title a{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:keep-all;overflow-wrap:anywhere}
.nt-title small,.nt-reg,.nt-reg small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nt-dt{white-space:nowrap}
.nt-amt b{white-space:nowrap}
.nt-st .badge{margin:0}
.nt-head{font-size:.8rem;color:var(--sub);font-weight:700;background:#f7f9fb;border-bottom:1px solid var(--line)}
.nt-head .r{text-align:right}
.nt-row{border-bottom:1px solid var(--line);font-size:.92rem}
.nt-row:hover{background:#f8fbfd}
.nt-row.closed{opacity:.6}
.nt-row input{width:18px;height:18px;min-height:0;margin:0}
.nt-st{display:flex;flex-wrap:wrap;gap:3px;align-items:center}
.nt-title a{font-weight:700;color:var(--ink);text-decoration:none;display:block;line-height:1.4}
.nt-title a:hover{color:var(--pri);text-decoration:underline}
.nt-row.viewed .nt-title a{color:#6b4fa3}
.nt-title small,.nt-reg small,.nt-amt small{display:block;color:var(--sub);font-size:.8rem}
.nt-amt{text-align:right;font-variant-numeric:tabular-nums}
.nt-dt{font-variant-numeric:tabular-nums;font-size:.88rem}
.kind{display:inline-block;padding:1px 7px;border-radius:5px;font-size:.76rem;font-weight:800;margin:0;background:#eef1f4}
.k-공사{background:#e3eefb;color:#0d4f8a}.k-용역{background:#e8f6ec;color:#1d6b33}.k-물품{background:#fdf0e1;color:#8a4b0d}.k-매각{background:#f1e8fb;color:#5b2d8a}
.badge.real{background:#e3f1ff;color:#0b4f8a}
.adv{margin-top:6px}
.adv>summary{cursor:pointer;font-weight:700;color:var(--pri);padding:6px 0}
@media (max-width:1240px){.dash{grid-template-columns:1fr}}
@media (max-width:1100px){.kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){
  .gsearch{display:none}
  .nav{overflow-x:auto;scrollbar-width:none}
  .more-menu>div{position:fixed;right:8px;left:8px;top:112px}
  .nt-head{display:none}
  .nt-row,.ntable.sel .nt-row{grid-template-columns:1fr auto;grid-template-areas:"st st" "ti ti" "rg amt" "dt dt";gap:4px 10px;padding:12px 14px}
  .ntable.sel .nt-row{grid-template-columns:24px 1fr auto;grid-template-areas:"ck st st" "ck ti ti" "ck rg amt" "ck dt dt"}
  .ntable.sel .nt-row>span:first-child{grid-area:ck;align-self:start;padding-top:2px}
  .nt-title a{-webkit-line-clamp:3}
  .nt-st{grid-area:st}.nt-title{grid-area:ti}.nt-reg{grid-area:rg}.nt-amt{grid-area:amt}
  .nt-row .nt-dt{grid-area:dt;display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
  .nt-row .nt-dt .dl::before{content:"마감 ";color:var(--sub);font-size:.78rem}
}
@media (max-width:680px){.kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.kpi{padding:10px}.kpi b{font-size:1.35rem}.quick .chips{order:3;width:100%}.top-right .uname{display:none}}
