/* 공통 기능 화면: 메뉴 배지, 알림, 직원 고르기, 대시보드, 캘린더, 예약, 결재, 근태 */

/* menu badges & bell */
.badge{margin-left:auto;min-width:19px;height:19px;padding:0 6px;border-radius:var(--r-pill);background:var(--badge);color:var(--on-solid);font-size:var(--fs-xs);font-weight:700;display:inline-grid;place-items:center;font-style:normal;line-height:1}
.tab .badge{margin-left:auto}
.side-btn.bell{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;font-size:var(--fs-sm);margin-bottom:8px}
.side-btn.bell svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.notifs{list-style:none;margin:0;padding:0;display:grid}
.notifs li button{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:start;width:100%;text-align:left;border:0;background:none;padding:10px 6px;border-top:1px solid var(--line)}
.notifs li:first-child button{border-top:0}
.notifs li button:hover{background:var(--surface-2)}
.notifs li.unread .nt b{color:var(--accent)}
.notifs .nt{display:grid;gap:1px;min-width:0}
.notifs .nt b{font-weight:600;font-size:var(--fs-sm)}
.notifs .nt span{font-size:var(--fs-sm);color:var(--muted)}
.notifs .nw{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap}
.ni{width:9px;height:9px;border-radius:50%;margin-top:6px;background:var(--off)}
.ni.notice{background:var(--accent)} .ni.approval{background:var(--warn)} .ni.event{background:var(--solid-event)} .ni.task{background:var(--ok)} .ni.chat{background:var(--solid-chat)} .ni.board{background:var(--solid-board)}

.page-head .acts{display:flex;gap:8px;flex-wrap:wrap}
.hint.pad{padding:14px 16px}
.link{border:0;background:none;color:var(--accent);font-size:var(--fs-sm);font-weight:600;padding:2px 4px}
.sub-h{font-size:var(--fs-xs);font-weight:700;color:var(--muted);padding:10px 16px 2px;border-top:1px solid var(--line)}
.f .dt{display:flex;gap:6px;min-width:0}
.f .dt>*{min-width:0;flex:1 1 0}
.f .dt input[type=time]{max-width:130px}
.kv{display:grid;grid-template-columns:96px 1fr;gap:8px 12px;margin:0;font-size:var(--fs-md)}
.kv dt{color:var(--muted);font-size:var(--fs-sm);font-weight:600;padding-top:2px}
.kv dd{margin:0;min-width:0;overflow-wrap:anywhere}
.kv a{color:var(--accent)}
.over{color:var(--danger)!important}

/* user picker */
.picker{display:grid;gap:6px}
.pk-chips{display:flex;flex-wrap:wrap;gap:6px;min-height:28px;align-items:center}
.pk-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 4px 3px 10px;border-radius:var(--r-pill);background:var(--accent-soft);color:var(--accent);font-size:var(--fs-sm);font-weight:600}
.pk-chip i{font-style:normal;background:var(--accent);color:var(--accent-fg);border-radius:var(--r-pill);min-width:18px;height:18px;display:inline-grid;place-items:center;font-size:var(--fs-xs);margin-left:-5px}
.pk-chip button{border:0;background:none;color:inherit;padding:0 6px;font-size:var(--fs-md);line-height:1;border-radius:var(--r-pill)}
.pk-chip button:hover{background:var(--surface)}
.pk-wrap{position:relative}
.pk-list{position:absolute;z-index:5;left:0;right:0;top:calc(100% + 4px);list-style:none;margin:0;padding:4px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-ctl);box-shadow:var(--shadow);max-height:240px;overflow:auto}
.pk-list li button{width:100%;text-align:left;border:0;background:none;padding:7px 10px;border-radius:var(--r-sm);font-size:var(--fs-sm)}
.pk-list li button:hover{background:var(--surface-2)}
.pk-list li.hint{padding:8px 10px}

