/* Rooms — Deal Room 의 디자인 토큰을 그대로 쓴다 */
:root{--bg:#FAF9F5;--card:#FFFFFF;--tint:#FBF7F3;--ink:#141413;--ink2:#6C6B66;--ink3:#A3A29C;
  --line:#EAE7E0;--line-soft:#F3F0EA;--accent:#D97757;--accent-bg:#FBEFE9;
  --ok:#2E7D57;--ok-bg:#E6F2EB;--warn:#B8791A;--warn-bg:#FBF1DC;--bad:#B4432E;--bad-bg:#F9E5E0;
  --salt:#1E8E5A;--salt-bg:#E3F3EA;--green:#2C8C7A;--green-bg:#E2F1EE;--motion:#D08A2B;--motion-bg:#FBEEDC;
  --port:#5B6F8C;--port-bg:#E8EDF4;--work:#4D94FF;--per:#C8352B;--meal:#8A7BD8;--hol:#B4432E;
  --sans:-apple-system,"Segoe UI Variable Text","Segoe UI","Pretendard","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;
  --mono:ui-monospace,Consolas,monospace;--rail:212px}
@media (prefers-color-scheme:dark){:root{--work:#7FB3FF;--per:#F07167;--bg:#1F1E1C;--card:#262624;--tint:#2C2B28;--ink:#F0EEE6;--ink2:#A9A79F;--ink3:#7A7871;
  --line:#35342F;--line-soft:#2E2D29;--accent:#E08B6D;--accent-bg:#332621;--ok:#7FC29B;--ok-bg:#1F3328;--warn:#E0B15C;--warn-bg:#3A2F1A;
  --bad:#E48A76;--bad-bg:#3A2320;--salt:#7CCB9F;--salt-bg:#1E3328;--green:#7CC5B8;--green-bg:#1C322F;--motion:#E8B36A;--motion-bg:#3A2D19;
  --port:#A9B8CF;--port-bg:#2A3140}}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14.5px;line-height:1.55;-webkit-font-smoothing:antialiased;word-break:keep-all}
a{color:inherit;text-decoration:none}
button{font:inherit}
.app{display:grid;grid-template-columns:var(--rail) minmax(0,1fr);height:100vh}

/* ── 레일 ── */
.rail{background:var(--card);border-right:1px solid var(--line);padding:18px 12px 16px;display:flex;flex-direction:column;gap:2px;height:100vh;overflow:auto}
.rail .logo{font-weight:700;letter-spacing:.16em;font-size:12px;color:var(--ink3);padding:6px 12px 14px}
.rail .tab{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:10px;color:var(--ink2);font-size:14.5px;transition:background .12s}
.rail .tab:hover{background:var(--tint)}
.rail .tab.on{background:var(--accent-bg);color:var(--accent);font-weight:600}
.rail .tab small{margin-left:auto;font-size:11px;color:var(--ink3);font-variant-numeric:tabular-nums}
.rail .tab .ic{flex:0 0 20px;width:20px;text-align:center;font-size:15px;line-height:1;font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",sans-serif}   /* 탭마다 아이콘 (2026-10-01 지시) */
.rail .subs{display:flex;flex-direction:column;padding:2px 12px 8px 26px;font-size:12.5px;color:var(--ink3);line-height:1.8}
.rail-top{display:flex;align-items:center;justify-content:space-between;padding-right:4px}
.rail-fold,.rail-open{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--ink3);border-radius:8px;font-size:13px;line-height:1.4;padding:1px 8px;cursor:pointer}
.rail-fold:hover,.rail-open:hover{color:var(--ink);background:var(--tint)}
.rail-open{position:fixed;left:10px;top:10px;z-index:70}
.app.rail-off{grid-template-columns:minmax(0,1fr)}.app.rail-off .rail{display:none}.app.rail-off main{grid-column:1}
.app.rail-off .strip-bar{padding-left:52px}.app.rail-off .room-head{padding-left:16px}
.rail .subs a:hover{color:var(--ink)}
.rail .subs a.on{color:var(--accent)}
.rail .foot{margin-top:auto;padding:12px 12px 0;font-size:11.5px;color:var(--ink3);border-top:1px solid var(--line-soft);line-height:1.8}
kbd{font-size:10.5px;border:1px solid var(--line);border-radius:5px;padding:0 5px;background:var(--tint);color:var(--ink2)}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--ok);margin-right:4px;vertical-align:middle}
.dot.off{background:var(--bad)}

/* ── 본문 ── */
main{height:100vh;overflow:auto;min-width:0}
.room{display:none;padding:28px 32px 60px;max-width:1360px}
.room.on{display:block}
.room.room-frame{display:none;padding:0;max-width:none;height:100vh;flex-direction:column}
.room.room-frame.on{display:flex}
.room-frame iframe{flex:1;width:100%;border:0;background:var(--bg)}
.strip-bar{display:flex;align-items:center;gap:12px;padding:10px 18px;border-bottom:1px solid var(--line);background:var(--card);flex-wrap:wrap}
.strip-bar .lbl{font-size:11.5px;letter-spacing:.14em;color:var(--ink3);font-weight:700}
.strip-bar .btn{margin-left:auto}
.strip-note{font-size:12.5px;color:var(--ink3)}
.strip{display:flex;gap:6px;flex-wrap:wrap;align-items:center;min-width:0}
.strip .lbl2{font-size:10.5px;color:var(--ink3);letter-spacing:.1em;margin:0 2px 0 6px}
.room-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}
.mark{font-size:11.5px;letter-spacing:.16em;color:var(--ink3);font-weight:600}
h1{font-size:28px;line-height:1.15;font-weight:600;letter-spacing:-.025em;margin:6px 0 0}
h1 em{font-style:normal;color:var(--accent)}
.line{color:var(--ink2);margin:6px 0 0;font-size:14px}
.head-right{display:flex;align-items:center;gap:10px}
.stamp{font-size:12px;color:var(--ink3)}
.btn{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--ink2);border-radius:999px;padding:5px 12px;font-size:12.5px;cursor:pointer;white-space:nowrap}
.btn:hover{color:var(--accent);border-color:var(--accent)}
.btn.acc{color:var(--accent);border-color:var(--accent)}
.btn.sm{padding:2px 9px;font-size:11.5px}
.subtabs{display:flex;gap:6px}
.subtabs a{padding:6px 14px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink2);font-size:13px}
.subtabs a.on{background:var(--accent-bg);color:var(--accent);border-color:transparent;font-weight:600}
.sub{display:none}
.sub.on{display:block}
.sub.sub-frame{height:calc(100vh - 120px)}
.sub.sub-frame iframe{width:100%;height:100%;border:1px solid var(--line);border-radius:14px;background:var(--bg)}
.frame-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 10px;font-size:13px;min-height:30px}
.frame-bar .sp{flex:1}
#study-all iframe{height:calc(100% - 46px)}
.auth-code{display:inline-flex;align-items:center;gap:8px;background:var(--accent-bg);color:var(--ink);border:1px solid var(--accent);border-radius:12px;padding:4px 12px;font-size:13px}
.auth-code b{font-size:24px;line-height:1;color:var(--accent);letter-spacing:.06em;font-variant-numeric:tabular-nums}
.auth-code small{color:var(--ink3)}

