:root{--blue-50: #e8f3ff;--blue-100: #c9e2ff;--blue-500: #3182f6;--blue-600: #1b64da;--violet-50: #f0effe;--violet-600: #5b54f0;--red-50: #fdedee;--red-500: #f04452;--amber-50: #fff3d6;--amber-700: #b96a00;--gray-50: #f9fafb;--gray-100: #f2f4f6;--gray-200: #e5e8eb;--gray-300: #d1d6db;--gray-400: #b0b8c1;--gray-500: #8b95a1;--gray-600: #6b7684;--gray-700: #4e5968;--gray-800: #333d4b;--gray-900: #191f28;--shadow-card: 0 1px 4px rgba(2, 32, 71, .05);--shadow-float: 0 6px 24px rgba(2, 32, 71, .14)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0}body{background:var(--gray-100);color:var(--gray-900);font-family:Pretendard Variable,Pretendard,-apple-system,BlinkMacSystemFont,system-ui,Apple SD Gothic Neo,Segoe UI,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}button{font:inherit;border:0;background:none;padding:0;cursor:pointer;color:inherit}input,select{font:inherit}.app{max-width:520px;margin:0 auto;min-height:100dvh;padding:0 16px calc(120px + env(safe-area-inset-bottom))}.topbar{display:flex;align-items:center;justify-content:space-between;padding:18px 4px 6px}.brand{display:flex;align-items:center;gap:7px;font-size:17px;font-weight:800;letter-spacing:-.2px}.brand .donut{font-size:20px}.icon-btn{width:40px;height:40px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;color:var(--gray-600);transition:background .15s}.icon-btn:active{background:var(--gray-200)}.month-nav{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 0 4px}.month-nav h1{font-size:23px;font-weight:800;letter-spacing:-.3px;margin:0;min-width:150px;text-align:center}.today-btn{display:block;margin:2px auto 0;font-size:12.5px;font-weight:600;color:var(--blue-600);background:var(--blue-50);border-radius:999px;padding:4px 12px}.segmented{display:flex;background:var(--gray-200);border-radius:12px;padding:3px;margin:12px 0}.segmented button{flex:1;height:38px;border-radius:9px;font-size:14px;font-weight:600;color:var(--gray-500);transition:all .15s}.segmented button.active{background:#fff;color:var(--gray-900);font-weight:700;box-shadow:0 1px 3px #0220471a}.segmented.small{margin:0 0 12px;padding:2px}.segmented.small button{height:32px;font-size:13px}.card{background:#fff;border-radius:20px;box-shadow:var(--shadow-card);padding:16px}.banner{display:flex;align-items:center;gap:10px;background:var(--blue-50);color:var(--blue-600);border-radius:16px;padding:13px 16px;font-size:13.5px;font-weight:600;margin-bottom:12px}.banner.warn{background:var(--amber-50);color:var(--amber-700)}.calendar{padding:12px 8px 10px}.cal-head{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:6px}.cal-head span{text-align:center;font-size:11.5px;font-weight:600;color:var(--gray-500)}.cal-head span.sat{color:var(--blue-500)}.cal-head span.sun{color:var(--red-500)}.cal-row{display:grid;grid-template-columns:repeat(7,1fr)}.cal-cell{position:relative;min-height:92px;padding:4px 2px 6px;border-radius:10px;display:flex;flex-direction:column;align-items:stretch;gap:2px;text-align:left;transition:background .15s}.cal-cell:active{background:var(--gray-100)}.cal-cell.dim{opacity:.35}.cal-date{font-size:12px;font-weight:700;color:var(--gray-700);text-align:center;height:20px;line-height:20px}.cal-cell.sun .cal-date,.cal-cell.holiday .cal-date{color:var(--red-500)}.cal-cell.sat .cal-date{color:var(--blue-500)}.cal-date .num.today{display:inline-block;min-width:20px;height:20px;border-radius:999px;background:var(--blue-500);color:#fff;padding:0 3px}.holiday-name{font-size:8.5px;font-weight:600;color:var(--red-500);text-align:center;line-height:1.2;word-break:keep-all}.chip-night{background:var(--violet-50);color:var(--violet-600);border-radius:7px;font-size:9.5px;font-weight:700;line-height:1.45;padding:3px 4px;word-break:keep-all}.chip-night .moon{font-size:8.5px;opacity:.75}.chip-off{background:var(--blue-50);color:var(--blue-600);border-radius:7px;font-size:10px;font-weight:700;padding:2.5px 4px;text-align:center}.warn-dot{position:absolute;top:5px;right:5px;width:7px;height:7px;border-radius:999px;background:#ff9500}.legend{display:flex;gap:14px;justify-content:center;padding:10px 0 2px;font-size:11.5px;color:var(--gray-500);font-weight:500}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}.legend .l-night i{background:var(--violet-600);opacity:.75}.legend .l-off i{background:var(--blue-500);opacity:.75}.legend .l-holiday i{background:var(--red-500);opacity:.75}.stats-table-wrap{overflow-x:auto}.stats-table{width:100%;border-collapse:collapse;font-size:12.5px}.stats-table th{color:var(--gray-500);font-weight:600;font-size:11.5px;padding:8px 4px;border-bottom:1px solid var(--gray-200);text-align:center;white-space:nowrap}.stats-table td{padding:9px 4px;text-align:center;border-bottom:1px solid var(--gray-100);color:var(--gray-700);font-variant-numeric:tabular-nums}.stats-table td:first-child{font-weight:700;color:var(--gray-900);text-align:left;padding-left:6px;white-space:nowrap}.stats-table tr:last-child td{border-bottom:0}.stats-table .hl{color:var(--blue-600);font-weight:700}.stats-note{font-size:12px;color:var(--gray-500);margin:10px 2px 0}.bottom-bar{position:fixed;left:0;right:0;bottom:0;z-index:30;background:linear-gradient(to top,var(--gray-100) 75%,rgba(242,244,246,0));padding:20px 16px calc(14px + env(safe-area-inset-bottom))}.bottom-bar-inner{max-width:488px;margin:0 auto;display:flex;gap:9px}.btn{height:52px;border-radius:14px;font-size:15.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:transform .1s,background .15s,opacity .15s}.btn:active{transform:scale(.97)}.btn-primary{flex:1;background:var(--blue-500);color:#fff;box-shadow:var(--shadow-float)}.btn-primary:active{background:var(--blue-600)}.btn-square{width:52px;background:#fff;color:var(--gray-600);box-shadow:var(--shadow-card)}.btn-kakao{background:#fee500;color:#3c1e1e}.btn-kakao:active{background:#f6dc00}.btn-secondary{background:var(--gray-100);color:var(--gray-800)}.btn-danger-text{color:var(--red-500);font-size:14px;font-weight:600;padding:12px;width:100%}.btn:disabled{opacity:.4;transform:none}.sheet-backdrop{position:fixed;inset:0;background:#0000006b;z-index:50;animation:fade-in .2s ease;display:flex;align-items:flex-end;justify-content:center}.sheet{background:#fff;width:100%;max-width:520px;border-radius:24px 24px 0 0;padding:8px 20px calc(20px + env(safe-area-inset-bottom));max-height:88dvh;overflow-y:auto;animation:slide-up .28s cubic-bezier(.22,1,.36,1)}.sheet-handle{width:40px;height:4px;border-radius:999px;background:var(--gray-200);margin:6px auto 14px}.sheet h2{font-size:19px;font-weight:800;margin:0 0 2px;letter-spacing:-.2px}.sheet .sub{font-size:13px;color:var(--gray-500);margin:0 0 14px}.sheet-section{margin-top:18px}.sheet-section>.label{font-size:13px;font-weight:700;color:var(--gray-600);margin-bottom:9px;display:flex;align-items:center;gap:6px}.member-chips{display:flex;flex-wrap:wrap;gap:8px}.member-chip{height:40px;padding:0 15px;border-radius:999px;background:var(--gray-100);color:var(--gray-700);font-size:14px;font-weight:600;transition:all .13s}.member-chip:active{transform:scale(.95)}.member-chip.on-off{background:var(--blue-500);color:#fff}.member-chip.on-night{background:var(--violet-600);color:#fff}.member-chip:disabled{opacity:.4}.note{font-size:13px;color:var(--gray-500);background:var(--gray-50);border-radius:12px;padding:11px 14px}.issues{background:var(--amber-50);border-radius:12px;padding:11px 14px;font-size:12.5px;color:var(--amber-700);font-weight:500}.issues li{margin-left:16px}.issues ul{margin:0;padding:0}.badge{display:inline-block;font-size:11px;font-weight:700;border-radius:6px;padding:2px 7px;vertical-align:2px}.badge.red{background:var(--red-50);color:var(--red-500)}.switch-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0}.switch-row .t{font-size:14.5px;font-weight:600;color:var(--gray-800)}.switch-row .d{font-size:12.5px;color:var(--gray-500);margin-top:1px}.switch{position:relative;width:50px;height:30px;border-radius:999px;background:var(--gray-300);transition:background .18s;flex-shrink:0}.switch.on{background:var(--blue-500)}.switch:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:999px;background:#fff;box-shadow:0 1px 3px #0000002e;transition:transform .18s cubic-bezier(.22,1,.36,1)}.switch.on:after{transform:translate(20px)}.field{margin-bottom:12px}.field label{display:block;font-size:12.5px;font-weight:600;color:var(--gray-500);margin-bottom:5px}.field input[type=text],.field select{width:100%;height:46px;border:0;border-radius:12px;background:var(--gray-100);padding:0 14px;font-size:15px;font-weight:600;color:var(--gray-900);outline:none;appearance:none}.field input[type=text]:focus,.field select:focus{box-shadow:0 0 0 2px var(--blue-500) inset;background:#fff}.member-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.member-grid .field{margin-bottom:0}.day-toggles{display:flex;gap:7px}.day-toggle{flex:1;height:42px;border-radius:11px;background:var(--gray-100);color:var(--gray-500);font-size:14px;font-weight:700}.day-toggle.on{background:var(--blue-50);color:var(--blue-600);box-shadow:0 0 0 1.5px var(--blue-500) inset}.pair-selects{display:flex;gap:8px;align-items:center}.pair-selects .field{flex:1;margin:0}.sheet-footer{display:flex;gap:9px;margin-top:22px}.sheet-footer .btn{flex:1}.dialog-backdrop{position:fixed;inset:0;background:#0000006b;z-index:60;display:flex;align-items:center;justify-content:center;padding:24px;animation:fade-in .15s ease}.dialog{background:#fff;border-radius:20px;padding:24px 20px 16px;width:100%;max-width:320px;animation:pop-in .18s cubic-bezier(.22,1,.36,1)}.dialog h3{margin:0 0 6px;font-size:17px;font-weight:800}.dialog p{margin:0 0 18px;font-size:14px;color:var(--gray-600)}.dialog .row{display:flex;gap:8px}.dialog .row .btn{flex:1;height:46px;font-size:14.5px}.btn-danger{background:var(--red-500);color:#fff}.toast{position:fixed;bottom:calc(108px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);background:#2d353ff0;color:#fff;font-size:14px;font-weight:600;border-radius:999px;padding:11px 20px;z-index:70;white-space:nowrap;animation:toast-in .25s cubic-bezier(.22,1,.36,1)}@keyframes fade-in{0%{opacity:0}}@keyframes slide-up{0%{transform:translateY(60px);opacity:.5}}@keyframes pop-in{0%{transform:scale(.94);opacity:0}}@keyframes toast-in{0%{transform:translate(-50%,10px);opacity:0}}.export-stage{position:fixed;top:0;left:-12000px;z-index:-1}.export-root{width:1000px;background:var(--gray-100);padding:44px;font-family:Pretendard Variable,Pretendard,-apple-system,system-ui,sans-serif}.export-root .ex-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:24px}.export-root .ex-head h1{font-size:34px;font-weight:800;margin:0;color:var(--gray-900)}.export-root .ex-head span{font-size:15px;color:var(--gray-500);font-weight:500}.ex-week{background:#fff;border-radius:20px;padding:22px 26px;margin-bottom:14px;box-shadow:var(--shadow-card)}.ex-week .ex-range{font-size:17px;font-weight:800;color:var(--gray-900);margin-bottom:12px}.ex-week .ex-range .hol{color:var(--red-500);font-size:14px;margin-left:10px}.ex-row{display:flex;align-items:center;gap:12px;padding:5px 0;font-size:16px}.ex-row .k{width:96px;font-weight:700;color:var(--gray-500);font-size:14.5px;flex-shrink:0}.ex-row .v{font-weight:600;color:var(--gray-800)}.ex-pill{display:inline-block;border-radius:8px;padding:3px 10px;margin-right:8px;font-size:15px;font-weight:700}.ex-pill.night{background:var(--violet-50);color:var(--violet-600)}.ex-pill.off{background:var(--blue-50);color:var(--blue-600)}.ex-pill.none{background:var(--gray-100);color:var(--gray-500)}
