:root{
    color-scheme:only light;   /* 폰 다크모드에서도 항상 밝은 화면 */
    --bg:#f3f5f8;
    --panel:#ffffff;
    --line:#dfe4ea;
    --text:#1f2937;
    --muted:#6b7280;
    --primary:#2563eb;
    --primary-soft:#eaf1ff;
    --danger:#dc2626;
    --warning:#d97706;
    --success:#15803d;
    --shadow:0 8px 28px rgba(15,23,42,.08);
    --radius:14px;
    --responsive-week-height:132px;
    /* 달력 칸 치수 — JS(calMetrics)가 이 값을 읽어 주 높이를 계산합니다 */
    --cal-head:39px;       /* 날짜 숫자 줄 높이 */
    --cal-proj-row:10px;   /* 프로젝트 전체 일정바 한 줄 */
    --cal-ev-row:20px;     /* 일정바 한 줄 */
    --cal-ev-gap:2px;
    --cal-min-week:104px;  /* 주 최소 높이 */
    --screen-bg:#b3b3b3;
    --sidebar-bg:#b3b3b3;
  }

  *{box-sizing:border-box}
  html{scroll-behavior:smooth}
  html{background:var(--screen-bg);color-scheme:only light}
  html,body{margin:0;min-height:100%;font-family:"Malgun Gothic","Noto Sans KR",Arial,sans-serif;color:var(--text);background:var(--screen-bg)}
  button,input,select,textarea{font:inherit}
  button{cursor:pointer}
  .app{min-height:100vh;display:grid;grid-template-rows:auto 1fr}

  .topbar{
    height:64px;background:#172033;color:#fff;display:flex;align-items:center;
    justify-content:space-between;padding:0 20px;gap:16px;box-shadow:0 2px 14px rgba(0,0,0,.14);
    position:sticky;top:0;z-index:30
  }
  .brand{display:flex;align-items:center;gap:12px;min-width:220px}
  .brand-mark{
    width:36px;height:36px;border-radius:10px;background:linear-gradient(145deg,#3b82f6,#1d4ed8);
    display:grid;place-items:center;font-weight:800;box-shadow:0 6px 15px rgba(37,99,235,.35)
  }
  .brand strong{font-size:17px}
  .brand small{display:block;color:#b7c0d1;font-size:11px;margin-top:2px}
  .top-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
  .data-file-status{
    max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    font-size:10px;color:#aeb9cb;padding:0 2px
  }
  .data-file-status.connected{color:#86efac}
  .data-file-status.warning{color:#fde68a}
  .screen-color-control{position:relative;overflow:hidden}
  .screen-color-control input[type=color]{
    position:absolute;width:1px;height:1px;opacity:0;pointer-events:none
  }
  .screen-color-swatch{
    width:15px;height:15px;border-radius:5px;background:var(--screen-bg);
    border:2px solid rgba(255,255,255,.82);box-shadow:0 0 0 1px rgba(15,23,42,.28);flex:0 0 auto
  }
  .screen-color-control:hover .screen-color-swatch{transform:scale(1.08)}

  .btn{
    border:1px solid transparent;border-radius:9px;padding:9px 12px;background:#fff;color:var(--text);
    font-weight:700;font-size:13px;transition:.18s;display:inline-flex;align-items:center;justify-content:center;gap:6px
  }
  .btn:hover{transform:translateY(-1px);box-shadow:0 5px 12px rgba(15,23,42,.12)}
  .btn.primary{background:var(--primary);color:#fff}
  .btn.dark{background:#25314a;color:#fff;border-color:#3a4865}
  .btn.ghost{background:transparent;color:#dbe5f5;border-color:#44506a}
  .btn.danger{background:#fff1f2;color:#be123c;border-color:#fecdd3}
  .btn.small{padding:6px 9px;font-size:12px;border-radius:7px}
  .btn.icon{width:36px;height:36px;padding:0}
  .btn.full-view-btn{flex:0 0 auto;white-space:nowrap;background:#25314a;color:#fff;border-color:#3a4865}
  .btn.full-view-btn.active{background:#2563eb;border-color:#2563eb}
  .sidebar-view-switch{position:sticky;top:0;z-index:8;margin-bottom:12px;padding:2px 0 1px;background:var(--sidebar-bg)}
  .sidebar-view-switch .full-view-btn{width:100%;box-shadow:0 3px 10px rgba(15,23,42,.12)}

  .layout{display:grid;grid-template-columns:280px minmax(0,1fr);min-height:calc(100vh - 64px);background:var(--screen-bg)}
  .sidebar{
    background:var(--sidebar-bg);border-right:1px solid var(--line);padding:16px;overflow:auto;
    position:sticky;top:64px;height:calc(100vh - 64px)
  }
  .main{padding:18px;min-width:0;background:var(--screen-bg);transition:background-color .18s}
  .section-title{display:flex;justify-content:space-between;align-items:center;margin:0 0 10px}
  .section-title h3{font-size:13px;margin:0;color:#4b5563;letter-spacing:.02em}
  .sidebar-card{
    background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:12px;
    box-shadow:0 3px 12px rgba(15,23,42,.035)
  }

  .stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .stat{background:#f8fafc;border:1px solid #e7ebf0;border-radius:10px;padding:10px}
  .stat .label{font-size:11px;color:var(--muted)}
  .stat .value{font-size:20px;font-weight:800;margin-top:4px}
  .stat.warning .value{color:var(--warning)}
  .stat.danger .value{color:var(--danger)}
  .stat.success .value{color:var(--success)}

  .project-list{display:flex;flex-direction:column;gap:7px;max-height:340px;overflow:auto;padding-right:2px}
  .project-item{
    border:1px solid #e2e7ee;border-radius:10px;padding:10px;background:#fff;cursor:pointer;transition:.16s
  }
  .project-item:hover{border-color:#a9b9d2;transform:translateX(2px)}
  .project-item.active{border-color:var(--primary);box-shadow:0 0 0 2px rgba(37,99,235,.12)}
  .project-head{display:flex;align-items:center;gap:8px}
  .dot{width:10px;height:10px;border-radius:999px;flex:0 0 auto}
  .project-name{font-size:13px;font-weight:800;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .project-meta{font-size:11px;color:var(--muted);margin-top:6px;display:flex;justify-content:space-between;gap:6px}
  .progress{height:6px;background:#e9edf2;border-radius:999px;overflow:hidden;margin-top:7px}
  .progress > span{height:100%;display:block;border-radius:999px;background:var(--primary)}

  .upcoming-list{display:flex;flex-direction:column;gap:8px;max-height:250px;overflow:auto}
  .upcoming-item{padding:8px;border-left:4px solid var(--primary);background:#f8fafc;border-radius:7px}
  .upcoming-item strong{display:block;font-size:12px;margin-bottom:3px}
  .upcoming-item span{font-size:11px;color:var(--muted)}
  .empty-mini{font-size:12px;color:var(--muted);padding:12px 4px;text-align:center}

  .personnel-list{display:flex;flex-direction:column;gap:7px}
  .personnel-item{
    display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;
    border:1px solid #e2e7ee;border-radius:9px;background:#f8fafc;font-size:12px
  }
  .personnel-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:900;color:#334155}
  .personnel-right{display:flex;align-items:center;gap:5px;flex:0 0 auto}
  .personnel-days{flex:0 0 auto;font-weight:900;color:var(--primary)}
  .personnel-pay-wrap{position:relative;display:inline-flex;align-items:center;flex:0 0 auto}
  .personnel-pay-btn{
    width:20px;height:20px;padding:0;border:1px solid #cbd5e1;border-radius:5px;background:#fff;color:#475569;
    display:grid;place-items:center;font-size:10px;font-weight:900;line-height:1;box-shadow:0 1px 2px rgba(15,23,42,.06);user-select:none
  }
  .personnel-pay-btn:hover{border-color:#93a4ba;background:#f1f5f9;color:#1e40af}
  .personnel-pay-btn:active,.personnel-pay-wrap.show .personnel-pay-btn{background:var(--primary);border-color:var(--primary);color:#fff}
  .personnel-pay-popup{
    display:none;position:absolute;right:0;bottom:calc(100% + 6px);z-index:25;min-width:max-content;max-width:230px;
    padding:7px 9px;border-radius:7px;background:#172033;color:#fff;font-size:11px;font-weight:800;white-space:nowrap;
    box-shadow:0 6px 18px rgba(15,23,42,.24);pointer-events:none
  }
  .personnel-pay-wrap.show .personnel-pay-popup{display:block}

  .toolbar{
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px;
    background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px;box-shadow:var(--shadow)
  }
  .month-nav{display:flex;align-items:center;gap:7px}
  .month-title{font-size:21px;font-weight:900;min-width:150px;text-align:center}
  .project-create-toggle{white-space:nowrap;border-color:#b8c5d8;background:#f8fafc;color:#334155}
  .project-create-toggle.active{background:#2563eb;border-color:#2563eb;color:#fff;box-shadow:0 0 0 3px rgba(37,99,235,.13)}
  body.project-create-mode .day.drag-range{background:#dbeafe;box-shadow:inset 0 0 0 2px rgba(37,99,235,.55)}
  body.project-create-mode .day.drag-start,body.project-create-mode .day.drag-end{background:#bfdbfe;box-shadow:inset 0 0 0 3px rgba(29,78,216,.78)}
  .search-wrap{position:relative;flex:1;min-width:180px}
  .search-wrap input{
    width:100%;height:38px;border:1px solid #cfd6df;border-radius:9px;padding:0 38px 0 12px;background:#fff
  }
  .search-clear{
    position:absolute;right:6px;top:5px;border:0;background:transparent;width:28px;height:28px;color:#7b8493;border-radius:6px
  }
  .search-clear:hover{background:#eef2f7}
  .filter-select{height:38px;border:1px solid #cfd6df;border-radius:9px;padding:0 28px 0 10px;background:#fff;min-width:120px}

  .calendar-card{
    background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
    overflow:hidden;box-shadow:var(--shadow)
  }
  .calendar-card.full-range-mode{overflow:hidden;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow)}
  .calendar-card.full-range-mode > .weekdays{display:grid}
  .calendar-card.full-range-mode .calendar{padding:0;gap:0;background:#fff}
  .current-month-block,.continuation-month{display:flex;flex-direction:column;background:#fff}
  .continuation-month{border-top:1px solid #cfd6df}
  .continuation-month-title{padding:9px 14px;background:#172033;color:#fff;font-size:15px;font-weight:900}
  .continuation-month .weekdays{border-bottom:1px solid var(--line)}

  .weekdays{display:grid;grid-template-columns:repeat(7,1fr);background:#f8fafc;border-bottom:1px solid var(--line)}
  .weekday{padding:10px;text-align:center;font-size:12px;font-weight:800;color:#596274}
  .weekday:first-child{color:#dc2626}
  .weekday:last-child{color:#2563eb}

  .calendar{display:flex;flex-direction:column;background:#fff}
  .week-row{
    position:relative;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));
    min-height:max(var(--responsive-week-height,132px),var(--required-week-height,118px));
    border-bottom:1px solid #dfe4ea;overflow:hidden
  }
  .calendar-card.full-range-mode .week-row{min-height:max(var(--responsive-week-height,132px),var(--required-week-height,118px))}
  .week-row:last-child{border-bottom:0}
  .day{
    min-width:0;padding:7px;border-right:1px solid #e3e7ed;background:#fff;
    position:relative;transition:.15s;z-index:1
  }
  .day.last-day{border-right:0}
  .day:hover{background:#fbfdff}
  .day.outside{background:#f7f8fa;color:#a7afbb}
  .day.today{background:#f4f8ff}
  .day.drag-range{background:#eaf2ff;box-shadow:inset 0 0 0 1px rgba(37,99,235,.28)}
  .day.drag-start,.day.drag-end{background:#dce9ff;box-shadow:inset 0 0 0 2px rgba(37,99,235,.65)}
  body.calendar-dragging{user-select:none;cursor:crosshair}
  body.calendar-dragging *{cursor:crosshair!important}
  .day.sunday .day-number{color:#dc2626}
  .day.saturday .day-number{color:#2563eb}
  .day.holiday .day-number{color:#dc2626!important}
  .day.today.holiday .day-number{color:#fff!important}
  .day-head{display:flex;justify-content:space-between;align-items:center;gap:5px;position:relative;z-index:4}
  .holiday-name{
    min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    text-align:right;font-size:9px;font-weight:900;color:#dc2626;line-height:1.2
  }
  .day-number{
    min-width:27px;height:27px;padding:0 6px;border-radius:8px;display:grid;place-items:center;
    font-size:12px;font-weight:800;white-space:nowrap
  }
  .today .day-number{background:var(--primary);color:#fff!important}
  .day-add{
    width:25px;height:25px;border:0;background:transparent;color:#9aa3b2;border-radius:6px;
    font-size:18px;line-height:1;position:relative;z-index:5
  }
  .day:hover .day-add{color:var(--primary);background:#eaf1ff}
  .week-projects{
    position:absolute;left:0;right:0;top:var(--cal-head);height:var(--project-zone,0px);display:grid;
    grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:var(--cal-proj-row);gap:1px 0;
    align-content:start;padding:0 5px;pointer-events:none;z-index:4
  }
  .project-schedule-bar{
    position:relative;min-width:0;height:8px;margin:0 2px;border:0;border-radius:999px;background:var(--project-color,#64748b);
    overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:rgba(255,255,255,.96);font-size:7px;line-height:8px;
    font-weight:900;padding:0 8px;cursor:grab;pointer-events:auto;touch-action:pinch-zoom;opacity:.9;box-shadow:0 1px 2px rgba(15,23,42,.12);
    transition:opacity .12s,filter .12s,box-shadow .12s
  }
  .project-schedule-bar:hover{height:10px;line-height:10px;opacity:1;box-shadow:0 3px 8px rgba(15,23,42,.18)}
  .project-schedule-bar:active{cursor:grabbing}
  .project-schedule-bar.continues-left{border-top-left-radius:1px;border-bottom-left-radius:1px;margin-left:-5px;padding-left:5px}
  .project-schedule-bar.continues-right{border-top-right-radius:1px;border-bottom-right-radius:1px;margin-right:-5px;padding-right:5px}
  .project-schedule-bar.drag-source{opacity:.18;filter:saturate(.35)}
  .project-bar-resize-handle{
    position:absolute;top:0;bottom:0;width:7px;z-index:3;cursor:ew-resize;background:rgba(255,255,255,.28);touch-action:pinch-zoom
  }
  .project-bar-resize-handle.left{left:0}
  .project-bar-resize-handle.right{right:0}
  body.project-bar-dragging{user-select:none;cursor:grabbing}
  body.project-bar-dragging *{cursor:grabbing!important}
  body.project-bar-dragging .project-bar-resize-handle{cursor:ew-resize!important}
  .week-events{
    position:absolute;left:0;right:0;top:calc(var(--cal-head) + var(--project-zone,0px));bottom:6px;display:grid;
    grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:var(--cal-ev-row);gap:var(--cal-ev-gap) 0;
    align-content:start;padding:0 5px;pointer-events:none;z-index:3
  }
  .project-drag-preview-grid{
    position:absolute;left:0;right:0;top:var(--cal-head);height:var(--cal-proj-row);display:grid;
    grid-template-columns:repeat(7,minmax(0,1fr));padding:0 5px;pointer-events:none;z-index:11
  }
  .project-drag-preview-bar{
    height:10px;margin:0 2px;padding:0 7px;border:1px dashed rgba(255,255,255,.9);border-radius:999px;
    overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#fff;font-size:7px;line-height:9px;font-weight:900;
    box-shadow:0 3px 10px rgba(15,23,42,.28);opacity:.96
  }
  .project-drag-preview-bar.continues-left{border-top-left-radius:1px;border-bottom-left-radius:1px;margin-left:-5px}
  .project-drag-preview-bar.continues-right{border-top-right-radius:1px;border-bottom-right-radius:1px;margin-right:-5px}
  .drag-preview-grid,
  .event-drag-preview-grid{
    position:absolute;left:0;right:0;top:calc(var(--cal-head) + var(--project-zone,0px));height:var(--cal-ev-row);display:grid;
    grid-template-columns:repeat(7,minmax(0,1fr));padding:0 5px;pointer-events:none;z-index:8
  }
  .event-drag-preview-grid{z-index:10}
  .drag-preview-bar,
  .event-drag-preview-bar{
    height:20px;margin:0 2px;padding:0 8px;border:1px dashed #174fb9;border-radius:5px;
    display:flex;align-items:center;overflow:hidden;white-space:nowrap;background:rgba(37,99,235,.88);
    color:#fff;font-size:10px;font-weight:900;box-shadow:0 3px 12px rgba(37,99,235,.3)
  }
  .event-drag-preview-bar{border-width:2px;opacity:.94;transform:translateY(-1px)}
  .drag-preview-bar.continues-left,.event-drag-preview-bar.continues-left{border-top-left-radius:2px;border-bottom-left-radius:2px;margin-left:-5px}
  .drag-preview-bar.continues-right,.event-drag-preview-bar.continues-right{border-top-right-radius:2px;border-bottom-right-radius:2px;margin-right:-5px}
  .schedule-bar{
    position:relative;min-width:0;height:var(--cal-ev-row);margin:0 2px;padding:0 13px;border:1px solid var(--bar-border,#64748b);
    border-radius:5px;display:flex;align-items:center;gap:4px;overflow:hidden;white-space:nowrap;
    font-size:10px;line-height:1;font-weight:800;cursor:grab;pointer-events:auto;touch-action:pinch-zoom;
    box-shadow:0 1px 2px rgba(15,23,42,.12),inset 0 1px rgba(255,255,255,.25);transition:filter .14s,transform .14s,box-shadow .14s,opacity .14s
  }
  .schedule-bar:hover{filter:brightness(.96);transform:translateY(-1px);box-shadow:0 4px 10px rgba(15,23,42,.2)}
  .schedule-bar:active{cursor:grabbing}
  .schedule-bar.continues-left{border-top-left-radius:2px;border-bottom-left-radius:2px;margin-left:-5px;padding-left:10px}
  .schedule-bar.continues-right{border-top-right-radius:2px;border-bottom-right-radius:2px;margin-right:-5px;padding-right:10px}
  .schedule-bar.done{opacity:.58}
  .schedule-bar.drag-source{opacity:.2;filter:saturate(.35)}
  .schedule-bar.single-day{
    height:18px;margin:0 3px;padding:0 3px;border:0!important;border-radius:0;background:transparent!important;
    color:var(--single-day-color,#2563eb)!important;box-shadow:none!important;text-shadow:none;overflow:hidden;
    font-weight:900;line-height:18px;cursor:grab
  }
  .schedule-bar.single-day:hover{background:rgba(255,255,255,.74)!important;filter:none;transform:none;box-shadow:none!important}
  .schedule-bar.single-day.done{opacity:.55;text-decoration:line-through}
  .schedule-bar.single-day .bar-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .bar-resize-handle{
    position:absolute;top:0;bottom:0;width:9px;z-index:3;cursor:ew-resize;background:rgba(255,255,255,.18);touch-action:pinch-zoom
  }
  .bar-resize-handle::after{content:"";position:absolute;top:5px;bottom:5px;width:2px;border-radius:2px;background:currentColor;opacity:.72}
  .bar-resize-handle.left{left:0;border-right:1px solid rgba(255,255,255,.24)}
  .bar-resize-handle.left::after{left:3px}
  .bar-resize-handle.right{right:0;border-left:1px solid rgba(255,255,255,.24)}
  .bar-resize-handle.right::after{right:3px}
  .bar-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none}
  .bar-meta{font-weight:700;opacity:.76;flex:0 0 auto;pointer-events:none}
  .bar-arrow{font-size:10px;opacity:.75;flex:0 0 auto;pointer-events:none}
  body.event-bar-dragging{user-select:none;cursor:grabbing}
  body.event-bar-dragging *{cursor:grabbing!important}
  body.event-bar-dragging .bar-resize-handle{cursor:ew-resize!important}

  .legend{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px;font-size:11px;color:var(--muted)}
  .legend span{display:inline-flex;align-items:center;gap:5px}
  .legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
  .legend .late{background:#fecaca}
  .legend .done{background:#cbd5e1}
  .legend .normal{background:#bfdbfe}

  .modal-backdrop{
    position:fixed;inset:0;background:rgba(15,23,42,.55);display:none;align-items:center;justify-content:center;
    padding:18px;z-index:100
  }
  .modal-backdrop.open{display:flex}
  .modal{
    width:min(620px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:16px;box-shadow:0 24px 70px rgba(0,0,0,.3)
  }
  .modal-header{
    position:sticky;top:0;background:#fff;z-index:2;display:flex;justify-content:space-between;align-items:center;
    padding:16px 18px;border-bottom:1px solid var(--line)
  }
  .modal-header h2{margin:0;font-size:18px}
  .modal-close{border:0;background:#edf1f5;width:34px;height:34px;border-radius:9px;font-size:20px}
  .modal-body{padding:17px 18px}
  .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .form-group{display:flex;flex-direction:column;gap:6px}
  .form-group.full{grid-column:1/-1}
  .form-group label{font-size:12px;font-weight:800;color:#4b5563}
  .form-group input,.form-group select,.form-group textarea{
    width:100%;border:1px solid #cfd6df;border-radius:9px;padding:9px 10px;background:#fff;outline:none
  }
  .form-group input:focus,.form-group select:focus,.form-group textarea:focus{
    border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.12)
  }
  .form-group textarea{min-height:82px;resize:vertical}
  .modal-footer{
    display:flex;justify-content:space-between;align-items:center;gap:10px;padding:14px 18px;border-top:1px solid var(--line)
  }
  .footer-right{display:flex;gap:8px}
  .range-line{display:flex;align-items:center;gap:8px}
  .range-line input[type=range]{flex:1}
  .range-value{font-size:12px;font-weight:800;min-width:38px;text-align:right}
  .color-pick{height:40px;padding:4px!important}
  .color-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}
  .check-line{display:flex!important;flex-direction:row!important;align-items:center;gap:8px;font-weight:700!important;cursor:pointer}
  .check-line input{width:17px!important;height:17px;margin:0;accent-color:var(--primary)}
  .form-section-title{
    padding:9px 10px;background:#f1f5f9;border:1px solid #dce3eb;border-radius:9px;
    font-size:12px;font-weight:900;color:#334155
  }

  .settings-modal{width:min(520px,100%)}
  .settings-section{display:grid;gap:10px}
  .settings-warning{
    padding:12px;border:1px solid #fecaca;border-radius:10px;background:#fff7f7;
    color:#991b1b;font-size:12px;line-height:1.55
  }
  .settings-danger-row{display:flex;justify-content:flex-end}

  .modal.full-modal{width:min(1180px,96vw);height:min(92vh,980px);display:flex;flex-direction:column;overflow:hidden}
  .full-calendar-tools{
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--line);background:#f8fafc
  }
  .full-calendar-tools select{height:38px;border:1px solid #cfd6df;border-radius:9px;padding:0 32px 0 10px;background:#fff;min-width:260px}
  .full-project-summary{font-size:12px;color:#556070;font-weight:700;flex:1;min-width:220px}
  .full-calendar-scroll{padding:14px;overflow:auto;background:#eef2f6;flex:1}
  .full-month-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
  .full-month-card{background:#fff;border:1px solid #dbe1e8;border-radius:12px;overflow:hidden;box-shadow:0 4px 14px rgba(15,23,42,.06)}
  .full-month-title{padding:10px 12px;font-size:15px;font-weight:900;background:#172033;color:#fff}
  .full-weekdays{display:grid;grid-template-columns:repeat(7,1fr);background:#f7f9fb;border-bottom:1px solid #e3e8ee}
  .full-weekdays span{padding:6px 2px;text-align:center;font-size:10px;font-weight:800;color:#647084}
  .full-weekdays span:first-child{color:#dc2626}.full-weekdays span:last-child{color:#2563eb}
  .full-week-row{position:relative;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-bottom:1px solid #edf0f3}
  .full-week-row:last-child{border-bottom:0}
  .full-day{min-width:0;padding:4px;border-right:1px solid #edf0f3;background:#fff;font-size:10px;font-weight:800;color:#334155}
  .full-day:last-of-type{border-right:0}.full-day.outside{background:#f7f8fa;color:#a1a9b4}.full-day.today{background:#edf4ff}
  .full-week-bars{position:absolute;left:0;right:0;top:24px;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:17px;gap:2px 0;padding:0 3px;pointer-events:none}
  .full-schedule-bar{
    height:17px;margin:0 1px;padding:0 5px;border:1px solid var(--bar-border,#64748b);border-radius:4px;
    display:flex;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:9px;font-weight:800;
    color:#111827;cursor:pointer;pointer-events:auto;box-shadow:0 1px 2px rgba(15,23,42,.08)
  }
  .full-schedule-bar.project-overall{color:#fff;border-style:dashed;font-weight:900}
  .full-schedule-bar.done{opacity:.55}
  .full-empty{padding:48px 20px;text-align:center;color:#6b7280;font-size:13px}

  .toast{
    position:fixed;right:20px;bottom:20px;background:#172033;color:#fff;padding:11px 14px;border-radius:10px;
    box-shadow:0 10px 30px rgba(0,0,0,.25);opacity:0;transform:translateY(12px);pointer-events:none;
    transition:.25s;z-index:150;font-size:13px
  }
  .toast.show{opacity:1;transform:translateY(0)}
  .hidden{display:none!important}
  .mobile-toggle{display:none}
  .filter-toggle{display:none}
  body.auth-pending .app{visibility:hidden}
  .brand-home{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none}
  .home-btn{white-space:nowrap}
  a.btn{text-decoration:none}
  .settings-hint{font-size:12px;color:#4b5563;line-height:1.6;padding:0 2px}
  .settings-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
  .undo-group{display:flex;gap:6px}
  .undo-group .btn.icon{font-size:18px;color:#334155;border:1px solid #cfd6df}
  .undo-group .btn.icon:disabled{opacity:.35;cursor:default;transform:none;box-shadow:none}
  .settings-actions .filter-select{flex:1;min-width:160px}

  @media (max-width:980px){
    .layout{grid-template-columns:1fr}
    .sidebar{
      position:fixed;left:0;top:64px;bottom:0;width:285px;height:auto;z-index:40;transform:translateX(-102%);
      transition:.25s;box-shadow:14px 0 35px rgba(15,23,42,.18)
    }
    .sidebar.open{transform:translateX(0)}
    .mobile-toggle{display:inline-flex}
    .main{padding:12px}
    :root{--responsive-week-height:104px}
  }

  @media (max-width:720px){
    .topbar{height:auto;min-height:64px;padding:10px 12px;align-items:flex-start}
    .brand small{display:none}
    .top-actions .btn span{display:none}
    .layout{min-height:calc(100vh - 64px)}
    .toolbar{align-items:stretch}
    .month-nav{width:100%;justify-content:center}
    .full-view-btn{order:1;flex:1 1 auto}
    .search-wrap{order:2;flex-basis:100%}
    .filter-select{flex:1}
    .form-grid{grid-template-columns:1fr}
    .form-group.full{grid-column:auto}
    .full-month-grid{grid-template-columns:1fr}
    .full-calendar-tools select{min-width:100%;width:100%}
  }
  /* ====== 폰 : 한 달이 한 화면에 ====== */
  @media (max-width:720px){
    .calendar-card{touch-action:pinch-zoom}
    .calendar-card.month-anim-up .calendar{animation:calSlideUp .22s ease-out}
    .calendar-card.month-anim-down .calendar{animation:calSlideDown .22s ease-out}
    :root{
      --cal-head:20px; --cal-proj-row:7px; --cal-ev-row:14px; --cal-ev-gap:1px; --cal-min-week:0px;
      --radius:10px;
    }
    .topbar{height:48px;min-height:48px;padding:0 8px;align-items:center;gap:6px}
    .brand{min-width:0;gap:6px}
    .brand-mark{width:28px;height:28px;font-size:11px;border-radius:8px}
    .brand strong{font-size:14px}
    .top-actions{gap:5px;flex-wrap:nowrap}
    .top-actions .btn{padding:7px 8px;font-size:12px}
    .data-file-status{display:none}
    .top-actions .btn{padding:0;width:34px;height:34px;font-size:15px;flex:0 0 auto}
    .top-actions .btn.primary{font-size:18px}
    .brand strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:38vw}
    .brand-home > div{min-width:0}
    .layout{min-height:0}
    .main{padding:6px}
    .toolbar{padding:6px;margin-bottom:8px;gap:6px;border-radius:10px}
    .month-nav{width:100%;justify-content:center;gap:6px}
    .month-title{font-size:16px;min-width:0;flex:1}
    .filter-toggle{display:inline-flex;width:34px;height:34px}
    .btn.icon{width:34px;height:34px}
    .toolbar > :not(.month-nav){display:none}
    .toolbar.filters-open .undo-group{display:none}
    .schedule-bar,.project-schedule-bar{cursor:default}
    .bar-resize-handle,.project-bar-resize-handle{display:none}
    .toolbar.filters-open > :not(.month-nav){display:flex}
    .toolbar.filters-open .search-wrap{display:block;order:2;flex-basis:100%}
    .toolbar.filters-open .filter-select{flex:1;height:34px}
    .toolbar.filters-open .project-create-toggle{flex-basis:100%}
    .legend{display:none}
    .calendar-card{border-radius:10px}
    .weekdays{min-width:0}
    .weekday{padding:4px 0;font-size:10px}
    .calendar{min-width:0}
    .week-row{min-height:max(var(--responsive-week-height,90px),var(--required-week-height,0px))}
    .day{padding:2px 2px 0}
    .day-head{gap:2px}
    .day-number{min-width:16px;height:16px;padding:0 3px;font-size:9.5px;border-radius:5px}
    .day-add{display:none}
    .holiday-name{font-size:6.5px}
    .week-projects,.week-events{padding:0 2px}
    .project-schedule-bar{height:6px;line-height:6px;font-size:5.5px;padding:0 3px;margin:0 1px;box-shadow:none}
    .project-schedule-bar:hover{height:6px;line-height:6px}
    .project-schedule-bar.continues-left{margin-left:-2px;padding-left:2px}
    .project-schedule-bar.continues-right{margin-right:-2px;padding-right:2px}
    .project-bar-resize-handle{width:4px}
    .schedule-bar{margin:0 1px;padding:0 4px;border-radius:3px;font-size:8.5px;gap:2px;box-shadow:none;border-width:1px}
    .schedule-bar.continues-left{margin-left:-2px;padding-left:3px}
    .schedule-bar.continues-right{margin-right:-2px;padding-right:3px}
    .schedule-bar .bar-meta{display:none}
    .schedule-bar .bar-arrow{font-size:7px}
    .bar-resize-handle{width:5px}
    .bar-resize-handle::after{top:2px;bottom:2px;width:1px}
    .schedule-bar.single-day{height:var(--cal-ev-row);line-height:var(--cal-ev-row);margin:0 1px;padding:0 1px;font-size:8.5px}
    .drag-preview-bar,.event-drag-preview-bar{height:var(--cal-ev-row);font-size:8.5px;padding:0 4px}
    .project-drag-preview-bar{height:var(--cal-proj-row);line-height:6px;font-size:5.5px}
    .sidebar{top:48px;width:min(285px,86vw)}
    .toast{left:10px;right:10px;bottom:10px;text-align:center;font-size:12px}
    .modal{border-radius:12px}
    .modal-body{padding:12px}
    .modal-header{padding:12px}
  }
  @media (max-width:720px) and (max-height:520px){
    /* 폰 가로모드: 툴바를 더 얇게 */
    .toolbar{padding:4px}
    .month-title{font-size:14px}
  }

  @keyframes calSlideUp{from{transform:translateY(28px);opacity:.35}to{transform:none;opacity:1}}
  @keyframes calSlideDown{from{transform:translateY(-28px);opacity:.35}to{transform:none;opacity:1}}