/* ── 카드 ── */
.grid6{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.card.wide{grid-column:1/-1}
.appt-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.appt-col h6{margin:0 0 4px;font-size:12.5px;font-weight:700;color:var(--ink2)}
/* 날짜 · D-n · 구분 · 제목 — 네 열을 목록 전체가 한 격자로 나눠 쓴다(subgrid). 열 폭은 가장 긴 글자에 맞추고 열 사이는 모두 같은 12px */
.appt-col{display:grid;grid-template-columns:max-content max-content max-content minmax(0,1fr);column-gap:12px;align-content:start}.appt-col>h6,.appt-col>.empty{grid-column:1/-1}
.appt-col .row{grid-column:1/-1;display:grid;grid-template-columns:subgrid;column-gap:12px;align-items:center}
.appt-col .row .t{white-space:nowrap;min-width:0}.appt-col .row .dd{color:var(--ink3);font-size:12.5px;font-variant-numeric:tabular-nums;white-space:nowrap}.appt-col .row .chip{justify-self:start}.appt-col .row.click{cursor:pointer}.appt-col .row.click:hover{background:var(--tint)}
@media (max-width:1100px){.appt-cols{grid-template-columns:1fr}}.card .note{margin:8px 0 0;font-size:11.5px;color:var(--ink3)}
.two{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:14px}
.three{display:grid;grid-template-columns:220px minmax(0,1fr) minmax(0,.9fr);gap:14px}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px 18px;min-width:0}
.card.hi{border-color:var(--accent)}
.card h5{margin:0 0 8px;font-size:11.5px;letter-spacing:.12em;color:var(--ink3);font-weight:600;display:flex;align-items:center;gap:8px}
.card h5 span{margin-left:auto;font-weight:500;letter-spacing:0;font-variant-numeric:tabular-nums;color:var(--ink3)}
.card h6{margin:14px 0 6px;font-size:11.5px;letter-spacing:.1em;color:var(--ink3);font-weight:600}
.card h6:first-child{margin-top:0}
.row{display:flex;gap:8px;align-items:center;padding:7px 0;border-top:1px solid var(--line-soft);min-width:0}
.row:first-child{border-top:0}
.row .t{color:var(--ink3);font-variant-numeric:tabular-nums;min-width:42px;font-size:12.5px}
.row .x{flex:1;min-width:0;overflow-wrap:break-word}
.row .x b{font-weight:600}
.row .m{color:var(--ink3);font-size:11.5px;white-space:nowrap}
.row.dim{color:var(--ink3)}
.row.next{background:var(--accent-bg);margin:0 -8px;padding:7px 8px;border-radius:9px;border-top:0}
.row.past{color:var(--ink3)}
.row.click{cursor:pointer}
.row.click:hover .x{color:var(--accent)}
.row.sel{background:var(--tint);margin:0 -8px;padding:7px 8px;border-radius:9px}
.chip{display:inline-block;font-size:10.5px;border-radius:999px;padding:0 7px;border:1px solid var(--line);background:var(--tint);color:var(--ink2);white-space:nowrap;line-height:1.7;vertical-align:middle}
.chip.acc{color:var(--accent);border-color:transparent;background:var(--accent-bg)}
.chip.salt{color:var(--salt);background:var(--salt-bg);border-color:transparent}
.chip.green{color:var(--green);background:var(--green-bg);border-color:transparent}
.chip.motion{color:var(--motion);background:var(--motion-bg);border-color:transparent}
.chip.port{color:var(--port);background:var(--port-bg);border-color:transparent}
.chip.ok{color:var(--ok);background:var(--ok-bg);border-color:transparent}
.chip.warn{color:var(--warn);background:var(--warn-bg);border-color:transparent}
.chip.bad{color:var(--bad);background:var(--bad-bg);border-color:transparent}
.chip.btn-chip{cursor:pointer}
.chip.btn-chip:hover{border-color:var(--accent);color:var(--accent)}
.box{width:15px;height:15px;border:1.5px solid var(--ink3);border-radius:4px;flex:0 0 auto;cursor:pointer;background:transparent;padding:0}
.box.done{background:var(--ok);border-color:var(--ok)}
.grade{font-weight:700;color:var(--accent);font-size:13px;min-width:14px}
.quick{width:100%;margin-top:10px;border:1px solid var(--line);border-radius:10px;padding:8px 11px;font:inherit;font-size:13px;color:var(--ink);background:var(--bg)}
.quick::placeholder{color:var(--ink3)}
.quick:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}
.empty{color:var(--ink3);font-size:13.5px;padding:8px 0}
.foot-note{font-size:12.5px;color:var(--ink3);margin:18px 0 0}
.plan{white-space:pre-wrap;font-size:12.5px;color:var(--ink2);margin:4px 0 0;line-height:1.5}
.memo{white-space:pre-wrap;font-size:13px;color:var(--ink2);background:var(--tint);border-radius:10px;padding:10px 12px;margin:8px 0}
.kv{display:grid;grid-template-columns:72px 1fr;gap:4px 10px;font-size:13px;margin:8px 0}
.kv .k{color:var(--ink3)}
.person-h{font-size:19px;font-weight:600;letter-spacing:-.01em;margin:0}
.person-h small{font-size:13px;color:var(--ink3);font-weight:500;margin-left:8px}
.actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}

