    * { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
    html { -webkit-text-size-adjust:100%; text-size-adjust:100%; }
    :root {
      --pri:#E67E22; --dark:#D35400;
      --bg:#F2F2F7; --card:#fff; --bg-sub:#f7f7f7;
      --text:#1C1C1E; --text2:#3A3A3C; --muted:#8E8E93; --border:#E5E5EA;
      --green:#34C759; --red:#FF3B30; --blue:#007AFF;
      --badge-paid:#e8f8ed; --badge-unpaid:#fff0ee; --badge-partial:#fff8e8; --chip-bg:#fff3e8;
    }
    :root.dark {
      --bg:#000; --card:#1C1C1E; --bg-sub:#2C2C2E;
      --text:#fff; --text2:#EBEBF5; --muted:#8E8E93; --border:#38383A;
      --badge-paid:rgba(52,199,89,.15); --badge-unpaid:rgba(255,59,48,.15);
      --badge-partial:rgba(230,126,34,.15); --chip-bg:rgba(230,126,34,.12);
      --tabbar-bg:rgba(28,28,30,.95);
    }
    body {
      font-family:'Pretendard',-apple-system,'Apple SD Gothic Neo','Malgun Gothic',sans-serif;
      background:var(--bg); color:var(--text);
      padding-bottom:calc(60px + env(safe-area-inset-bottom));
    }

    /* 헤더 */
    .hdr {
      background:var(--dark); color:#fff;
      padding:14px 18px 12px;
      padding-top:calc(14px + env(safe-area-inset-top));
      position:sticky; top:0; z-index:100;
      display:flex; align-items:center; justify-content:space-between;
    }
    .hdr-left { flex:1; min-width:0; }
    .hdr h1 { font-size:19px; font-weight:700; }
    .hdr .sub { font-size:12px; opacity:.8; margin-top:1px; }
    .hdr-bell { background:none; border:none; color:#fff; cursor:pointer; padding:4px; position:relative; flex-shrink:0; opacity:.9; }
    .hdr-bell:active { opacity:.6; }
    .hdr-notif-badge { position:absolute; top:0; right:0; background:var(--red); color:#fff; font-size:9px; font-weight:800; min-width:15px; height:15px; border-radius:8px; display:flex; align-items:center; justify-content:center; padding:0 3px; border:1.5px solid var(--dark); }

    /* 탭바 */
    .tabbar {
      position:fixed; bottom:0; left:0; right:0;
      background:var(--tabbar-bg,rgba(255,255,255,.95)); backdrop-filter:blur(10px);
      border-top:1px solid var(--border); display:flex;
      padding-bottom:env(safe-area-inset-bottom); z-index:200;
    }
    .tbtn {
      flex:1; border:none; background:none;
      display:flex; flex-direction:column; align-items:center;
      padding:8px 0 6px; color:var(--muted); font-size:10px; cursor:pointer;
    }
    .tbtn .ico { width:24px; height:24px; margin-bottom:3px; display:block; }
    .tbtn.on { color:var(--pri); }

    /* 페이지 */
    .page { display:none; }
    .page.on { display:block; }

    /* 달력 상단 */
    .cal-top { background:var(--pri); color:#fff; padding:12px 18px; }
    .cal-nav { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
    .cal-nav button {
      background:rgba(255,255,255,.25); border:none; color:#fff;
      width:32px; height:32px; border-radius:50%; font-size:18px;
      cursor:pointer; display:flex; align-items:center; justify-content:center;
    }
    .cal-nav .mlbl { font-size:18px; font-weight:700; }
    .cal-sum { display:flex; gap:10px; }
    .cs-item { flex:1; background:rgba(255,255,255,.2); border-radius:10px; padding:8px 10px; text-align:center; }
    .cs-item .cv { font-size:15px; font-weight:700; }
    .cs-item .cl { font-size:10px; opacity:.85; margin-top:1px; }

    /* 달력 그리드 */
    .dow-row {
      display:grid; grid-template-columns:repeat(7,1fr);
      background:var(--bg-sub); border-bottom:1px solid var(--border);
    }
    .dow-lbl { text-align:center; font-size:11px; font-weight:600; padding:7px 0; color:var(--muted); }
    .dow-lbl.sun { color:var(--red); }
    .dow-lbl.sat { color:var(--blue); }

    .cal-grid { background:var(--card); }
    .cal-week {
      position:relative; border-bottom:1px solid var(--border); overflow:hidden;
    }
    .cal-dates { display:grid; grid-template-columns:repeat(7,1fr); }
    .cal-events {
      position:absolute; top:38px; left:0; right:0;
      display:grid; grid-template-columns:repeat(7,1fr);
      gap:2px; padding:0 2px; pointer-events:none; z-index:1;
    }
    .cbar {
      height:16px; border-radius:3px; border-left:2px solid;
      padding:0 4px; font-size:9px; font-weight:600;
      white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
      display:flex; align-items:center; cursor:pointer; min-width:0;
      pointer-events:all;
    }
    .ccell {
      min-height: clamp(60px, calc((100dvh - 274px) / 6), 95px);
      border-right:1px solid var(--border);
      padding:3px 2px; cursor:pointer; overflow:hidden;
    }
    .ccell:nth-child(7n) { border-right:none; }
    .cal-wsum { position:absolute; bottom:4px; right:5px; pointer-events:none; z-index:3; background:var(--card); padding:2px 5px; border-radius:4px; opacity:.9; display:flex; align-items:baseline; gap:2px; box-shadow:0 1px 3px rgba(0,0,0,.08); }
    .cal-wsum-lbl { font-size:8px; font-weight:600; color:var(--muted); }
    .cal-wsum-val { font-size:9px; font-weight:700; color:var(--pri); }
    .ccell.other { background:var(--bg-sub); }
    .ccell.other .dnum { color:var(--border); }
    .ccell:active { background:var(--chip-bg); }

    .dnum {
      font-size:12px; font-weight:600; color:var(--text2);
      display:inline-flex; width:22px; height:22px;
      align-items:center; justify-content:center; border-radius:50%;
    }
    .ccell.today .dnum { background:var(--pri); color:#fff !important; }
    .ccell.sunday:not(.other) .dnum { color:var(--red); }
    .ccell.saturday:not(.other) .dnum { color:var(--blue); }
    .ccell.holiday:not(.other) .dnum { color:var(--red) !important; }
    .holi { font-size:8px; color:var(--red); text-align:center; line-height:1.3; margin-top:1px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }

    /* 공통 */
    .sec { padding:14px; }
    .sec-title { font-size:12px; font-weight:700; color:var(--muted); margin-bottom:8px; letter-spacing:.3px; }
    .card { background:var(--card); border-radius:14px; overflow:hidden; margin-bottom:12px; }
    .empty { text-align:center; color:var(--muted); padding:40px 20px; font-size:14px; line-height:1.7; }
    .es { text-align:center; padding:52px 24px 40px; }
    .es-icon { font-size:52px; margin-bottom:16px; line-height:1; }
    .es-title { font-size:17px; font-weight:700; color:var(--text); margin-bottom:8px; }
    .es-desc { font-size:14px; color:var(--muted); line-height:1.8; }

    /* 온보딩 */
    .ob-ov { position:fixed; inset:0; background:rgba(0,0,0,.55); z-index:900; display:flex; align-items:flex-end; }
    .ob-card { background:var(--card); border-radius:28px 28px 0 0; padding:36px 28px calc(44px + env(safe-area-inset-bottom)); width:100%; overflow:hidden; }
    .ob-content { touch-action:pan-y; transition:transform .24s cubic-bezier(.22,.61,.36,1), opacity .24s ease; }
    .ob-content.dragging { transition:none; }
    .ob-icon { font-size:56px; text-align:center; margin-bottom:22px; line-height:1; }
    .ob-title { font-size:22px; font-weight:800; text-align:center; margin-bottom:10px; }
    .ob-desc { font-size:15px; color:var(--muted); text-align:center; line-height:1.8; margin-bottom:32px; }
    .ob-dots { display:flex; justify-content:center; gap:7px; margin-bottom:24px; }
    .ob-dot { width:7px; height:7px; border-radius:50%; background:var(--border); transition:all .25s; }
    .ob-dot.on { width:22px; background:var(--pri); border-radius:4px; }
    .ob-btn { width:100%; padding:17px; background:var(--pri); color:#fff; border:none; border-radius:16px; font-size:16px; font-weight:700; cursor:pointer; font-family:inherit; }
    .occ-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
    .occ-chip { display:flex; flex-direction:column; align-items:center; gap:6px; padding:16px 6px; border:1.5px solid var(--border); border-radius:14px; cursor:pointer; background:var(--card); }
    .occ-chip:active { background:var(--chip-bg); }
    .occ-chip.on { border-color:var(--pri); background:var(--chip-bg); }
    .occ-chip .occ-icon { font-size:24px; line-height:1; }
    .occ-chip .occ-label { font-size:12px; font-weight:600; color:var(--text); }

    /* 기록 아이템 */
    .witem {
      display:flex; align-items:flex-start; padding:14px 16px;
      border-bottom:1px solid var(--border); gap:8px;
    }
    .witem:last-child { border-bottom:none; }
    .wi-main { flex:1; min-width:0; }
    .wi-site { font-size:16px; font-weight:700; }
    .wi-dates { font-size:12px; color:var(--muted); margin-top:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .wi-wage { font-size:13px; color:var(--text2); margin-top:2px; }
    .wi-badge {
      display:inline-block; font-size:11px; font-weight:600;
      padding:2px 8px; border-radius:20px; margin-top:5px;
    }
    .badge-paid { background:var(--badge-paid); color:var(--green); }
    .badge-unpaid { background:var(--badge-unpaid); color:var(--red); }
    .badge-partial { background:var(--badge-partial); color:var(--pri); }
    .wi-right { text-align:right; flex-shrink:0; }
    .wi-calc { font-size:11px; color:var(--muted); margin-top:3px; }
    .wi-total { font-size:17px; font-weight:700; color:var(--pri); }
    .wi-del { background:none; border:none; color:var(--muted); font-size:16px; padding:4px 0 4px 6px; cursor:pointer; }
    .wi-who { font-size:13px; font-weight:700; color:var(--text2); }
    /* 알림 패널 */
    .notif-overlay { position:fixed; inset:0; z-index:97; background:rgba(0,0,0,.25); }
    .notif-panel { position:fixed; left:0; right:0; top:0; z-index:98; background:var(--bg); box-shadow:0 8px 28px rgba(0,0,0,.18); border-radius:0 0 20px 20px; max-height:0; overflow:hidden; transition:max-height .28s cubic-bezier(.4,0,.2,1); }
    .notif-panel.open { max-height:65vh; overflow-y:auto; }
    .notif-panel-head { display:flex; align-items:center; padding:14px 16px 10px; border-bottom:1px solid var(--border); }
    .notif-panel-title { font-size:16px; font-weight:700; flex:1; }
    .notif-read-all { background:none; border:none; color:var(--pri); font-size:13px; font-weight:600; cursor:pointer; padding:4px 8px; }
    .notif-read-all:disabled { color:var(--muted); cursor:default; }
    .notif-list { display:flex; flex-direction:column; }
    .notif-item { padding:13px 16px; display:flex; gap:12px; align-items:flex-start; border-bottom:1px solid var(--border); background:var(--bg); transition:background .15s; }
    .notif-item.unread { background:rgba(211,84,0,.05); }
    .notif-item-icon { font-size:18px; flex-shrink:0; margin-top:1px; }
    .notif-item-body { flex:1; min-width:0; }
    .notif-item-msg { font-size:13px; font-weight:500; color:var(--text); line-height:1.4; }
    .notif-item.unread .notif-item-msg { font-weight:700; }
    .notif-item-time { font-size:11px; color:var(--muted); margin-top:3px; }
    .notif-item-action { margin-top:7px; }
    .notif-item-action button { font-size:11px; font-weight:700; background:var(--pri); color:#fff; border:none; border-radius:8px; padding:4px 12px; cursor:pointer; }
    .notif-empty { padding:40px 16px; text-align:center; color:var(--muted); font-size:14px; }
    /* 공유 설정 */
    .vis-seg { display:flex; gap:6px; margin-top:6px; }
    .vis-btn { flex:1; border:1.5px solid var(--border); background:none; color:var(--muted); border-radius:8px; padding:7px 4px; font-size:12px; font-weight:600; cursor:pointer; }
    .vis-btn.on { border-color:var(--pri); background:var(--chip-bg); color:var(--pri); }
    .member-check { display:flex; align-items:center; gap:8px; padding:8px 0; border-bottom:1px solid var(--border); cursor:pointer; font-size:14px; }
    .mw-row { display:flex; align-items:center; gap:6px; padding:9px 0; border-bottom:1px solid var(--border); }
    .mw-check-label { display:flex; align-items:center; gap:7px; flex:1; font-size:14px; font-weight:500; cursor:pointer; min-width:0; }
    .mw-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .mw-wage { width:92px; text-align:right; border:1.5px solid var(--border); border-radius:8px; padding:5px 6px; font-size:16px; background:var(--bg); color:var(--text); }
    .mw-unit { width:72px; border:1.5px solid var(--border); border-radius:8px; padding:5px 2px; font-size:16px; background:var(--bg); color:var(--text); }
    .mw-tax-label { display:flex; flex-direction:column; align-items:center; gap:2px; flex-shrink:0; cursor:pointer; }
    .mw-tax-label input { width:16px; height:16px; accent-color:var(--pri); cursor:pointer; }
    .mw-tax-label span { font-size:9px; color:var(--muted); font-weight:600; }
    .member-check:last-child { border-bottom:none; }
    .member-check input { width:18px; height:18px; accent-color:var(--pri); cursor:pointer; }

    /* 같은 현장에 여러 명이 묶인 그룹 카드 */
    .wgroup { border-bottom:1px solid var(--border); }
    .wgroup:last-child { border-bottom:none; }
    .wgroup-head { display:flex; align-items:center; justify-content:space-between; padding:14px 16px 6px; }
    .wgroup-count { font-size:12px; color:var(--muted); font-weight:600; }
    .wgroup-body .witem { padding:8px 16px 8px 28px; border-bottom:none; }

    /* 잔액 카드 */
    .bal-card {
      background:linear-gradient(135deg,var(--pri),var(--dark));
      border-radius:16px; padding:20px; margin:14px 14px 0; color:#fff;
    }
    .bc-row { display:flex; gap:24px; }
    .bc-item .bi-l { font-size:11px; opacity:.8; }
    .bc-item .bi-v { font-size:15px; font-weight:700; margin-top:2px; }

    /* 입금 현장 아이템 */
    .pitem {
      padding:14px 16px 14px 12px; border-bottom:1px solid var(--border); cursor:pointer;
    }
    .pitem:last-child { border-bottom:none; }
    .pitem:active { background:var(--bg-sub); }
    .pi-top { display:flex; justify-content:space-between; align-items:flex-start; gap:8px; }
    .pi-site { font-size:16px; font-weight:700; }
    .pi-meta { font-size:12px; color:var(--muted); margin-top:2px; }
    .pi-right { text-align:right; flex-shrink:0; }
    .pi-exp { font-size:12px; color:var(--muted); }
    .pi-rcv { font-size:17px; font-weight:700; color:var(--green); }
    .pi-diff { font-size:12px; margin-top:2px; font-weight:600; }
    .pi-diff.minus { color:var(--red); }
    .pi-diff.plus { color:var(--green); }
    .pi-bottom { display:flex; align-items:center; justify-content:space-between; margin-top:8px; }
    .pi-arrow { font-size:12px; color:var(--muted); }

    /* 일괄 처리 바 */
    .bulk-bar { position:fixed; bottom:calc(60px + env(safe-area-inset-bottom)); left:0; right:0; background:var(--pri); color:#fff; display:none; z-index:150; padding:0 16px; height:48px; align-items:center; justify-content:space-between; gap:12px; }
    .bulk-bar.on { display:flex; }
    .bulk-bar-count { font-size:14px; font-weight:600; }
    .bulk-bar-btn { background:rgba(255,255,255,.22); border:none; color:#fff; font-size:13px; font-weight:700; padding:7px 18px; border-radius:20px; cursor:pointer; white-space:nowrap; }

    /* FAB */
    .fab {
      position:fixed; bottom:calc(68px + env(safe-area-inset-bottom)); right:20px;
      width:54px; height:54px; background:var(--pri); color:#fff;
      border:none; border-radius:50%; font-size:28px;
      box-shadow:0 4px 14px rgba(230,126,34,.45);
      display:flex; align-items:center; justify-content:center;
      cursor:pointer; z-index:150;
    }

    /* 오버레이 */
    .ov {
      position:fixed; inset:0; background:rgba(0,0,0,.45);
      display:flex; align-items:flex-end; z-index:300;
      opacity:0; pointer-events:none; transition:opacity .22s;
    }
    .ov.show { opacity:1; pointer-events:all; }
    .sheet {
      background:var(--card); border-radius:22px 22px 0 0; width:100%;
      padding:20px 20px calc(24px + env(safe-area-inset-bottom));
      transform:translateY(100%); transition:transform .25s cubic-bezier(.4,0,.2,1);
      max-height:90vh; overflow-y:auto;
    }
    .ov.show .sheet { transform:translateY(0); }
    .sh-handle { width:36px; height:4px; background:var(--border); border-radius:2px; margin:0 auto 18px; }
    .sh-title { font-size:18px; font-weight:700; margin-bottom:6px; }
    .sh-sub { font-size:13px; color:var(--muted); margin-bottom:16px; line-height:1.5; }

    /* 일일 메모 */
    .day-memo-area { margin-top:16px; padding-top:14px; border-top:1px solid var(--border); }
    .day-memo-area textarea { width:100%; padding:10px 12px; border:1.5px solid var(--border); border-radius:10px; font-size:16px; font-family:inherit; color:var(--text); background:var(--card); resize:none; box-sizing:border-box; line-height:1.5; outline:none; transition:border-color .18s; -webkit-appearance:none; }
    .day-memo-area textarea:focus { border-color:var(--pri); }
    .day-photo-grid { display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }
    .day-photo-grid:empty { margin-top:0; }
    .day-photo-thumb { position:relative; width:72px; height:72px; border-radius:10px; overflow:hidden; flex-shrink:0; }
    .day-photo-thumb img { width:100%; height:100%; object-fit:cover; cursor:pointer; }
    .day-photo-thumb button { position:absolute; top:2px; right:2px; width:20px; height:20px; border-radius:50%; background:rgba(0,0,0,.6); color:#fff; border:none; font-size:11px; cursor:pointer; display:flex; align-items:center; justify-content:center; padding:0; }
    .note-dot { width:4px; height:4px; border-radius:50%; background:var(--muted); margin:1px auto 0; }

    /* 폼 */
    .fg { margin-bottom:14px; position:relative; }
    .site-dropdown { display:none; position:absolute; top:calc(100% - 6px); left:0; right:0; background:var(--card); border:1.5px solid var(--pri); border-top:none; border-radius:0 0 11px 11px; box-shadow:0 6px 20px rgba(0,0,0,.13); z-index:200; max-height:220px; overflow-y:auto; }
    .sdi { padding:11px 14px; cursor:pointer; border-bottom:1px solid var(--border); }
    .sdi:last-child { border-bottom:none; }
    .sdi:active { background:var(--bg-sub); }
    .sdi-name { font-size:14px; font-weight:600; color:var(--text); }
    .sdi-meta { font-size:11px; color:var(--muted); margin-top:2px; }
    .fg label { display:block; font-size:13px; font-weight:600; color:var(--muted); margin-bottom:6px; }
    .fg input, .fg textarea {
      width:100%; padding:13px 14px; border:1.5px solid var(--border);
      border-radius:11px; font-size:16px; font-family:inherit;
      color:var(--text); background:var(--card); outline:none; transition:border-color .18s;
      box-sizing:border-box; -webkit-appearance:none; appearance:none;
    }
    .fg input:focus, .fg textarea:focus { border-color:var(--pri); }
    .fg select {
      width:100%; padding:13px 14px; border:1.5px solid var(--border);
      border-radius:11px; font-size:16px; font-family:inherit;
      color:var(--text); outline:none; transition:border-color .18s;
      box-sizing:border-box; -webkit-appearance:none; appearance:none;
      background:var(--card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%238E8E93' d='M1 1l5 5 5-5'/%3E%3C/svg%3E") no-repeat right 14px center;
    }
    .fg select:focus { border-color:var(--pri); }
    .fg-date-btn {
      width:100%; padding:13px 14px; border:1.5px solid var(--border);
      border-radius:11px; font-size:16px; font-family:inherit;
      color:var(--text); background:var(--card); text-align:left; cursor:pointer;
      box-sizing:border-box; display:flex; align-items:center; justify-content:space-between;
    }
    .fg-date-btn:active { border-color:var(--pri); }

    /* 색상 선택 */
    .color-chips { display:flex; flex-wrap:wrap; gap:8px; }
    .cchip {
      width:32px; height:32px; border-radius:50%; cursor:pointer;
      border:3px solid transparent; transition:transform .15s, border-color .15s;
      flex-shrink:0;
    }
    .cchip:active { transform:scale(.9); }
    .cchip.on { border-color:var(--text); transform:scale(1.15); }

    /* 날짜 칩 */
    .date-chips { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:10px; min-height:36px; }
    .dchip {
      display:inline-flex; align-items:center; gap:6px;
      background:var(--chip-bg); border:1px solid var(--pri); border-radius:20px;
      padding:5px 10px 5px 12px; font-size:13px; color:var(--dark); font-weight:600;
    }
    .dchip button { background:none; border:none; color:var(--pri); font-size:16px; cursor:pointer; padding:0; line-height:1; }
    .add-date-btn {
      background:none; border:1.5px dashed var(--border);
      border-radius:20px; padding:6px 16px;
      font-size:13px; color:var(--muted); cursor:pointer;
    }

    /* 현장정보 접이식 */
    .info-section { border-top:1px solid var(--border); margin:4px 0 4px; }
    .info-toggle {
      display:flex; align-items:center; justify-content:space-between;
      padding:11px 0; cursor:pointer; user-select:none;
    }
    .it-lbl { font-size:14px; font-weight:600; color:var(--muted); }
    .info-arrow { width:22px; height:22px; color:var(--muted); transition:transform .2s; flex-shrink:0; }
    .info-arrow.open { transform:rotate(180deg); }
    .info-body { display:none; padding-top:2px; }
    .info-body.open { display:block; }

    /* 날짜 선택 캘린더 */
    .mode-seg { display:flex; background:var(--bg); border-radius:10px; padding:3px; margin-bottom:14px; }
    .mode-btn { flex:1; border:none; background:none; border-radius:8px; padding:8px 0; font-size:14px; font-weight:600; color:var(--muted); cursor:pointer; transition:all .15s; }
    .mode-btn.on { background:var(--card); color:var(--pri); box-shadow:0 1px 3px rgba(0,0,0,.1); }
    .pick-nav { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
    .pick-nav button { background:none; border:none; font-size:22px; color:var(--pri); cursor:pointer; padding:4px 8px; }
    .pick-nav .pm { font-size:16px; font-weight:700; }
    .pick-dow { display:grid; grid-template-columns:repeat(7,1fr); margin-bottom:4px; }
    .pick-dow span { text-align:center; font-size:11px; font-weight:600; color:var(--muted); padding:4px 0; }
    .pick-dow .s { color:var(--red); }
    .pick-dow .sa { color:var(--blue); }
    .pick-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; margin-bottom:12px; }
    .pd {
      aspect-ratio:1; display:flex; align-items:center; justify-content:center;
      border-radius:50%; font-size:13px; cursor:pointer; border:none; background:none;
      color:var(--text); font-weight:500; transition:background .1s;
    }
    .pd.other { color:#ddd; pointer-events:none; }
    .pd.already { background:var(--bg-sub); color:var(--muted); border-radius:50%; }
    .pd.sel { background:var(--pri); color:#fff; font-weight:700; }
    .pd.rng-start { background:var(--dark); color:#fff; font-weight:700; }
    .pd.in-rng { background:#FFE0BC; color:var(--dark); border-radius:0; }
    .pd.rng-start + .pd.in-rng, .in-rng:first-of-type { border-radius:50% 0 0 50%; }
    .pd.in-rng.rng-end-mark { background:#FFE0BC; border-radius:0 50% 50% 0; }
    .pd.tod:not(.sel):not(.rng-start) { border:1.5px solid var(--pri); }
    .pd.sun:not(.sel):not(.rng-start):not(.other) { color:var(--red); }
    .pd.sat:not(.sel):not(.rng-start):not(.other) { color:var(--blue); }
    .pd.holi:not(.sel):not(.rng-start):not(.other) { color:var(--red); }
    .range-hint { text-align:center; font-size:13px; color:var(--muted); padding:8px 12px; background:var(--bg); border-radius:8px; margin-bottom:10px; }

    /* 입금 내역 행 */
    .pay-row {
      display:flex; align-items:center; padding:11px 0;
      border-bottom:1px solid var(--border); gap:8px;
    }
    .pay-row:last-of-type { border-bottom:none; }
    .pr-main { flex:1; }
    .pr-date { font-size:12px; color:var(--muted); }
    .pr-amt { font-size:16px; font-weight:700; color:var(--green); }
    .pr-note { font-size:12px; color:var(--text2); margin-top:1px; }
    .pr-del { background:none; border:none; color:var(--muted); font-size:18px; cursor:pointer; padding:4px; }

    /* 완납 토글 */
    .paid-toggle {
      display:flex; align-items:center; justify-content:space-between;
      padding:16px 0; border-top:1px solid var(--border); margin-top:16px;
    }
    .pt-label { font-size:16px; font-weight:600; }
    .toggle-sw {
      width:51px; height:31px; background:var(--border);
      border-radius:15.5px; border:none; cursor:pointer;
      position:relative; transition:background .2s; flex-shrink:0;
    }
    .toggle-sw.on { background:var(--green); }
    .toggle-sw::after {
      content:''; position:absolute; top:2px; left:2px;
      width:27px; height:27px; background:#fff; border-radius:50%;
      box-shadow:0 2px 4px rgba(0,0,0,.2); transition:transform .2s;
    }
    .toggle-sw.on::after { transform:translateX(20px); }

    /* 버튼 */
    .btn-pri {
      width:100%; padding:15px; background:var(--pri); color:#fff;
      border:none; border-radius:13px; font-size:17px; font-weight:700;
      cursor:pointer; margin-top:4px;
    }
    .btn-out {
      width:100%; padding:13px; background:none; color:var(--pri);
      border:1.5px solid var(--pri); border-radius:13px;
      font-size:16px; font-weight:600; cursor:pointer; margin-top:10px;
    }

    /* 통계 */
    .stat-nav { display:flex; align-items:center; justify-content:space-between; padding:14px 18px 6px; }
    .stat-nav button { background:none; border:none; font-size:22px; color:var(--pri); cursor:pointer; padding:4px; }
    .stat-nav .sm { font-size:18px; font-weight:700; }
    /* 통계 탭 — 핵심 수치 히어로 */
    .stat-hero { margin:8px 14px 4px; background:var(--card); border-radius:16px; padding:18px 16px; }
    .stat-hero-lbl { font-size:12px; color:var(--muted); font-weight:600; margin-bottom:2px; }
    .stat-hero-val { font-size:32px; font-weight:900; color:var(--fg); line-height:1.1; margin-bottom:14px; }
    .stat-hero-row { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
    .stat-hero-box { background:var(--bg); border-radius:12px; padding:11px 14px; }
    .shb-lbl { font-size:11px; color:var(--muted); font-weight:600; }
    .shb-val { font-size:20px; font-weight:800; margin-top:3px; }
    .shb-sub { font-size:10px; color:var(--muted); margin-top:2px; }

    /* 통계 탭 — 보조 수치 3칸 */
    .stat-sub-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:8px; padding:8px 14px 4px; }
    .ssb { background:var(--card); border-radius:12px; padding:12px 14px; }
    .ssl { font-size:11px; color:var(--muted); font-weight:600; }
    .ssv { font-size:20px; font-weight:800; margin-top:3px; color:var(--fg); }

    /* 로그인 화면 */
    #loginScreen {
      position:fixed; inset:0; background:
        linear-gradient(180deg, rgba(20,12,6,.12) 0%, rgba(20,12,6,.4) 45%, rgba(184,72,10,.88) 72%, rgba(184,72,10,.96) 100%),
        url('img/intro-bg.jpg') center top / cover no-repeat, var(--dark);
      display:flex; flex-direction:column; align-items:center; justify-content:flex-end;
      z-index:1000; color:#fff; padding:32px 32px 40px; overflow-y:auto;
      padding-bottom:calc(40px + env(safe-area-inset-bottom));
    }
    .login-biz-footer { margin-top:22px; text-align:center; font-size:10.5px; line-height:1.7; color:rgba(255,255,255,.65); }
    .login-biz-links a { color:rgba(255,255,255,.85); text-decoration:underline; }
    .login-title { font-size:28px; font-weight:800; margin-bottom:8px; text-shadow:0 2px 10px rgba(0,0,0,.3); }
    .login-sub { font-size:15px; opacity:.85; margin-bottom:36px; text-shadow:0 1px 8px rgba(0,0,0,.25); }
    .google-btn {
      background:#fff; color:#333; border:none; border-radius:14px;
      padding:16px 28px; font-size:16px; font-weight:600; cursor:pointer;
      display:flex; align-items:center; gap:12px;
      box-shadow:0 4px 16px rgba(0,0,0,.2); width:100%; justify-content:center;
    }
    .google-icon { width:22px; height:22px; }
    .apple-btn {
      background:#000; color:#fff; border:none; border-radius:14px;
      padding:16px 28px; font-size:16px; font-weight:600; cursor:pointer;
      display:flex; align-items:center; gap:10px; justify-content:center;
      box-shadow:0 4px 16px rgba(0,0,0,.2); width:100%; margin-top:12px;
    }
    .kakao-btn {
      background:#FEE500; color:#191919; border:none; border-radius:14px;
      padding:16px 28px; font-size:16px; font-weight:600; cursor:pointer;
      display:flex; align-items:center; gap:10px; justify-content:center;
      box-shadow:0 4px 16px rgba(0,0,0,.2); width:100%; margin-top:12px;
    }

    /* 헤더 유저 정보 */

    /* 날짜 모달 작업 행 */
    .dm-work {
      display:flex; align-items:center; padding:12px 0;
      border-bottom:1px solid var(--border);
    }
    .dm-work:last-of-type { border-bottom:none; }
    .dm-site { flex:1; font-size:15px; font-weight:600; }
    .dm-wage { font-size:15px; font-weight:700; color:var(--pri); margin-right:8px; }
    .dm-edit { background:none; border:none; color:var(--muted); font-size:15px; cursor:pointer; }

    /* 설정 탭 */
    .set-group { margin:0 16px 6px; background:var(--card); border-radius:16px; overflow:hidden; }
    .set-group-lbl { padding:20px 20px 6px; font-size:13px; font-weight:600; color:var(--muted); }
    .set-item { display:flex; align-items:center; padding:13px 16px; border-bottom:1px solid var(--border); gap:13px; min-height:54px; }
    .set-item:last-child { border-bottom:none; }
    .set-icon { width:32px; height:32px; border-radius:9px; display:flex; align-items:center; justify-content:center; font-size:16px; flex-shrink:0; }
    .set-text { flex:1; min-width:0; }
    .set-item-lbl { font-size:15px; font-weight:500; color:var(--text); }
    .set-item-sub { font-size:12px; color:var(--muted); margin-top:2px; }
    .set-item-input { width:120px; text-align:right; border:none; background:none; font-size:16px; font-weight:600; color:var(--pri); outline:none; }
    /* 설정 토글 스위치 */
    .sw-wrap { position:relative; display:inline-block; width:44px; height:26px; flex-shrink:0; cursor:pointer; }
    .sw-wrap input { opacity:0; width:0; height:0; position:absolute; }
    .sw { position:absolute; inset:0; background:var(--border); border-radius:13px; transition:background .2s; }
    .sw::before { content:''; position:absolute; width:22px; height:22px; left:2px; top:2px; background:#fff; border-radius:50%; transition:transform .2s; box-shadow:0 1px 3px rgba(0,0,0,.25); }
    .sw-wrap input:checked + .sw { background:var(--pri); }
    .sw-wrap input:checked + .sw::before { transform:translateX(18px); }

    .fg .tax-chk-label { display:flex; align-items:center; gap:7px; font-size:13px; font-weight:500; color:var(--text); cursor:pointer; margin-top:8px; margin-bottom:0; }
    .fg .tax-chk-label input[type="checkbox"] { width:16px; height:16px; padding:0; border:1.5px solid var(--border); border-radius:4px; flex-shrink:0; accent-color:var(--pri); appearance:auto; -webkit-appearance:auto; }
    .tax-tag { font-size:9px; font-weight:700; color:#E74C3C; background:rgba(231,76,60,.12); padding:1px 5px; border-radius:8px; margin-left:4px; white-space:nowrap; }
    .theme-seg { display:flex; background:var(--bg-sub); border-radius:10px; padding:3px; margin:4px 16px 14px; }
    .theme-seg button { flex:1; border:none; background:none; padding:8px 4px; font-size:13px; font-weight:600; color:var(--muted); cursor:pointer; border-radius:8px; transition:all .15s; }
    .theme-seg button.on { background:var(--card); color:var(--text); box-shadow:0 1px 4px rgba(0,0,0,.15); }
    .tc-chips { display:flex; gap:10px; margin:10px 16px 14px; }
    .tc-chip { width:30px; height:30px; border-radius:50%; cursor:pointer; border:2px solid transparent; box-shadow:inset 0 0 0 1px rgba(0,0,0,.06); }
    .tc-chip.on { border-color:var(--text); }
    .set-profile { display:flex; align-items:center; gap:14px; padding:18px 16px; }
    .set-avatar { width:50px; height:50px; border-radius:50%; object-fit:cover; background:var(--bg-sub); flex-shrink:0; }
    .set-profile-name { font-size:16px; font-weight:700; }
    .set-profile-email { font-size:13px; color:var(--muted); margin-top:3px; }
    .set-logout-btn { display:block; width:calc(100% - 32px); margin:10px 16px 32px; padding:15px; background:var(--card); border:none; border-radius:16px; font-size:16px; font-weight:600; color:var(--red); cursor:pointer; }
    .set-delete-account-btn { display:block; width:100%; margin:-20px 0 32px; padding:8px; background:none; border:none; font-size:13px; font-weight:500; color:var(--muted); cursor:pointer; text-decoration:underline; }
    #ptrInd { position:fixed; top:calc(env(safe-area-inset-top,0px) + 58px); left:50%; transform:translateX(-50%) translateY(-8px); background:var(--pri); color:#fff; font-size:12px; font-weight:700; padding:6px 16px; border-radius:20px; opacity:0; transition:opacity .2s; z-index:300; pointer-events:none; white-space:nowrap; }
    #toast { position:fixed; bottom:calc(72px + env(safe-area-inset-bottom,0px)); left:50%; transform:translateX(-50%) translateY(12px); background:rgba(28,28,30,.93); color:#fff; padding:11px 20px; border-radius:22px; font-size:14px; font-weight:600; opacity:0; transition:opacity .25s, transform .25s; z-index:500; pointer-events:none; white-space:nowrap; }
    #toast.show { opacity:1; transform:translateX(-50%) translateY(0); }

    /* 수입 추이 차트 */
    .income-chart-wrap { margin:0 14px 4px; background:var(--card); border-radius:16px; padding:16px 14px 8px; }
    .income-chart-title { font-size:13px; font-weight:700; color:var(--muted); margin-bottom:12px; }

    /* 내보내기 툴바 */
    .export-toolbar { display:flex; gap:8px; padding:0 14px 14px; }
    .export-btn { flex:1; display:flex; align-items:center; justify-content:center; gap:6px; padding:12px 8px; background:var(--card); border:none; border-radius:13px; font-size:13px; font-weight:700; color:var(--text); cursor:pointer; font-family:inherit; }
    .export-btn:active { opacity:.7; }

    /* 프리미엄 예고 카드 */
    .prem-section { padding:0 14px 32px; }
    .prem-section-title { font-size:12px; font-weight:700; color:var(--muted); margin-bottom:10px; letter-spacing:.5px; text-transform:uppercase; }
    .prem-card { background:var(--card); border-radius:16px; padding:20px; margin-bottom:10px; position:relative; overflow:hidden; opacity:.85; cursor:pointer; transition:opacity .15s; }
    .prem-card:active { opacity:1; }
    .prem-card::after { content:''; position:absolute; inset:0; background:repeating-linear-gradient(45deg,transparent,transparent 8px,rgba(0,0,0,.03) 8px,rgba(0,0,0,.03) 16px); pointer-events:none; }
    .prem-cta-btn { width:100%; margin-top:6px; padding:15px; border:none; border-radius:14px; background:var(--pri); color:#fff; font-size:15px; font-weight:700; cursor:pointer; font-family:inherit; }
    .prem-badge { display:inline-block; font-size:10px; font-weight:700; padding:3px 8px; border-radius:20px; background:var(--pri); color:#fff; margin-bottom:10px; opacity:.8; }
    .prem-card-title { font-size:15px; font-weight:700; margin-bottom:5px; }
    .prem-card-desc { font-size:13px; color:var(--muted); line-height:1.6; }
    .prem-lock-icon { position:absolute; top:16px; right:16px; font-size:18px; opacity:.4; }

    /* 프리미엄 업그레이드 티어 카드 */
    .pt-card { position:relative; background:var(--card); border:1.5px solid var(--border); border-radius:18px; padding:20px; margin-bottom:14px; }
    .pt-card.hl { border-color:var(--pri); background:var(--chip-bg); }
    .pt-badge { position:absolute; top:-10px; left:16px; background:var(--pri); color:#fff; font-size:11px; font-weight:700; padding:3px 10px; border-radius:20px; }
    .pt-title { font-size:17px; font-weight:800; color:var(--text); }
    .pt-sub { font-size:12px; color:var(--muted); margin-top:2px; }
    .pt-price { margin:14px 0; }
    .pt-strike { font-size:13px; color:var(--muted); text-decoration:line-through; margin-right:6px; }
    .pt-amt { font-size:24px; font-weight:800; color:var(--text); }
    .pt-feats { list-style:none; margin:0 0 16px; padding:0; }
    .pt-feats li { font-size:13px; color:var(--text2); padding:5px 0 5px 22px; position:relative; }
    .pt-feats li::before { content:'✓'; position:absolute; left:0; color:var(--pri); font-weight:800; }
    .pt-btn { width:100%; padding:14px; border:none; border-radius:14px; font-size:15px; font-weight:700; cursor:pointer; background:var(--pri); color:#fff; }
    .pt-btn:disabled { opacity:.4; cursor:not-allowed; }
    .prem-consent-row { display:flex; align-items:flex-start; gap:8px; margin:14px 2px; font-size:12px; color:var(--text2); line-height:1.5; cursor:pointer; }
    .prem-consent-row input { margin-top:2px; flex-shrink:0; }
    .prem-consent-row a { color:var(--pri); }
    .pt-current { text-align:center; font-size:13px; font-weight:600; color:var(--green); background:var(--badge-paid); border-radius:12px; padding:12px; margin-bottom:14px; }

    /* 인쇄 */
    @media print {
      .tabbar, .fab, .ov, #ptrInd, #toast, .stat-nav,
      .export-toolbar, .prem-section, #page-cal, #page-work,
      #page-pay, #page-set { display:none !important; }
      .page { display:none !important; }
      #page-stat { display:block !important; }
      body { background:#fff; color:#000; }
      .income-chart-wrap { border:1px solid #ddd; }
    }