/* dashboard */
.hello{padding-bottom:16px;border-bottom:1px solid var(--line)}
.hello h2{font-size:var(--fs-2xl);font-weight:700;letter-spacing:-.015em}
.hello p{margin:3px 0 0;color:var(--muted);font-size:var(--fs-sm)}
.dash{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;margin-top:18px;align-items:start}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-ctl);min-width:0;overflow:hidden}
/* 관리자 설정 › 서비스 설정 */
.adm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin-top:18px}
.adm-card{padding:18px 20px;display:grid;gap:8px;align-content:start}
.adm-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.adm-top h3{font-size:var(--fs-lg)}
.adm-card p{margin:0;color:var(--muted);font-size:var(--fs-sm);min-height:3em}
.adm-st{font-size:var(--fs-xs);font-weight:600;padding:2px 9px;border-radius:var(--r-pill);background:var(--off-soft);color:var(--off);white-space:nowrap}
.adm-st.on{background:var(--ok-soft);color:var(--ok)}
.card-h{display:flex;justify-content:space-between;align-items:center;padding:14px 14px 12px 18px;border-bottom:1px solid var(--line)}
.card-h h3{font-size:var(--fs-md);font-weight:700;color:var(--fg)}
.dl{list-style:none;margin:0;padding:4px 0}
.dl li button{display:grid;grid-template-columns:92px minmax(0,1fr);gap:10px;align-items:baseline;width:100%;text-align:left;border:0;background:none;padding:8px 16px}
.dl li button:hover{background:var(--surface-2)}
.dl-t{font-size:var(--fs-sm);color:var(--muted);white-space:nowrap}
.dl-m{display:flex;gap:6px;align-items:baseline;min-width:0;flex-wrap:wrap}
.dl-m>span:not(.tag):not(.src){overflow:hidden;text-overflow:ellipsis}
.dl-m small{color:var(--muted)}
.src{font-size:var(--fs-xs);font-weight:600;padding:1px 7px;border-radius:var(--r-sm);background:var(--surface-2);color:var(--muted);white-space:nowrap}
.src.personal,.src.event{background:var(--violet-soft);color:var(--violet)} .src.dept{background:var(--accent-soft);color:var(--accent)} .src.all{background:var(--warn-soft);color:var(--warn)}
.src.leave{background:var(--ok-soft);color:var(--ok)} .src.task,.src.project{background:var(--danger-soft);color:var(--danger)} .src.reservation{background:var(--resv-soft);color:var(--resv)}
.clock{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px 18px;align-items:center;padding:14px 16px}
.clock-now{font-size:var(--fs-display);font-weight:700;letter-spacing:-.03em}
.clock-rows{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:4px 14px;font-size:var(--fs-sm)}
.clock-rows>div{white-space:nowrap}
.clock-rows span{color:var(--muted);margin-right:6px}
.clock-btns{grid-column:1/-1;display:flex;gap:8px}
.clock-btns .btn{flex:1;padding:10px}