/* ── 메일 ── */
.folder{display:flex;align-items:center;gap:7px;padding:6px 9px;border-radius:9px;color:var(--ink2);cursor:pointer;font-size:13.5px}
.folder:hover{background:var(--tint)}
.folder.on{background:var(--tint);color:var(--ink);font-weight:600}
.folder small{margin-left:auto;color:var(--ink3);font-size:11.5px;font-variant-numeric:tabular-nums}
.folder .d{width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:var(--ink3)}
.mail-row{display:block;padding:9px 0;border-top:1px solid var(--line-soft);cursor:pointer}
.mail-row:first-child{border-top:0}
.mail-row .sj{font-weight:600;font-size:13.5px;display:flex;gap:6px;align-items:baseline}
.mail-row .sj .u{width:7px;height:7px;border-radius:50%;background:var(--accent);flex:0 0 auto;transform:translateY(-1px)}
.mail-row .meta{font-size:12px;color:var(--ink3);margin-top:2px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.mail-row:hover .sj{color:var(--accent)}
.mail-row.sel{background:var(--tint);margin:0 -10px;padding:9px 10px;border-radius:10px;border-top:0}
.msg{border-top:1px solid var(--line-soft);padding:9px 0}
.msg:first-of-type{border-top:0}
.msg .h{font-size:12px;color:var(--ink3);display:flex;gap:8px}
.msg .h b{color:var(--ink2);font-weight:600}
.msg p{margin:4px 0 0;font-size:13px;color:var(--ink2)}
.read-sj{font-size:16px;font-weight:600;letter-spacing:-.01em;margin:0 0 8px}

/* ── 캘린더 ── */
.cal-bar{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.cal-title{font-weight:600;font-size:15px}
.legend{margin-left:auto;font-size:12px;color:var(--ink3);display:flex;gap:10px;align-items:center}
.legend .d,.ev .d{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:4px;background:var(--work);flex:0 0 7px;min-width:7px}
.ev .d{align-self:flex-start;margin-top:5px}
.d.work{background:var(--work)}.d.personal{background:var(--per)}.d.meal{background:var(--meal)}.d.holiday{background:var(--hol)}
#mail-grid{margin-bottom:14px}
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
/* 주 보기 격자: 요일마다 같은 시각이 같은 층에 선다 */
.wgrid{display:grid;grid-template-columns:46px repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--card)}   /* 바깥 테두리만 둥글게, 안쪽 칸은 직선 */
#cal-card{background:transparent;border:0;box-shadow:none;padding:0}   /* 격자가 곧 캘린더 — 상자 안 상자를 두지 않는다 */
.wgrid .lbl.hl,.wgrid .day.head.hl{background:#E4DED2;color:var(--ink)}.wgrid .cell:hover{background:#EEE8DC}
/* 알약(다운로드·인쇄) — 전 방 공통, Screen 과 같은 모양 */
.fab{position:fixed;right:20px;bottom:20px;z-index:60;display:flex;align-items:center;gap:2px;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:4px;box-shadow:0 8px 24px rgba(20,20,19,.14)}
.fab button{appearance:none;border:0;background:none;font:inherit;font-size:13px;color:var(--ink2);border-radius:999px;padding:8px 14px;cursor:pointer;display:flex;align-items:center;gap:7px;white-space:nowrap}
.fab button:hover{background:var(--tint);color:var(--ink)}.fab svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.fab[hidden]{display:none}
@media print{.rail,.rail-open,.fab,.foot,.cal-bar,.toast{display:none!important}.app{display:block}main{height:auto;overflow:visible}.room.on{padding:0}}
/* 메일 도구 줄 — 답장 묶음 · 정리 묶음 */
.mail-tools{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:12px;padding-top:10px;border-top:1px solid var(--line-soft)}
.mail-tools .sep{width:1px;height:18px;background:var(--line);margin:0 4px}
.msg .h{cursor:pointer;user-select:none}.msg.collapsed .body,.msg.collapsed > p{display:none}.msg.collapsed .h .snip{display:inline}.msg .h .snip{display:none;color:var(--ink3);font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}
.msg .h .car{color:var(--ink3);font-size:11px;margin-left:auto}
.thread-bar{display:flex;align-items:center;gap:8px;margin:4px 0 6px}.thread-bar .btn{margin-left:auto}
/* 라벨 고르기 — 검색 + 목록 */
.lpop{margin:8px 0;border:1px solid var(--line);border-radius:12px;background:var(--card);box-shadow:0 8px 24px rgba(20,20,19,.10);max-width:360px;overflow:hidden}
.lpop .srch{display:block;width:100%;border:0;border-bottom:1px solid var(--line-soft);padding:9px 12px;font:inherit;font-size:13px;background:var(--tint);outline:none}
.lpop .list{max-height:260px;overflow:auto}.lpop .it{display:flex;align-items:center;gap:8px;padding:7px 12px;font-size:13px;cursor:pointer;border:0;background:none;width:100%;text-align:left;font-family:inherit;color:var(--ink)}
.lpop .it:hover{background:var(--tint)}.lpop .it .d{width:8px;height:8px;border-radius:50%;background:var(--port);flex:0 0 8px}.lpop .it.on{font-weight:600}
.lpop .ft{display:flex;gap:6px;padding:8px 10px;border-top:1px solid var(--line-soft);background:var(--tint)}.lpop .ft input{flex:1;border:1px solid var(--line);border-radius:8px;padding:6px 9px;font:inherit;font-size:13px}
.files{font-size:12px;color:var(--ink2);margin-top:4px}.files span{display:inline-block;margin-right:8px}
.wgrid .wc{border-bottom:1px solid var(--line-soft);border-right:1px solid var(--line-soft);padding:4px 6px;min-height:34px;min-width:0}
.wgrid .wc:nth-child(8n){border-right:0}
.wgrid .corner,.wgrid .lbl{background:var(--tint);font-size:11px;color:var(--ink3);text-align:right;padding-right:8px;font-variant-numeric:tabular-nums}
.wgrid .day.head{background:var(--tint);padding:8px 8px 6px;cursor:cell;border-radius:0;border-top:0;border-left:0;border-color:var(--line-soft);min-height:0}
.wgrid .day.head.today{border-color:var(--line-soft)}.wgrid .day.head h6{margin:0;font-size:13px;font-weight:600;display:flex;gap:6px;align-items:baseline;flex-wrap:wrap;color:var(--ink)}
.wgrid .day.head h6 small{color:var(--ink3);font-weight:500}.wgrid .day.head.sun h6{color:#B4432E}.wgrid .day.head.sat h6{color:#4D94FF}
.wgrid .cell[data-hour="all"]{background:#F6F1E6}.wgrid .lbl[data-hour="all"]{background:#EFE8DA}   /* 종일 줄은 살짝 다른 색 */
.wgrid .cell[data-hour="all"].today{background:#F8EEDC}
/* 중요 할일 — 줄 전체를 빨갛게 */
/* 중요 단추는 체크박스와 같은 크기(15px)·같은 모양(둥근 네모 4px)·같은 선 굵기 — 나란한 조작 단추는 한 벌로 맞춘다 (2026-09-29) */
.imp-btn{appearance:none;flex:0 0 auto;box-sizing:border-box;width:15px;height:15px;border-radius:4px;border:1.5px solid var(--ink3);background:transparent;color:var(--ink3);font:700 10px/1 system-ui,sans-serif;cursor:pointer;padding:0;margin:0 2px 0 0;opacity:.45;display:inline-flex;align-items:center;justify-content:center}
.row:hover .imp-btn{opacity:1}.imp-btn:hover{border-color:#C8352B;color:#C8352B}
.imp-btn.on{opacity:1;background:#C8352B;border-color:#C8352B;color:#fff}
.row.todo-imp{background:#FBE9E6;padding-left:10px;padding-right:10px}   /* 체크박스가 바탕 끝에 붙지 않게 안쪽 여백 · 구분선은 직선 */
.bucket .row,#c-todo .row{padding-left:10px;padding-right:10px;border-radius:0}   /* 모든 할일 줄을 같은 여백으로 — 중요 줄과 글자 줄이 맞게 */
/* Task 방 구간 — 끌어다 놓기 */
.bucket{border:1px dashed transparent;border-radius:10px;padding:2px 6px 6px;margin:6px -6px 4px;transition:background .12s,border-color .12s}
.bucket.over{border-color:#D97757;background:#FBF3EE}
.bucket h6{display:flex;gap:8px;align-items:baseline}.bucket h6 .m{font-weight:400}
.bk{font-size:12px;font-weight:700;letter-spacing:.02em;padding:1px 8px;border-radius:10px}
.bk-urgent{background:#FBE0DC;color:#B4432E}.bk-soon{background:#FDF1CF;color:#8A6412}.bk-later{background:#ECE8E1;color:#6B655C}
.bucket .row[draggable=true]{cursor:grab}.bucket .row.dragging{opacity:.4}
.bucket .drop-hint{font-size:12px;padding:8px 0}
.bucket .bucket-add{margin:6px 0 2px}   /* '.imp' 는 뉴스 중요도 글자 스타일이라 이름을 따로 쓴다 */
h5 .undo-btn{margin-left:8px;text-transform:none;letter-spacing:0;font-weight:500}   /* 중요는 바탕색만 — 선·글자 모양은 그대로 (2026-09-29) */
.span-n{font-size:10.5px;color:var(--ink3);font-weight:500;margin-left:2px;white-space:nowrap}
.wgrid .day.head.today,.wgrid .cell.today:not([data-hour="all"]){background:#FFFBF3}.wgrid .day.head.today{box-shadow:inset 0 -2px 0 var(--accent)}
.wgrid .day.head.hl,.wgrid .day.head.today.hl,.wgrid .lbl.hl{background:#E4DED2;color:var(--ink)}.wgrid .cell:hover,.wgrid .cell.today:hover{background:#EEE8DC}   /* 오늘 열도 마우스를 올리면 진해진다 */
.wgrid .day.head.out{opacity:.55}
.wgrid .cell{cursor:cell}.wgrid .cell:hover{background:var(--tint)}
.wgrid .ev{display:block;padding:3px 4px;margin:1px -2px;border-radius:6px}.wgrid .ev .ev-h{display:flex;gap:5px;align-items:baseline}.wgrid .ev .ev-h .d{margin-top:0;align-self:center}
.wgrid .ev .ev-t{margin-left:12px;color:var(--ink);line-height:1.35;word-break:keep-all;overflow-wrap:anywhere;font-size:12px}.wgrid .ev .ev-h .ev-t{margin-left:0}
.wgrid .ev .ev-l{margin-left:12px;font-size:11px;color:var(--ink3);line-height:1.3}
.wgrid .ev.lunch{background:#FFF3C4}.wgrid .ev.dinner{background:#FFE0CC}.wgrid .ev.click{cursor:pointer}.wgrid .ev.click:hover{filter:brightness(.97)}
.modal label .wd{font-weight:700;color:var(--ink2);margin-left:4px}
.appt-col .row.soon .x,.appt-col .row.soon .t,.appt-col .row.soon .dd,.appt-col .row.soon .chip{color:#B4432E;font-weight:600}.appt-col .row.soon .chip{border-color:rgba(180,67,46,.35)}
.day{background:var(--tint);border:1px solid var(--line-soft);border-radius:12px;padding:10px 11px;min-height:150px}
.day.today{border-color:var(--accent);background:var(--card)}
.day.off{opacity:.75}
.day h6{margin:0 0 6px;font-size:13px;font-weight:600;display:flex;gap:6px;align-items:baseline;letter-spacing:0;color:var(--ink)}
.day h6 small{color:var(--ink3);font-weight:500}
.ev{font-size:12px;padding:3px 0;color:var(--ink2);line-height:1.4;display:flex;gap:5px;align-items:baseline}
.ev b{font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.ev a:hover{color:var(--accent)}
.ev.click{cursor:pointer;border-radius:6px;margin:0 -4px;padding:3px 4px}.ev.click:hover{background:var(--card)}
.ev.hol{color:#B4432E}.ev .m{color:var(--ink3);font-size:11px}
.day{cursor:cell}.day.editing,.mday.editing{cursor:default}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg .btn{border:0;border-radius:0;margin:0}.seg .btn.on{background:var(--ink);color:var(--card)}
.month{display:block}
.month .mnote{margin-bottom:10px}
.wgrid.mgrid .cell{min-height:104px;padding:5px 6px}.wgrid.mgrid .cell.out{background:#FBF9F5;color:var(--ink3)}.wgrid.mgrid .cell.out .ev{opacity:.55}
.wgrid.mgrid .lbl{padding-top:8px}.wgrid.mgrid .day.head{text-align:left}
.mcell .dn{font-size:12.5px;font-weight:600;color:var(--ink);display:flex;gap:5px;align-items:baseline;margin-bottom:3px;flex-wrap:wrap}
.mcell.sun .dn{color:#B4432E}.mcell.sat .dn{color:#4D94FF}.mcell .dn small{font-weight:500;color:#B4432E;font-size:11px}
.mcell .ev{padding:1px 0;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;margin:0}
.mcell .ev .d{margin-right:4px}.mcell .ev b{margin-right:3px}.mcell .ev.lunch{background:#FFF3C4;border-radius:6px;padding:1px 4px;margin:1px -2px}.mcell .ev.dinner{background:#FFE0CC;border-radius:6px;padding:1px 4px;margin:1px -2px}
.month .mnote{grid-column:1/-1;font-size:12.5px;color:var(--ink2);background:var(--tint);border:1px dashed var(--line);border-radius:10px;padding:8px 12px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.month .mhead{grid-column:1/-1;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));font-size:11.5px;color:var(--ink3);padding:0 4px}
.month .mhead span:first-child{color:#B4432E}.month .mhead span:last-child{color:#4D94FF}
.mday{background:var(--tint);border:1px solid var(--line-soft);border-radius:10px;padding:6px 8px;min-height:96px;cursor:cell}
.mday.today{border-color:var(--accent);background:var(--card)}.mday.out{opacity:.45}
.mday h6{margin:0 0 4px;font-size:12.5px;font-weight:600;display:flex;gap:5px;align-items:baseline;color:var(--ink)}
.mday.sun h6{color:#B4432E}.mday.sat h6{color:#4D94FF}.mday h6 small{font-weight:500;color:#B4432E;font-size:11px}
.mday .ev{padding:1px 0;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.mday .ev .d{margin-right:4px}.mday .ev b{margin-right:3px}
.modal-bg{position:fixed;inset:0;background:rgba(30,26,22,.32);z-index:90;display:flex;align-items:center;justify-content:center;padding:20px}
.modal{background:#fff;border-radius:16px;padding:18px 20px 16px;width:min(560px,94vw);box-shadow:0 18px 50px rgba(0,0,0,.18);display:flex;flex-direction:column;gap:10px}
.modal h4{margin:0;font-size:11.5px;letter-spacing:.12em;color:var(--ink3);font-weight:700}
.modal input,.modal select,.modal textarea{font:inherit;font-size:14px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);width:100%;box-sizing:border-box}
.modal input.big{font-size:17px;font-weight:600;padding:9px 12px}
.modal label{display:flex;flex-direction:column;gap:4px;font-size:11.5px;color:var(--ink3)}
.modal .mrow{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}.modal .mrow label{flex:1 1 110px}.modal .mrow label.grow{flex:3 1 220px}
.modal label.ck{flex:0 0 auto;flex-direction:row;align-items:center;gap:6px;padding-bottom:9px;font-size:13px;color:var(--ink2)}.modal label.ck input{width:auto}
.modal .mbtns{display:flex;gap:8px;align-items:center;margin-top:4px}.modal .mbtns .grow{flex:1;text-align:right}
.modal textarea{resize:vertical;min-height:60px}
.cal-form{display:flex;gap:6px;flex-wrap:wrap;align-items:center;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin-bottom:10px}
.cal-form input,.cal-form select{font:inherit;font-size:13px;padding:5px 8px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink)}
.cal-form input[name=summary]{flex:1 1 200px}.cal-form .ck{font-size:12px;color:var(--ink2);display:inline-flex;gap:4px;align-items:center}
.ev-edit{display:flex;gap:4px;flex-wrap:wrap;align-items:center;background:#fff;border-radius:8px;padding:4px 6px;margin:2px -4px}
.ev-edit input{font:inherit;font-size:12px;padding:3px 6px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink);min-width:0}
.ev-edit input[name=summary]{flex:1 1 120px}.ev-edit input[type=time]{width:78px}.ev-edit input[name=location]{flex:1 1 90px}

/* ── 뉴스 ── */
.news-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.news-groups .card h5{margin-bottom:4px}
.art{padding:8px 0;border-top:1px solid var(--line-soft);cursor:pointer}
.art:first-of-type{border-top:0}
.art .h{display:flex;gap:8px;align-items:baseline}
.art .h .t{min-width:44px}
.art .h .x{font-weight:500}
.art:hover .h .x{color:var(--accent)}
.art .sum{display:none;margin:6px 0 0 52px;font-size:12.5px;color:var(--ink2);padding-left:10px;border-left:2px solid var(--line)}
.art.open .sum{display:block}
.art .sum div{margin:2px 0}
.art .sum .s div{font-weight:600;color:var(--ink)}
.art .body{font-weight:400}
.art .sum .actions{display:flex;gap:6px;align-items:center;margin-top:6px}
.art .body{margin-top:8px;padding-top:6px;border-top:1px dashed var(--line);color:var(--ink2);font-size:12.5px;line-height:1.55}
.art .body p{margin:0 0 6px}
.news-card h5.fold-h{cursor:pointer;user-select:none}
.news-card.folded .art{display:none}
.memo.editable{cursor:text}.memo.editable:hover{background:var(--tint)}
#net-search{margin:0 0 8px}
.imp{font-size:10.5px;color:var(--ink3);font-variant-numeric:tabular-nums}

/* ── 팔레트 · 토스트 ── */
.palette{position:fixed;inset:0;background:rgba(20,20,19,.28);z-index:50;display:flex;align-items:flex-start;justify-content:center;padding-top:12vh}
.palette[hidden]{display:none}
.pal-box{width:min(560px,92vw);background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.18);overflow:hidden}
.pal-box input{width:100%;border:0;border-bottom:1px solid var(--line);padding:16px 18px;font:inherit;font-size:16px;background:transparent;color:var(--ink)}
.pal-box input:focus{outline:0}
.pal-list{max-height:50vh;overflow:auto;padding:6px}
.pal-item{display:flex;gap:10px;align-items:baseline;padding:8px 12px;border-radius:9px;cursor:pointer;font-size:14px}
.pal-item small{color:var(--ink3);font-size:12px}
.pal-item .k{margin-left:auto;font-size:10.5px;color:var(--ink3);letter-spacing:.08em}
.pal-item.on,.pal-item:hover{background:var(--accent-bg);color:var(--accent)}
.pal-help{font-size:11.5px;color:var(--ink3);padding:8px 16px;border-top:1px solid var(--line-soft)}
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:999px;font-size:13px;z-index:60;box-shadow:0 8px 24px rgba(0,0,0,.18)}
.msg .body{white-space:pre-wrap;font-size:13px;line-height:1.55;color:var(--ink2);margin:4px 0 0;overflow-wrap:anywhere}
.picker{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:10px 0;padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:var(--tint)}
.dr{display:grid;grid-template-columns:280px minmax(0,1fr);gap:14px;align-items:start}
.dr-strip-wrap{margin:0 0 14px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px 14px}
.dr-strip{display:flex;gap:18px;overflow-x:auto;padding-bottom:6px;scroll-snap-type:x proximity}
.dr-strip::-webkit-scrollbar{height:8px}.dr-strip::-webkit-scrollbar-thumb{background:var(--line);border-radius:8px}
.dr-group{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;padding-right:18px;border-right:1px dashed var(--line)}
.dr-group:last-child{border-right:0}.dr-group .lbl2{white-space:nowrap}.dr-group .lbl2 small{color:var(--ink3);margin-left:4px}
.dr-ctl{justify-content:center;gap:8px;padding-right:12px}
.dr-cards{display:flex;gap:8px}
.dr-card{flex:0 0 230px;width:230px;padding:9px 11px;border:1px solid var(--line);border-radius:12px;background:var(--tint);cursor:pointer;scroll-snap-align:start;transition:border-color .12s,background .12s}
.dr-card:hover{border-color:var(--accent);background:var(--card)}.dr-card.sel{border-color:var(--accent);background:var(--accent-bg)}
.dr-card .t{display:flex;gap:6px;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dr-card .t b{overflow:hidden;text-overflow:ellipsis}
.dr-card .m{font-size:11px;color:var(--ink3);margin-top:3px;display:flex;gap:5px;align-items:center;white-space:nowrap}
.dr-card .notes{margin:5px 0 3px;font-size:13px;color:var(--ink);line-height:1.4;white-space:normal}
.dr-card .notes div{display:block;word-break:keep-all;overflow-wrap:anywhere;padding:1px 0}
.note-item{padding:2px 0 5px;border-bottom:1px solid var(--line-soft)}.note-item:last-child{border-bottom:0}
.note-item .note-text{font-size:14.5px;line-height:1.45;cursor:text}.note-item.dim .note-text{color:var(--ink3)}
.note-item .tail{display:flex;gap:6px;align-items:baseline;margin-left:26px;font-size:13px;color:var(--ink2)}.note-item .tail .arrow{color:var(--ink3);flex:0 0 auto}
.note-item .tail.add input{border:0;background:transparent;font:inherit;font-size:12.5px;color:var(--ink);width:100%;padding:2px 0;outline:none}
.note-item .tail.add input::placeholder{color:var(--line)}.note-item .tail.add input:focus::placeholder{color:var(--ink3)}
.note-edit{font:inherit;width:100%;border:1px solid var(--line);border-radius:6px;padding:3px 6px;background:#fff;color:var(--ink)}
.todo-text{cursor:text}
.tl-read{margin:2px 0 8px 52px;padding:8px 10px;border-left:2px solid var(--line);font-size:12.5px;color:var(--ink2)}
.tl-read .sum .s div{font-weight:600;color:var(--ink)}.tl-read .body p{margin:0 0 6px}
.tl-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 8px}.tl-bar .seg{display:inline-flex;gap:4px}
.sync{color:#D97757;font-weight:600}.sync.bad{color:#B4432E}.sync.click{cursor:pointer;text-decoration:underline dotted}
.dr-sidecard{position:sticky;top:0}
@media (max-width:1100px){.dr-sidecard{position:static}}
#dr-board{display:flex;flex-direction:column;gap:14px;min-width:0}
.dr-item{padding:8px 10px;border-top:1px solid var(--line-soft);cursor:pointer;border-radius:9px}
.dr-item:hover{background:var(--tint)}.dr-item.sel{background:var(--accent-bg)}
.dr-item .t{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.dr-item .m{font-size:11.5px;color:var(--ink3);margin-top:3px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.rag-strip{display:inline-flex;gap:2px}.rag-strip i{display:inline-block;width:9px;height:9px;border-radius:2px;background:var(--line)}
.rag-strip i.ok{background:var(--ok)}.rag-strip i.warn{background:var(--warn)}.rag-strip i.bad{background:var(--bad)}
.dr-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.dr-head .sp{flex:1}
.sec-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.sec{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--tint);min-width:0}
.sec .h{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-bottom:4px}.sec .h b{font-size:13px}
.sec .lead{font-size:12.5px;color:var(--ink2);cursor:pointer;line-height:1.45}.sec .lead:hover{color:var(--accent)}
.sec .full{display:none;margin-top:8px}.sec.open .full{display:block}.sec .full .body{white-space:pre-wrap;font-size:12.5px;color:var(--ink2);line-height:1.5}
.sec textarea{width:100%;font:inherit;font-size:12.5px;border:1px solid var(--line);border-radius:8px;padding:8px;background:var(--card);color:var(--ink)}
.ai{margin-top:10px;padding:10px 12px;border:1px dashed var(--accent);border-radius:12px;background:var(--accent-bg)}.ai .body{white-space:pre-wrap;font-size:13px;line-height:1.5}
@media (max-width:1100px){.dr{grid-template-columns:1fr}.sec-grid{grid-template-columns:1fr}}
.toast[hidden]{display:none}
.toast button{margin-left:12px;background:transparent;border:1px solid currentColor;color:inherit;border-radius:999px;padding:3px 11px;font:inherit;font-size:12.5px;cursor:pointer}
.toast button:hover{background:rgba(127,127,127,.25)}

@media (max-width:1100px){.grid6{grid-template-columns:repeat(2,minmax(0,1fr))}.three{grid-template-columns:1fr}.two{grid-template-columns:1fr}.news-groups{grid-template-columns:1fr}.week{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){.app{grid-template-columns:1fr}.rail{height:auto;flex-direction:row;flex-wrap:wrap;gap:4px;padding:10px}.rail .subs,.rail .foot,.rail .logo{display:none}main{height:auto}.room{padding:18px 16px 40px}.grid6{grid-template-columns:1fr}.room.room-frame{height:calc(100vh - 60px)}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* ── 입력 폼 (사람 추가·수정, 콜 기록) ── */
.form{display:grid;gap:8px;margin-top:6px}
.form label{display:grid;gap:3px;font-size:12px;color:var(--ink3)}
.form input,.form select,.form textarea{border:1px solid var(--line);border-radius:9px;padding:7px 10px;font:inherit;font-size:13.5px;color:var(--ink);background:var(--bg);width:100%}
.form input:focus,.form select:focus,.form textarea:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}
.form textarea{resize:vertical}
.form .two-col{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.form .actions{margin-top:2px}
.btn:disabled{opacity:.5;cursor:progress}
.row.sub-head{border-top:1px solid var(--line-soft);margin-top:4px;padding-top:6px}.row.sub-head .t{font-weight:600;color:var(--ink2)}
/* 로비 카드: 항목이 많으면 카드 안에서 스크롤 */
.grid6 .card .body{max-height:440px;overflow-y:auto;overflow-x:hidden}#c-appt .body{max-height:none;overflow:visible}
.grid6 .card .row{flex-wrap:wrap}.grid6 .card .row .x{min-width:0;overflow-wrap:anywhere}
/* 주 보기 일정: 시각 → 제목 → 장소 줄바꿈 */
.week .ev{display:block;padding:4px 0}.week .ev .ev-h{display:flex;gap:5px;align-items:baseline}.week .ev .ev-h .d{margin-top:0;align-self:center}
.week .ev .ev-t{margin-left:12px;color:var(--ink);line-height:1.35;word-break:keep-all;overflow-wrap:anywhere}.week .ev .ev-h .ev-t{margin-left:0}
.week .ev .ev-l{margin-left:12px;font-size:11px;color:var(--ink3);line-height:1.3}
/* 식사 일정: 둥근 상자에 색 — 점심은 노랑, 저녁은 주황 (2026-09-28 지시) */
.week .ev.lunch,.mday .ev.lunch{background:#FFF3C4;border-radius:8px}.week .ev.dinner,.mday .ev.dinner{background:#FFE0CC;border-radius:8px}
.week .ev.lunch,.week .ev.dinner{padding:4px 6px;margin:2px -4px}.mday .ev.lunch,.mday .ev.dinner{padding:1px 4px;margin:1px -2px}
.week .ev.lunch:hover,.week .ev.dinner:hover{filter:brightness(.97)}
.legend .d.lunch{background:#F2C94C}.legend .d.dinner{background:#F0956B}

/* ── Deal: 층별 카드 + 오른쪽 절반 패널 (2026-09-30) ── */
.dtiers{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;overflow-x:auto;display:flex;align-items:stretch}
.dtier{flex:1 1 0;min-width:180px;display:flex;flex-direction:column;border-left:1px solid var(--line)}   /* 단계는 가로 열, 딜은 열 안에 세로 (2026-10-16) */
.dtier:first-child{border-left:0}
.dtier-h{background:#F6F1E6;padding:12px 14px;display:flex;align-items:baseline;gap:8px;border-bottom:1px solid var(--line)}
.dtier-h b{font-size:14px}.dtier-h small{color:var(--ink3);font-size:12px;font-variant-numeric:tabular-nums}
.dtier-cards{flex:1;display:flex;flex-direction:column;gap:8px;padding:10px;min-height:66px}
.dtier-cards .empty{padding:8px 4px}
.dnew-f{margin:0;display:flex}
.dcard{width:100%;box-sizing:border-box;padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;background:var(--card);cursor:pointer;transition:border-color .12s,background .12s}
.dcard:hover{border-color:var(--accent)}.dcard.sel{border-color:var(--accent);background:var(--accent-bg)}
.dcard b{display:block;font-size:14.5px}
.dcard.dnew{font:inherit;font-size:14.5px;font-weight:700;color:var(--ink);border-style:dashed;cursor:text;line-height:inherit}
.dcard.dnew::placeholder{color:var(--ink3);font-weight:400}
.dcard.dnew:focus{outline:0;border-style:solid;border-color:var(--accent)}
.iss-mini{margin-top:6px;font-size:12.5px;color:var(--ink2);line-height:1.4}
.iss-mini div{padding:3px 0;border-top:1px solid var(--line-soft)}
#room-deals.dp-open .dtiers{max-width:calc(50vw - var(--rail) - 48px)}
#room-deals.dp-open .dtier{min-width:150px}
.app.rail-off #room-deals.dp-open .dtiers{max-width:calc(50vw - 48px)}
.dpanel{position:fixed;top:0;right:0;width:50vw;height:100vh;height:100dvh;background:var(--card);border-left:1px solid var(--line);box-shadow:-12px 0 32px rgba(20,20,19,.08);z-index:60;display:flex;flex-direction:column;contain:layout style}   /* dvh — 폰에서 주소창 뒤로 아래가 잘리지 않게 */
.dpanel[hidden]{display:none}
.dp-head{display:flex;align-items:center;gap:8px;padding:18px 22px 12px;border-bottom:1px solid var(--line)}
.dp-head h2{margin:0 4px 0 0;font-size:19px}.dp-head .sp{flex:1}
#dr-stage-menu .picker{display:flex;flex-wrap:wrap;gap:6px;padding:10px 22px;border-bottom:1px solid var(--line-soft)}
.dp-body{flex:1;overflow:auto;padding:6px 22px 18px}
.iss{padding:9px 22px 7px;margin:0 -22px;border-bottom:1px solid var(--line-soft)}
.iss.tgt{background:var(--accent-bg)}
.iss-h{display:flex;gap:10px;align-items:flex-start}
.iss-h .box{margin-top:4px}
.iss-h .note-text{flex:1;font-size:15px;font-weight:600;line-height:1.45;cursor:text}
.iss.dim .iss-h .note-text{color:var(--ink3);font-weight:400}
.iss .tail{display:flex;gap:6px;align-items:baseline;margin-left:25px;padding:2px 0;font-size:13.5px;color:var(--ink2)}
.iss .tail .note-text{flex:1;cursor:text}.iss .tail .arrow{color:var(--ink3);flex:0 0 auto}
.iss .tail.add input{border:0;background:transparent;font:inherit;font-size:13px;color:var(--ink);width:100%;padding:2px 0;outline:none}
.iss .tail.add input::placeholder{color:var(--ink3);opacity:.55}.iss .tail.add input:focus::placeholder{opacity:1}
.del{visibility:hidden;flex:0 0 auto;border:0;background:none;color:var(--ink3);cursor:pointer;font-size:11px;padding:0 2px;line-height:1.6}
.iss-h:hover>.del,.iss .tail:hover>.del{visibility:visible}
@media (hover:none){.del{visibility:visible;padding:0 6px;font-size:13px}}   /* 터치에는 마우스 올리기가 없다 */
#mail-read,#net-card{scroll-margin-top:60px}.del:hover{color:var(--bad)}
#dr-note-new{margin-top:12px}
.dp-note{position:relative;margin:14px 0 6px}
.dp-note textarea{display:block;width:100%;box-sizing:border-box;font:inherit;font-size:14px;line-height:1.5;border:1px solid var(--line);border-radius:10px;padding:10px 12px 38px;background:var(--card);color:var(--ink);resize:none;field-sizing:content;min-height:88px;max-height:45vh;contain:content}
.dp-note textarea:focus{outline:0;border-color:var(--ink3)}
.dp-note .btn{position:absolute;right:8px;bottom:8px}
.dg-row{display:grid;grid-template-columns:12px minmax(0,1fr) 104px;gap:0 6px;align-items:baseline;margin-left:16px;padding:3px 0;font-size:13.5px;line-height:1.45}
.dg-row.new{background:var(--accent-bg);border-radius:6px;transition:background 1s}
.dg-src{display:flex;gap:5px;justify-content:flex-end;align-items:baseline;border:0;background:none;font:inherit;font-size:11.5px;color:var(--ink3);cursor:pointer;padding:0;text-align:right;white-space:nowrap}
.dg-src:hover,.dg-row.open .dg-src{color:var(--accent)}
.dg-src .m{font-variant-numeric:tabular-nums}
.dg-its{margin:6px 0 2px}
.dg-read2{margin:2px 0 8px 34px;border-left:2px solid var(--line);padding:2px 0 4px 12px}
.dg-rh{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:2px 0 4px}.dg-rh .m{color:var(--ink3);font-variant-numeric:tabular-nums}.dg-rh .sp{flex:1}
.dg-rt{white-space:pre-wrap;font-size:13.5px;line-height:1.6;color:var(--ink);max-height:50vh;overflow:auto}
@media (max-width:900px){.dpanel{width:100vw}#room-deals.dp-open .dtiers{max-width:none}}
@media print{.dpanel{position:static;width:auto;height:auto;box-shadow:none;border:0}.dp-note{display:none}}
#room-booking #c-appt>h5{display:none}
/* Deal 패널 — 주제별 정리 (2026-09-30) */
.dg{margin:4px 0 10px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.dg-head{display:flex;align-items:center;gap:8px;padding:8px 0 6px}.dg-head b{font-size:13px;color:var(--ink2)}.dg-head .sp{flex:1}.dg-head .m{color:var(--ink3);font-size:11.5px}
.dg-t{padding:8px 0 7px;border-top:1px solid var(--line-soft)}
.dg-th{display:flex;align-items:baseline;gap:6px;cursor:pointer;user-select:none}
.dg-th .caret{color:var(--ink3);font-size:10px;width:10px;flex:0 0 10px}.dg-name{font-size:12.5px;color:var(--accent);font-weight:600}.dg-th .m{color:var(--ink3);font-size:11.5px}
.dg-sum{display:grid;grid-template-columns:12px minmax(0,1fr);margin:3px 0 0 16px;font-size:14px;font-weight:600;line-height:1.45;cursor:pointer}
.dg .bl{color:var(--ink3);font-weight:400}
.dg-read{white-space:pre-wrap;font-size:13.5px;line-height:1.6;color:var(--ink);margin:4px 0 8px 70px;padding:8px 0 8px 12px;border-left:2px solid var(--line)}
.dg-th .sp{flex:1}
.dg-blks{margin:6px 0 2px 16px}
.dg-blk{padding:1px 0 5px;border-bottom:1px solid var(--line-soft)}.dg-blk:last-child{border-bottom:0}
.dg-doc.flat{cursor:default}.dg-doc.flat:hover .x{color:var(--ink2)}
.dg-it{display:grid;grid-template-columns:12px minmax(0,1fr);gap:0 4px;margin-left:70px;padding:2px 0;font-size:13.5px;line-height:1.45;color:var(--ink)}
.dg-it.new{background:var(--accent-bg);border-radius:6px;transition:background 1s}
.dg-gist{margin:0 0 2px 70px;font-size:12.5px;color:var(--ink3);line-height:1.4}
.dg-tn{margin:6px 0 1px 70px;font-size:12px;color:var(--accent);font-weight:600}
.dg-mins{border-top:1px solid var(--line)}
.dg-doc{display:grid;grid-template-columns:64px minmax(0,1fr);gap:0 6px;align-items:baseline;width:100%;padding:5px 0;border:0;background:none;font:inherit;font-size:13px;color:var(--ink2);text-align:left;cursor:pointer}
.dg-doc .m{color:var(--ink3);font-size:11.5px;font-variant-numeric:tabular-nums}.dg-doc .x{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dg-doc:hover .x{color:var(--accent)}
@media (max-width:760px){.dg-row{margin-left:4px;grid-template-columns:12px minmax(0,1fr) 88px}.dg-read2{margin-left:8px}.dg-blks{margin-left:4px}.dg-it,.dg-gist,.dg-tn{margin-left:20px}.dg-read{margin-left:8px}.dg-doc{grid-template-columns:58px minmax(0,1fr)}}
.fold-h{cursor:pointer;user-select:none}.fold-h .caret{display:inline-block;width:14px;color:var(--ink3)}
.person-h.editable{cursor:pointer}.person-h.editable:hover{color:var(--accent)}
#net-card .actions .sp{flex:1}

/* ── Golf — 원더클럽 티타임 ── */
.golf-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:14px;align-items:start}
.golf-grid.one{grid-template-columns:minmax(0,1fr)}.golf-grid.one #golf-book{display:none}
.gdays{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 12px}
.gday{appearance:none;display:grid;grid-template-rows:auto auto auto;justify-items:center;width:52px;padding:5px 0 4px;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:10px;cursor:pointer;font:inherit;line-height:1.25}
.gday b{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}.gday span{font-size:11px;color:var(--ink2)}.gday small{font-size:10.5px;color:var(--ink3);min-height:13px;font-variant-numeric:tabular-nums}
.gday.sat span{color:var(--work)}.gday.sun span{color:var(--bad)}
.gday:hover:not(:disabled){border-color:var(--accent)}
.gday.on{border-color:var(--accent);background:var(--accent-bg)}.gday.on b{color:var(--accent)}
.gday:disabled{opacity:.4;cursor:default}
.gfilter{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:6px}
.glist h6{display:flex;gap:6px;align-items:baseline}
.row.grow{display:grid;grid-template-columns:52px 82px 42px 150px minmax(0,1fr);gap:8px;align-items:center}
.row.grow .t{color:var(--ink);font-weight:600;font-size:13px}.row.grow .c{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row.grow .h{color:var(--ink3);font-size:12px}
.row.grow .p{display:flex;gap:6px;align-items:baseline;justify-content:flex-end;font-variant-numeric:tabular-nums}.row.grow .p s{color:var(--ink3);font-size:11.5px}.row.grow .p b{font-weight:600}
.row.grow .e{display:flex;gap:4px;flex-wrap:wrap;min-width:0}
.row.grow:hover{background:var(--tint)}
.gsel{display:flex;gap:12px;align-items:center;justify-content:space-between;background:var(--tint);padding:10px 12px;border-top:1px solid var(--line-soft)}
.gsel .m{display:block;white-space:normal;margin-top:3px}
.golf-status{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 10px}
.golf-status:empty{display:none}
.row.gmine{display:grid;grid-template-columns:118px minmax(0,1fr) auto 34px;gap:8px;align-items:center}
.chip.pill{width:5em;text-align:center;padding:0;box-sizing:border-box}   /* 예약됨 · 예약하기 같은 크기 */
.row.gmine .t{white-space:nowrap}
@media (max-width:1100px){.golf-grid{grid-template-columns:1fr}}
@media (max-width:760px){.gdays{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}.gday{flex:0 0 52px}.row.grow{grid-template-columns:44px minmax(0,1fr) auto;grid-template-areas:"t c p" "e e e"}.row.grow .t{grid-area:t}.row.grow .c{grid-area:c}.row.grow .h{display:none}.row.grow .p{grid-area:p}.row.grow .e{grid-area:e}}
.row.grow .e:empty{display:none}

/* ── 폰(≤760px) ─────────────────────────────────────────────────────
   탭은 한 줄 가로 띠(위에 붙음) · 방 머리·카드 여백 줄임 · 다운로드/인쇄 알약 숨김 · 터치 대상 키움 */
@media (max-width:760px){
  .app,.app.rail-off{display:block;height:auto;min-height:100vh}
  .rail,.app.rail-off .rail{position:sticky;top:0;z-index:50;display:flex;flex-direction:row;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;height:auto;gap:2px;padding:6px 8px;border-right:0;border-bottom:1px solid var(--line);scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .rail::-webkit-scrollbar{display:none}
  .rail .rail-top,.rail-open{display:none!important}
  .rail .tab{flex:0 0 auto;padding:8px 11px;font-size:13.5px;gap:5px;min-height:38px}
  .rail .tab small{margin-left:1px}
  .fab{display:none!important}
  main{height:auto;overflow:visible}
  .room{padding:12px 12px 48px}
  .room-head{margin-bottom:12px;gap:10px}.room-head .mark{display:none}.room-head h1{font-size:21px;margin:0}
  .card{padding:12px 13px;border-radius:14px}
  .room.room-frame{height:calc(100dvh - 51px)}
  .strip-bar{padding:6px 10px;gap:8px;flex-wrap:nowrap}.strip-bar .lbl+*:not(.btn){white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
  .btn{padding:7px 13px;font-size:13px}.btn.sm{padding:5px 11px;font-size:12px}
  .quick{font-size:16px}            /* 16px 밑이면 아이폰이 입력칸을 누를 때 화면을 확대한다 */
  input,select,textarea{font-size:16px}
  /* 할일 줄: 체크·중요·제목이 첫 줄, 칩·날짜·원본은 다음 줄로 */
  .bucket .row,#c-todo .row{flex-wrap:wrap;row-gap:4px;padding-top:9px;padding-bottom:9px}
  .bucket .row .x,#c-todo .row .x{flex:1 1 calc(100% - 60px)}
  .bucket .row .x~*,#c-todo .row .x~*{margin-left:0}
  .bucket .row .x+*,#c-todo .row .x+*{margin-left:58px}   /* 제목 시작선에 맞춤 */
  .box,.imp-btn{width:20px;height:20px}
  .bucket .row .btn.sm,#c-todo .row .btn.sm{margin-left:auto}
  /* 캘린더 주 보기 = 날짜별 목록 */
  .agenda{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--card)}
  .ag-day{border-top:1px solid var(--line-soft)}.ag-day:first-child{border-top:0}
  .ag-day.today{background:#FFFBF3}
  .ag-h{display:flex;align-items:baseline;gap:7px;padding:9px 12px;background:var(--tint);cursor:cell}
  .ag-h b{font-size:15px;font-variant-numeric:tabular-nums}.ag-h small{color:var(--ink3)}
  .ag-day.sun .ag-h b,.ag-day.sun .ag-h small{color:#B4432E}.ag-day.sat .ag-h b,.ag-day.sat .ag-h small{color:#4D94FF}
  .ag-day.today .ag-h{box-shadow:inset 3px 0 0 var(--accent)}
  .ag-add{margin-left:auto;color:var(--ink3);font-size:18px;line-height:1;padding:0 2px}
  .agenda .ev{display:flex;align-items:baseline;gap:7px;padding:9px 12px;border-top:1px solid var(--line-soft);font-size:14px;line-height:1.4}
  .agenda .ev .d{align-self:center;margin:0}
  .agenda .ev b{flex:0 0 42px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink2)}
  .agenda .ev .ag-t{flex:1;min-width:0;overflow-wrap:anywhere}
  .agenda .ev.lunch{background:#FFF8DD}.agenda .ev.dinner{background:#FFEFE3}
  .modal .mbtns .m.grow{visibility:hidden}   /* 'Enter 나 창 밖 클릭…' — 폰엔 Enter 도 마우스도 없다 */
  .bucket .row{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}   /* 길게 누르기 = 끌기(글자 선택·메뉴 대신) */
  .bucket .row input{-webkit-user-select:text;user-select:text}
  .bucket .row.lifted{box-shadow:0 6px 18px rgba(20,20,19,.18);background:var(--card);position:relative;z-index:5}
  #emba-bar .lbl2,#emba-bar>.m{display:none}   /* 아래 대시보드에 같은 이름·숫자·수집 시각이 있다 */
  .thread-tools .sep,.mail-tools .sep{display:none}   /* 줄이 접히면 구분선이 다음 줄 맨 앞에 혼자 남는다 */
}

/* ── 다크 모드: 밝은 색을 박아 둔 곳 — 폰이 다크 모드면 흰 바탕에 밝은 글씨가 되던 것 ── */
@media (prefers-color-scheme:dark){
  .modal,.cal-form,.ev-edit,.note-edit{background:var(--card);color:var(--ink)}
  .modal input,.modal select,.modal textarea,.cal-form input,.cal-form select,.ev-edit input{background:var(--bg);color:var(--ink);border-color:var(--line)}
  .wgrid .lbl.hl,.wgrid .day.head.hl,.wgrid .day.head.today.hl{background:#3A3833;color:var(--ink)}
  .wgrid .cell:hover,.wgrid .cell.today:hover{background:#34322D}
  .wgrid .cell[data-hour="all"]{background:#2A2824}.wgrid .lbl[data-hour="all"]{background:#2E2C27}.wgrid .cell[data-hour="all"].today{background:#302B22}
  .wgrid .day.head.today,.wgrid .cell.today:not([data-hour="all"]),.ag-day.today{background:#2A261F}
  .wgrid .ev.lunch,.mcell .ev.lunch,.week .ev.lunch,.mday .ev.lunch,.agenda .ev.lunch{background:#3A3418}
  .wgrid .ev.dinner,.mcell .ev.dinner,.week .ev.dinner,.mday .ev.dinner,.agenda .ev.dinner{background:#3A2A1E}
  .wgrid.mgrid .cell.out{background:#232220}
  .row.todo-imp{background:var(--bad-bg)}.bucket.over{background:var(--accent-bg)}
  .bk-urgent{background:var(--bad-bg)}.bk-soon{background:var(--warn-bg)}.bk-later{background:var(--line-soft)}
  .dtier-h{background:#2A2824}
}

/* ── Golf · 카카오골프 ── */
#golf-st:empty{display:none}#golf-st{margin:0 0 12px}
.row.grow.near{box-shadow:inset 3px 0 0 var(--accent);padding-left:8px;margin-left:-8px}

/* Golf 예약 칸 — 티는 촘촘한 칸으로, 넓으면 두 열 */
.seg .btn .n{color:var(--ink3);font-variant-numeric:tabular-nums;margin-left:2px}.seg .btn.on .n{color:inherit;opacity:.7}.seg .btn:disabled{opacity:.35;cursor:default}
.tgrid{columns:250px;column-gap:28px}.tgrid .tcell{break-inside:avoid}   /* 시각순이 왼쪽 열 위→아래, 다음 열로 */
.tcell{display:grid;grid-template-columns:44px minmax(0,1fr) auto 46px;gap:10px;align-items:center;min-height:34px;padding:0 6px 0 8px;border-top:1px solid var(--line-soft);cursor:pointer}
.tcell .t{font-weight:600;font-size:13px;font-variant-numeric:tabular-nums}.tcell .c{color:var(--ink2);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tcell .p{font-weight:600;font-variant-numeric:tabular-nums;text-align:right}
.tcell:hover{background:var(--tint)}.tcell.sel{background:var(--tint)}
.tcell.near{box-shadow:inset 3px 0 0 var(--accent)}
#golf-book .gfilter .seg{flex-wrap:wrap}   /* 골프장 단추가 많으면 다음 줄로 */
.tcell .btn{justify-self:end}

/* Golf 골프장 × 시간 표 — 각진 칸, 칸 숫자 = 티 수, 누르면 아래 목록이 그 골프장·시간으로 */
.gmat{width:100%;border-collapse:collapse;margin:2px 0 12px;font-size:12.5px;font-variant-numeric:tabular-nums}
.gmat th,.gmat td{border:1px solid var(--line);padding:5px 8px;text-align:center;white-space:nowrap}
.gmat thead th{font-weight:600;color:var(--ink2);background:var(--tint)}
.gmat th.cn{text-align:left;font-weight:600;color:var(--ink);cursor:pointer;background:var(--card)}
.gmat th.hh{cursor:pointer;width:48px}.gmat th.op,.gmat td.op{text-align:left;width:1%}
.gmat td.n{color:var(--ink3)}.gmat td.n.has{color:var(--ink);font-weight:600;cursor:pointer}
.gmat td.n.has:hover,.gmat th.cn:hover,.gmat th.hh:hover{background:var(--accent-bg);color:var(--accent)}
.gmat tr.on th.cn,.gmat th.hh.on,.gmat td.col{background:var(--tint)}
.gmat td.n.on{background:var(--accent);color:#fff}
.gmat tr:hover th.cn{color:var(--accent)}
.op-ok{color:var(--ok);font-weight:600}.op-none{color:var(--ink3)}
.op-at{color:var(--ink2);margin-right:6px}
.dn{font-weight:700;color:var(--ink2);font-size:12px;font-variant-numeric:tabular-nums}.dn.soon{color:var(--warn)}
.bell{appearance:none;border:0;background:none;cursor:pointer;font-size:13px;padding:0 0 0 6px;opacity:.3;filter:grayscale(1)}
.bell.on{opacity:1;filter:none}.bell:hover{opacity:.8}
#golf-book h5 .btn{margin-left:8px;letter-spacing:0}
.row.gmine .dn{text-align:right}
@media (max-width:760px){.gmat{font-size:12px}.gmat th,.gmat td{padding:4px 5px}.op-at{display:block;margin:0}}

/* 탭 공개 설정 (관리자, 2026-10-19) — 켠 탭은 강조색 */
#foot-access>a{color:var(--ink3);text-decoration:none}#foot-access>a.on,#foot-access>a:hover{color:var(--accent)}
.acc-list{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0 6px}
.acc-tab{font:inherit;font-size:11px;line-height:1.7;padding:0 8px;border-radius:999px;border:1px dashed var(--line);background:transparent;color:var(--ink3);cursor:pointer;white-space:nowrap;opacity:.7}
.acc-tab.on{color:#fff;background:var(--accent);border:1px solid var(--accent);opacity:1;font-weight:600}
#foot-me a{color:var(--ink3)}