/* calendar */
.cal-nav{display:flex;align-items:center;gap:6px}
.cal-title{font-size:var(--fs-lg);min-width:110px;text-align:center}
.cal-nav input[type=date]{padding:5px 8px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface)}
.chip i.sw{display:inline-block;width:8px;height:8px;border-radius:var(--r-xs);margin-right:6px;background:currentColor}
.chip.k-personal{color:var(--violet)} .chip.k-dept{color:var(--accent)} .chip.k-all{color:var(--warn)} .chip.k-leave{color:var(--ok)} .chip.k-task{color:var(--danger)} .chip.k-reservation{color:var(--resv)}
.chip[class*=" k-"][aria-pressed="false"]{opacity:.45;text-decoration:line-through}
.chip[class*=" k-"][aria-pressed="true"]{background:var(--surface);border-color:currentColor}
.cal-wrap{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:16px;align-items:start}
.cal-main{overflow:hidden}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.cal-wd{font-size:var(--fs-xs);font-weight:700;color:var(--muted);text-align:center;padding:8px 0;background:var(--surface-2);border-bottom:1px solid var(--line)}
.cal-wd.sun,.cal-day.sun .cal-n{color:var(--danger)} .cal-wd.sat,.cal-day.sat .cal-n{color:var(--sat)}
.cal-day{display:flex;flex-direction:column;gap:2px;align-items:stretch;min-height:104px;padding:5px 5px 6px;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:none;text-align:left;min-width:0}
.cal-day:nth-child(7n){border-right:0}
.cal-day:hover{background:var(--surface-2)}
.cal-day.out{background:color-mix(in srgb,var(--surface-2) 45%,var(--surface))}
.cal-day.out .cal-n{opacity:.45}
.cal-day.sel{box-shadow:inset 0 0 0 2px var(--accent)}
.cal-n{font-size:var(--fs-sm);font-weight:600;font-family:var(--f-mono);width:24px;height:24px;display:grid;place-items:center;border-radius:50%}
.cal-day.today .cal-n{background:var(--accent);color:var(--accent-fg)!important}
.cal-items{display:grid;gap:2px;min-width:0}
.cal-it{font-size:var(--fs-xs);line-height:1.35;padding:1px 5px;border-radius:var(--r-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:var(--violet-soft);color:var(--violet)}
.cal-it i{font-style:normal;margin-right:4px;opacity:.8}
.cal-it.k-dept{background:var(--accent-soft);color:var(--accent)} .cal-it.k-all{background:var(--warn-soft);color:var(--warn)}
.cal-it.k-leave{background:var(--ok-soft);color:var(--ok)} .cal-it.k-task{background:var(--danger-soft);color:var(--danger)} .cal-it.k-reservation{background:var(--resv-soft);color:var(--resv)}
.cal-it.pend{outline:1px dashed currentColor;outline-offset:-1px}
.cal-more{font-size:var(--fs-xs);color:var(--muted);padding-left:5px}
.cal-side .dl li button{grid-template-columns:44px minmax(0,1fr)}
.att-list{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.att-list li{display:flex;justify-content:space-between;gap:8px}
.st2{font-size:var(--fs-xs);font-weight:600;padding:1px 8px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--muted)}
.st2.accepted{background:var(--ok-soft);color:var(--ok)} .st2.declined{background:var(--danger-soft);color:var(--danger)}

/* reservations */
.rv{overflow-x:auto}
.rv-row{display:grid;grid-template-columns:170px minmax(560px,1fr);border-bottom:1px solid var(--line);min-height:52px}
.rv-row:last-child{border-bottom:0}
.rv-head{min-height:30px;background:var(--surface-2)}
.rv-name{padding:8px 12px;display:grid;align-content:center;gap:1px;border-right:1px solid var(--line);min-width:0}
.rv-name b{font-size:var(--fs-sm)} .rv-name span{font-size:var(--fs-xs);color:var(--muted)}
.rv-hours{position:relative;font-size:var(--fs-xs);color:var(--muted);font-family:var(--f-mono)}
.rv-hours span{position:absolute;top:8px;transform:translateX(-50%)}
.rv-hours span:first-child{transform:none;margin-left:4px} .rv-hours span:last-child{transform:translateX(-100%);margin-left:-4px}
.rv-track{position:relative;cursor:copy;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(100%/15 - 1px),var(--line) calc(100%/15 - 1px),var(--line) calc(100%/15))}
.rv-track:hover{background-color:color-mix(in srgb,var(--accent-soft) 40%,transparent)}
.rv-bar{position:absolute;top:7px;bottom:7px;border:0;border-radius:var(--r-sm);background:var(--resv-soft);color:var(--resv);font-size:var(--fs-xs);text-align:left;padding:2px 7px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;line-height:1.5}
.rv-bar.mine{background:var(--accent);color:var(--accent-fg)}

.sel{padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface)}
.grid-form{display:grid;gap:14px}
.ni.leave{background:var(--ok)} .ni.reservation{background:var(--solid-resv)} .ni.doc{background:var(--solid-doc)}

/* approvals */
.ap-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:18px 0 12px}
.ap-line{display:flex;flex-wrap:wrap;gap:0;border:1px solid var(--line);border-radius:var(--r-ctl);overflow:hidden;background:var(--surface)}
.ap-step{display:grid;justify-items:center;gap:2px;padding:8px 12px;min-width:92px;border-right:1px solid var(--line);font-size:var(--fs-sm);text-align:center}
.ap-step:last-child{border-right:0}
.ap-step .k{font-size:var(--fs-xs);color:var(--muted);font-weight:600}
.ap-step b{font-size:var(--fs-sm)}
.ap-step .s{font-size:var(--fs-xs);font-weight:600;padding:1px 8px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--muted)}
.ap-step .s.approved{background:var(--ok-soft);color:var(--ok)} .ap-step .s.rejected{background:var(--danger-soft);color:var(--danger)} .ap-step .s.pending{background:var(--warn-soft);color:var(--warn)}
.ap-step .t{font-size:var(--fs-xs);color:var(--muted);font-family:var(--f-mono)}
.ap-st{font-size:var(--fs-xs);font-weight:600;padding:2px 9px;border-radius:var(--r-pill);white-space:nowrap}
.ap-st.pending{background:var(--warn-soft);color:var(--warn)} .ap-st.approved{background:var(--ok-soft);color:var(--ok)}
.ap-st.rejected{background:var(--danger-soft);color:var(--danger)} .ap-st.withdrawn{background:var(--off-soft);color:var(--off)}
.ap-comments{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.ap-comments li{padding:8px 12px;border-radius:var(--r-ctl);background:var(--surface-2);font-size:var(--fs-sm)}
.ap-comments li b{margin-right:6px}
.ap-comments li span{font-size:var(--fs-xs);color:var(--muted)}
.ap-items{width:100%}
.ap-items td,.ap-items th{padding:6px 8px}
.ap-items input{width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg)}
.ap-items tbody tr{cursor:default} .ap-items tbody tr:hover td{background:none}
.ap-total{text-align:right;font-weight:700;padding:6px 8px}

/* attendance */
.at-top{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin:18px 0}
.at-top .card{padding:14px 16px;display:grid;gap:2px}
.at-top .card span{font-size:var(--fs-xs);color:var(--muted);font-weight:600}
.at-top .card b{font-size:var(--fs-2xl);font-family:var(--f-mono);font-weight:500}
.at-top .card small{font-size:var(--fs-xs);color:var(--muted)}
.at-top .card b.t{font-size:var(--fs-xl);white-space:nowrap;padding:3px 0}
td.wk{color:var(--danger)} td.sat{color:var(--sat)} td.sun{color:var(--danger)}
.at-cols{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}
.at-table tr.static{cursor:default} .at-table tr.static:hover td{background:none}
.at-table tr.wk-row td{background:var(--surface-2);font-weight:600}
.at-table td.sub{color:var(--muted);font-size:var(--fs-sm);white-space:normal}
.lv-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:6px}
.lv-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:var(--fs-sm)}
.lv-row .btn{margin-left:auto}
.wk-bar{height:8px;border-radius:var(--r-pill);background:var(--surface-2);overflow:hidden;margin-top:6px}
.wk-bar i{display:block;height:100%;background:var(--accent)}
.wk-bar i.over{background:var(--danger)}

/* 직접 정한 색(개인 일정·예약)의 어두운 화면용 */

@media (max-width:760px){
  .cal-wrap,.at-cols{grid-template-columns:1fr}
  .cal-day{min-height:64px}
  .cal-it{font-size:0;padding:0;height:5px}
  .cal-it i{display:none}
  .rv-row{grid-template-columns:110px minmax(520px,1fr)}
  .kv{grid-template-columns:80px 1fr}
  .clock-now{font-size:var(--fs-3xl)}
}
.src.meeting,.cal-it.k-meeting{background:var(--meet-soft);color:var(--meet)}
/* 예약 창: 30분 단위 시간 선택, 사용 시간 빠른 선택 */
.f .dt .rv-time{min-width:0;padding:7px 10px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface)}
.rv-quick{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:-4px}
.rv-quick>span{font-size:var(--fs-sm);font-weight:600;color:var(--muted);margin-right:4px}
.rv-quick .chip{padding:5px 11px;font-size:var(--fs-sm)}
.rv-quick .chip:hover{border-color:var(--accent);color:var(--accent)}
/* 예약: 일·주·월 보기 */
.rv-chip{display:flex;gap:6px;align-items:baseline;width:100%;min-width:0;border:0;border-radius:var(--r-sm);padding:3px 7px;background:var(--resv-soft);color:var(--resv);font-size:var(--fs-xs);text-align:left;line-height:1.45;cursor:pointer}
.rv-chip b{font-weight:700;flex:none}
.rv-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.rv-chip.mine{background:var(--accent);color:var(--accent-fg)}
.rv-chip:hover{filter:brightness(.96)}
/* 주: 자원 × 7일 */
.rw{overflow-x:auto}
.rw-in{min-width:860px}
.rw-row{display:grid;grid-template-columns:170px repeat(7,minmax(96px,1fr));border-bottom:1px solid var(--line)}
.rw-row:last-child{border-bottom:0}
.rw-name{padding:10px 12px;display:grid;align-content:center;gap:1px;border-right:1px solid var(--line);min-width:0}
.rw-name b{font-size:var(--fs-sm)} .rw-name span{font-size:var(--fs-xs);color:var(--muted)}
.rw-head{background:var(--surface-2)}
.rw-day{display:flex;gap:6px;align-items:baseline;justify-content:center;border:0;background:none;padding:9px 4px;font-size:var(--fs-xs);color:var(--muted);border-left:1px solid var(--line)}
.rw-day b{font-size:var(--fs-lg);color:var(--fg)}
.rw-day:hover b{color:var(--accent)}
.rw-day.sun,.rw-day.sun b{color:var(--danger)} .rw-day.sat,.rw-day.sat b{color:var(--accent)}
.rw-day.today b{background:var(--accent);color:var(--accent-fg);border-radius:var(--r-pill);padding:0 7px}
.rw-cell{display:flex;flex-direction:column;gap:3px;padding:6px;min-height:64px;border-left:1px solid var(--line);cursor:copy;min-width:0}
.rw-cell:hover{background:color-mix(in srgb,var(--accent-soft) 45%,transparent)}
.rw-cell.today{background:color-mix(in srgb,var(--accent-soft) 35%,transparent)}
.rw-cell.past{cursor:default;background:repeating-linear-gradient(135deg,transparent 0 6px,color-mix(in srgb,var(--surface-2) 70%,transparent) 6px 7px)}
.rw-cell.past:hover{background-color:transparent}
.rw-cell .rv-chip{flex-direction:column;gap:0}
/* 월: 달력 */
.rm{overflow:hidden}
.rm-head{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));background:var(--surface-2);border-bottom:1px solid var(--line)}
.rm-head span{padding:8px;text-align:center;font-size:var(--fs-xs);font-weight:600;color:var(--muted)}
.rm-head .sun{color:var(--danger)} .rm-head .sat{color:var(--accent)}
.rm-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.rm-cell{min-height:118px;padding:6px;display:flex;flex-direction:column;gap:3px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);cursor:pointer;min-width:0}
.rm-cell:nth-child(7n){border-right:0}
.rm-cell:hover{background:color-mix(in srgb,var(--accent-soft) 40%,transparent)}
.rm-cell.out{background:var(--surface-2);cursor:default}
.rm-cell.out .rm-d{opacity:.4}
.rm-d{font-size:var(--fs-sm);font-weight:600;width:24px;height:24px;display:grid;place-items:center;border-radius:50%;margin-bottom:1px}
.rm-d.sun{color:var(--danger)} .rm-d.sat{color:var(--accent)}
.rm-cell.today .rm-d{background:var(--accent);color:var(--accent-fg)}
.rm-cell.past:not(.out) .rm-d{opacity:.6}
.rm-more{font-size:12px;font-weight:600;color:var(--muted);padding:1px 4px}
/* 달력이 좁을 때(휴대폰·태블릿): 칸이 좁아 글자가 넘치므로 예약은 점으로만 보여 주고, 날짜를 누르면 그날 시간표가 열린다 */
.rm{container-type:inline-size}
.rm .rv-chip{overflow:hidden}
.rm .rv-chip b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@container (max-width:620px){
  .rm-cell{min-height:64px;padding:4px;flex-flow:row wrap;align-content:flex-start;gap:3px}
  .rm-cell .rm-d{flex:none;margin:0 calc(100% - 24px) 2px 0}
  .rm-cell .rv-chip{width:7px;height:7px;flex:none;padding:0;border-radius:50%;font-size:0;background:var(--accent);opacity:.55;pointer-events:none}
  .rm-cell .rv-chip.mine{opacity:1}
  .rm-cell .rv-chip>*{display:none}
  .rm-more{font-size:12px;padding:0;line-height:7px;align-self:center}
  .rm-more-t{display:none}
}
@media (prefers-reduced-motion:no-preference){ .seg-b button,.rw-cell,.rm-cell{transition:background-color .12s,color .12s} }
/* 예약 종류 탭 (회의실·차량·장비): 페이지 제목 아래 크게 */
.rv-ktabs{display:flex;gap:4px;margin-top:14px;border-bottom:1px solid var(--line);overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.rv-ktabs::-webkit-scrollbar{display:none}
.rv-ktab{position:relative;display:inline-flex;align-items:center;gap:9px;border:0;background:none;padding:12px 18px 14px;font-size:var(--fs-lg);font-weight:700;color:var(--muted);white-space:nowrap;letter-spacing:-.01em}
.rv-ktab svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.rv-ktab b{font-size:var(--fs-xs);font-weight:700;min-width:22px;padding:1px 7px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--muted)}
.rv-ktab:hover{color:var(--fg)}
.rv-ktab::after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:3px;border-radius:3px 3px 0 0;background:transparent}
.rv-ktab[aria-selected="true"]{color:var(--fg)}
.rv-ktab[aria-selected="true"] svg{color:var(--accent)}
.rv-ktab[aria-selected="true"] b{background:var(--accent-soft);color:var(--accent)}
.rv-ktab[aria-selected="true"]::after{background:var(--accent)}
@media (prefers-reduced-motion:no-preference){ .rv-ktab{transition:color .15s} .rv-ktab::after{transition:background-color .15s} }
@media (max-width:560px){ .rv-ktab{flex:1;justify-content:center;padding:11px 8px 13px;font-size:var(--fs-lg)} }

/* 등록된 자원이 없는 종류 탭은 흐리게 */
.rv-ktab.zero:not([aria-selected="true"]) svg{opacity:.5}
/* 날짜 고르기: "2026년 11월 ▾" 버튼 하나 (안에 숨긴 date 입력이 창 위치를 잡는다) */
.rv-pick{position:relative;display:inline-flex;align-items:center;gap:4px;border:0;background:none;padding:6px 8px;margin-right:2px;border-radius:var(--r-ctl);color:var(--fg)}
.rv-pick:hover{background:var(--surface-2)}
.rv-pick .rv-range{font-size:var(--fs-xl);font-weight:700;letter-spacing:-.02em;white-space:nowrap}
.rv-pick svg{width:16px;height:16px;fill:none;stroke:var(--muted);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.rv-pick .rv-day{position:absolute;left:0;bottom:0;width:100%;height:0;padding:0;border:0;opacity:0;pointer-events:none}
@media (max-width:760px){ #view-reserve .page-head h2{display:none} #view-reserve .page-head{align-items:center} }

/* 대시보드: 내용이 없는 카드는 한 줄 요약으로 */
.dash{align-items:stretch}
.dash-quiet{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.dq{display:flex;align-items:center;gap:10px;min-height:52px;padding:0 16px;border:1px solid var(--card-line);border-radius:var(--r-card);background:var(--surface);box-shadow:var(--card-shadow);text-align:left}
.dq b{font-size:var(--fs-md);font-weight:700;white-space:nowrap}
.dq span{flex:1;min-width:0;color:var(--muted);font-size:var(--fs-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dq i{font-style:normal;color:var(--muted)}
.dq:hover{border-color:var(--line);background:var(--surface-2)}
/* 작은 링크도 손가락으로 누르기 쉽게 누르는 영역만 넓힌다 */
.card-h .link{position:relative}
.card-h .link::after{content:"";position:absolute;inset:-10px -8px}

/* 대시보드 인사말 아래 오늘 요약 */
.hello-sum{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.hello-sum>span:first-child::after{content:"·";margin-left:8px;color:var(--line)}
.hs{border:0;background:var(--accent-soft);color:var(--accent);font-weight:600;font-size:var(--fs-sm);padding:3px 10px;border-radius:var(--r-pill);min-height:26px}
.hs:hover{filter:brightness(.97)}
.hs-quiet{color:var(--muted)}

/* 예약: 작은 팝업 (빠른 예약 · 월 보기 날짜 목록) */
.rv-pop{position:fixed;z-index:60;width:300px;max-width:calc(100vw - 16px);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow);padding:14px}
@media (prefers-reduced-motion:no-preference){ .rv-pop{animation:rv-pop-in .14s var(--ease)} @keyframes rv-pop-in{from{opacity:0;transform:translateY(-4px)}} }
@media (max-width:560px){ .rv-pop{left:8px!important;right:8px;top:auto!important;bottom:max(8px,env(safe-area-inset-bottom,0px));width:auto;max-width:none;padding:16px} }
.qb{display:grid;gap:8px}
.qb-k{font-size:var(--fs-xs);font-weight:600;color:var(--muted)}
.qb-t{font-size:var(--fs-lg);font-weight:700;letter-spacing:-.01em}
.qb-in{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface-2)}
.qb-in:focus{background:var(--surface);border-color:var(--accent);outline:0;box-shadow:0 0 0 3px var(--accent-soft)}
.qb .err:empty{display:none}
.qb-f{display:flex;justify-content:flex-end;gap:6px;margin-top:2px}
.dp{display:grid;gap:10px}
.dp-h{display:flex;justify-content:space-between;align-items:center;gap:8px}
.dp-h b{font-size:var(--fs-lg)}
.dp-l{display:grid;gap:4px;max-height:240px;overflow:auto}
.dp-l .rv-chip{padding:6px 9px;font-size:var(--fs-sm)}
.dp-new{justify-self:stretch}
/* 끌어서 고르는 중인 시간 · 날짜 */
.rv-track{touch-action:pan-x pan-y;user-select:none}
.rv-ghost{position:absolute;top:7px;bottom:7px;border:1.5px dashed var(--accent);border-radius:var(--r-sm);background:color-mix(in srgb,var(--accent-soft) 70%,transparent);color:var(--accent);font-size:var(--fs-xs);font-weight:700;padding:2px 7px;white-space:nowrap;overflow:hidden;pointer-events:none}
.rw-cell[data-d]{user-select:none}
.rw-cell.sel{background:color-mix(in srgb,var(--accent-soft) 80%,transparent);box-shadow:inset 0 0 0 1.5px var(--accent)}
/* 빈 자원 찾기 */
.ff-q{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ff-q input[type=date]{padding:7px 9px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface)}
.ff-kinds{margin:12px 0 8px}
.ff-rows{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.ff-rows li{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--card-line);border-radius:var(--r-card)}
.ff-m{flex:1;min-width:0;display:grid}
.ff-m b{font-size:var(--fs-md)}
.ff-m span{font-size:var(--fs-xs);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ff-taken{margin-top:10px}

/* 접근성: 지난 날·다른 달 날짜는 투명도 대신 대비가 충분한 회색으로, 머리글 바탕은 흰색으로 (일요일 빨강 대비) */
.rm-cell.out .rm-d,.rm-cell.past:not(.today) .rm-d{opacity:1;color:var(--muted)}
.rm-head{background:var(--surface)}
.rm-cell[role=button]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.rv-chip{min-height:24px;align-items:center}
