*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--primary:#fee500;--primary-dark:#f5c800;--primary-text:#3c1e1e;--accent:#ff6b35;--accent-light:#fff3ef;--surface:#fff;--surface-2:#f8f9fa;--surface-3:#f1f3f5;--border:#e9ecef;--text-primary:#1a1a2e;--text-secondary:#6c757d;--text-muted:#adb5bd;--available:#28a745;--partial:#fd7e14;--full:#dc3545;--blocked:#6c757d;--radius:16px;--radius-sm:8px;--shadow:0 4px 20px #00000014;--shadow-lg:0 8px 40px #0000001f}html{font-size:16px}body{background:var(--surface-2);color:var(--text-primary);-webkit-font-smoothing:antialiased;font-family:-apple-system,Apple SD Gothic Neo,Pretendard,Noto Sans KR,sans-serif;line-height:1.6}button{cursor:pointer;background:0 0;border:none;font-family:inherit}input,textarea,select{font-family:inherit}a{color:inherit;text-decoration:none}.page-wrapper{flex-direction:column;min-height:100vh;display:flex}.site-header{background:var(--primary);z-index:100;position:sticky;top:0;box-shadow:0 2px 8px #fee50066}.header-inner{justify-content:space-between;align-items:center;max-width:1100px;margin:0 auto;padding:14px 20px;display:flex}.logo-area{align-items:center;gap:10px;display:flex}.logo-icon{font-size:28px}.logo-title{color:var(--primary-text);font-size:17px;font-weight:800;line-height:1.2}.logo-sub{color:var(--primary-text);opacity:.7;font-size:12px}.btn-cancel-link{color:var(--primary-text);background:#0000001f;border-radius:20px;padding:8px 18px;font-size:14px;font-weight:600;transition:background .2s}.btn-cancel-link:hover{background:#0003}.main-content{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:0 20px 60px}.hero-section{text-align:center;padding:48px 20px 40px}.hero-title{color:var(--text-primary);letter-spacing:-.5px;margin-bottom:14px;font-size:clamp(26px,5vw,42px);font-weight:900}.hero-desc{color:var(--text-secondary);margin-bottom:20px;font-size:15px;line-height:1.8}.info-chips{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.chip{background:var(--surface);border:1.5px solid var(--border);color:var(--text-secondary);border-radius:20px;padding:7px 16px;font-size:13px;font-weight:500}.booking-layout{grid-template-columns:1fr 1fr;gap:24px;margin-bottom:48px;display:grid}@media (width<=768px){.booking-layout{grid-template-columns:1fr}}.calendar-container{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}.calendar-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.month-title{font-size:18px;font-weight:800}.month-nav-btn{background:var(--surface-3);width:36px;height:36px;color:var(--text-primary);border-radius:50%;justify-content:center;align-items:center;font-size:20px;line-height:1;transition:all .2s;display:flex}.month-nav-btn:hover{background:var(--primary)}.calendar-weekdays{grid-template-columns:repeat(7,1fr);margin-bottom:8px;display:grid}.weekday-label{text-align:center;color:var(--text-muted);padding:4px 0;font-size:12px;font-weight:700}.weekday-label.sunday{color:#f03e3e}.weekday-label.saturday{color:#228be6}.calendar-grid{grid-template-columns:repeat(7,1fr);gap:3px;display:grid}.calendar-day{aspect-ratio:1;border:2px solid #0000;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:13px;font-weight:600;transition:all .18s;display:flex;position:relative}.calendar-day .day-number{line-height:1}.calendar-day.sun .day-number{color:#f03e3e}.calendar-day.sat .day-number{color:#228be6}.calendar-day.available{color:var(--text-primary);background:#f0fff4}.calendar-day.available:hover{border-color:var(--available);background:#d3f9d8;transform:scale(1.06)}.calendar-day.partial{background:#fff9db}.calendar-day.partial:hover{border-color:var(--partial);background:#ffe066;transform:scale(1.06)}.calendar-day.full{color:var(--text-muted);cursor:not-allowed;background:#fff5f5}.calendar-day.blocked{background:var(--surface-3);color:var(--text-muted);cursor:not-allowed}.calendar-day.other-month{opacity:.25;cursor:default}.calendar-day.past{opacity:.35;cursor:not-allowed}.calendar-day.today .day-number{background:var(--primary);border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-weight:900;display:flex}.calendar-day.selected{box-shadow:0 2px 12px #fee50080;background:var(--primary)!important;border-color:var(--primary-dark)!important}.day-dot{border-radius:50%;width:5px;height:5px}.dot-available{background:var(--available)}.dot-partial{background:var(--partial)}.dot-full{background:var(--full)}.dot-blocked{background:var(--blocked)}.dot-selected{background:var(--primary-text)}.dot-other-month,.dot-past{display:none}.calendar-legend{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:center;gap:12px;margin-top:16px;padding-top:16px;display:flex}.legend-item{color:var(--text-secondary);align-items:center;gap:5px;font-size:12px;display:flex}.legend-dot{border-radius:50%;width:10px;height:10px}.legend-dot.available{background:var(--available)}.legend-dot.partial{background:var(--partial)}.legend-dot.full{background:var(--full)}.legend-dot.blocked{background:var(--blocked)}.slots-section{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;padding:24px;display:flex}.selected-date-header{margin-bottom:16px}.selected-date-header h3{color:var(--text-primary);font-size:17px;font-weight:800}.timeslots-container{flex:1}.timeslots-title{margin-bottom:4px;font-size:15px;font-weight:700}.timeslots-subtitle{color:var(--text-secondary);margin-bottom:16px;font-size:13px}.timeslots-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.timeslot-btn{border:2px solid #0000;border-radius:12px;flex-direction:column;align-items:center;gap:4px;padding:12px 10px;transition:all .18s;display:flex}.timeslot-time{font-size:16px;font-weight:800}.timeslot-end{color:inherit;opacity:.7;font-size:11px}.timeslot-status{font-size:11px;font-weight:600}.timeslot-available{color:#1b7a34;background:#f0fff4;border-color:#d3f9d8}.timeslot-available:hover{border-color:var(--available);background:#d3f9d8;transform:translateY(-2px);box-shadow:0 4px 12px #28a74533}.timeslot-selected{background:var(--primary);border-color:var(--primary-dark);color:var(--primary-text);transform:translateY(-2px);box-shadow:0 4px 16px #fee50080}.timeslot-unavailable{background:var(--surface-3);color:var(--text-muted);cursor:not-allowed}.timeslot-unavailable .timeslot-status{color:var(--full)}.reserve-action{border-top:1px solid var(--border);margin-top:20px;padding-top:20px}.selected-summary{color:var(--text-secondary);text-align:center;margin-bottom:12px;font-size:14px;font-weight:600}.btn-reserve{background:var(--primary);width:100%;color:var(--primary-text);border-radius:14px;padding:16px;font-size:16px;font-weight:800;transition:all .2s;box-shadow:0 4px 16px #fee50066}.btn-reserve:hover{background:var(--primary-dark);transform:translateY(-2px);box-shadow:0 6px 20px #fee50080}.empty-slots{color:var(--text-muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;padding:40px 0;display:flex}.empty-icon{font-size:48px}.empty-slots p{text-align:center;font-size:15px;line-height:1.7}.info-section{margin-bottom:48px}.info-section h2{text-align:center;margin-bottom:20px;font-size:22px;font-weight:800}.info-cards{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}@media (width<=640px){.info-cards{grid-template-columns:1fr}}.info-card{background:var(--surface);border-radius:var(--radius);text-align:center;box-shadow:var(--shadow);padding:28px 20px;transition:transform .2s}.info-card:hover{transform:translateY(-4px)}.info-card-icon{margin-bottom:12px;font-size:36px}.info-card h4{margin-bottom:8px;font-size:16px;font-weight:700}.info-card p{color:var(--text-secondary);font-size:13px;line-height:1.7}.site-footer{background:var(--text-primary);color:#ffffffb3;padding:32px 20px}.footer-inner{text-align:center;flex-direction:column;gap:6px;max-width:1100px;margin:0 auto;font-size:13px;display:flex}.footer-inner strong{color:#fff;font-size:15px}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#00000080;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-box{background:var(--surface);border-radius:var(--radius);width:100%;max-width:480px;max-height:90vh;box-shadow:var(--shadow-lg);padding:28px;animation:.25s slideUp;overflow-y:auto}@keyframes slideUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.modal-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.modal-header h2{font-size:20px;font-weight:800}.modal-close{background:var(--surface-3);width:32px;height:32px;color:var(--text-secondary);border-radius:50%;justify-content:center;align-items:center;font-size:14px;transition:background .2s;display:flex}.modal-close:hover{background:var(--border)}.modal-date-badge{flex-wrap:wrap;gap:8px;margin-bottom:20px;display:flex}.modal-date-badge span{background:var(--primary);color:var(--primary-text);border-radius:20px;padding:6px 14px;font-size:14px;font-weight:700}.modal-form{flex-direction:column;gap:16px;display:flex}.form-group{flex-direction:column;gap:6px;display:flex}.form-group label{color:var(--text-primary);font-size:14px;font-weight:600}.required{color:var(--full)}.form-group input,.form-group textarea{border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-primary);padding:12px 14px;font-size:15px;transition:border-color .2s}.form-group input:focus,.form-group textarea:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #fee50033}.form-group input.error{border-color:var(--full)}.error-msg{color:var(--full);font-size:12px}.modal-notice{border-radius:var(--radius-sm);color:#856404;background:#fff3cd;padding:12px 14px;font-size:13px;font-weight:500}.modal-actions{gap:10px;margin-top:4px;display:flex}.btn-cancel{background:var(--surface-3);color:var(--text-secondary);border-radius:12px;flex:1;padding:14px;font-size:15px;font-weight:700;transition:background .2s}.btn-cancel:hover{background:var(--border)}.btn-submit{background:var(--primary);color:var(--primary-text);border-radius:12px;flex:2;padding:14px;font-size:15px;font-weight:800;transition:all .2s;box-shadow:0 3px 12px #fee50066}.btn-submit:hover{background:var(--primary-dark);transform:translateY(-1px)}.success-modal{text-align:center;padding:40px 32px}.success-icon{margin-bottom:16px;font-size:56px}.success-modal h2{margin-bottom:20px;font-size:22px;font-weight:800}.success-details{background:var(--surface-2);border-radius:12px;flex-direction:column;gap:8px;margin-bottom:16px;padding:16px;display:flex}.success-details div{justify-content:space-between;font-size:14px;display:flex}.success-details span{color:var(--text-secondary)}.success-details strong{color:var(--text-primary)}.success-notice{color:#1565c0;background:#e3f2fd;border-radius:10px;margin-bottom:20px;padding:12px;font-size:13px;line-height:1.8}.search-row{gap:8px;display:flex}.search-row input{flex:1}.btn-search{border-radius:var(--radius-sm);background:var(--text-primary);color:#fff;white-space:nowrap;padding:12px 20px;font-size:14px;font-weight:700;transition:opacity .2s}.btn-search:hover{opacity:.8}.cancel-results{margin-top:16px}.no-results{color:var(--text-muted);text-align:center;padding:20px;font-size:14px}.reservation-list{flex-direction:column;gap:10px;display:flex}.reservation-item{background:var(--surface-2);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:14px;display:flex}.reservation-info{flex-direction:column;flex:1;gap:3px;display:flex}.reservation-info strong{font-size:14px}.reservation-info span{color:var(--text-secondary);font-size:13px}.btn-cancel-item{color:var(--full);white-space:nowrap;background:#fff5f5;border:1.5px solid #ffcdd2;border-radius:8px;padding:8px 16px;font-size:13px;font-weight:700;transition:all .2s}.btn-cancel-item:hover{background:#ffcdd2}.alert-msg{border-radius:10px;margin-top:14px;padding:14px;font-size:14px;line-height:1.7}.alert-msg.success{color:#2e7d32;background:#e8f5e9}.alert-msg.error{color:#856404;background:#fff3cd}.admin-login-wrapper{background:var(--surface-2);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.admin-login-box{background:var(--surface);border-radius:var(--radius);width:100%;max-width:400px;box-shadow:var(--shadow-lg);text-align:center;flex-direction:column;gap:16px;padding:48px 40px;display:flex}.admin-logo{font-size:48px}.admin-login-box h2{font-size:24px;font-weight:800}.admin-login-box p{color:var(--text-secondary);font-size:14px}.admin-login-box form{flex-direction:column;gap:12px;margin-top:8px;display:flex}.admin-login-box input{border:1.5px solid var(--border);border-radius:var(--radius-sm);text-align:center;padding:14px;font-size:15px}.admin-login-box input:focus{border-color:var(--primary);outline:none}.back-link{color:var(--text-secondary);font-size:14px;transition:color .2s}.back-link:hover{color:var(--text-primary)}.admin-wrapper{background:var(--surface-2);flex-direction:column;min-height:100vh;display:flex}.admin-header{background:var(--primary);z-index:100;position:sticky;top:0;box-shadow:0 2px 8px #fee50066}.admin-header-inner{justify-content:space-between;align-items:center;max-width:1200px;margin:0 auto;padding:14px 24px;display:flex}.admin-title-area,.admin-header-actions{align-items:center;gap:10px;display:flex}.btn-link-small{color:var(--primary-text);background:#0000001a;border-radius:20px;padding:8px 16px;font-size:13px;font-weight:600;transition:background .2s}.btn-link-small:hover{background:#0003}.btn-logout{background:var(--text-primary);color:#fff;border-radius:20px;padding:8px 18px;font-size:14px;font-weight:600;transition:opacity .2s}.btn-logout:hover{opacity:.8}.admin-content{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:24px}.admin-tabs{gap:4px;margin-bottom:20px;display:flex}.admin-tab{background:var(--surface-3);color:var(--text-secondary);border-bottom:3px solid #0000;border-radius:12px 12px 0 0;padding:12px 24px;font-size:14px;font-weight:600;transition:all .2s}.admin-tab.active{background:var(--surface);color:var(--text-primary);border-bottom-color:var(--primary)}.tab-panel{background:var(--surface);border-radius:0 var(--radius) var(--radius) var(--radius);box-shadow:var(--shadow);padding:24px}.panel-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.panel-toolbar h3{font-size:18px;font-weight:800}.filter-row{align-items:center;gap:8px;font-size:14px;display:flex}.filter-row input[type=date]{border:1.5px solid var(--border);border-radius:var(--radius-sm);padding:8px 12px;font-size:14px}.btn-clear{border-radius:var(--radius-sm);background:var(--surface-3);color:var(--text-secondary);padding:8px 14px;font-size:13px;font-weight:600}.empty-state{text-align:center;color:var(--text-muted);padding:48px 20px;font-size:15px}.reservation-table-wrap{overflow-x:auto}.reservation-table{border-collapse:collapse;width:100%;font-size:14px}.reservation-table th{background:var(--surface-2);text-align:left;color:var(--text-secondary);border-bottom:2px solid var(--border);white-space:nowrap;padding:12px 14px;font-weight:700}.reservation-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:12px 14px}.reservation-table tr:hover td{background:var(--surface-2)}.date-badge{color:#1565c0;background:#eff6ff;border-radius:6px;padding:4px 10px;font-size:12px;font-weight:700}.memo-cell{text-overflow:ellipsis;white-space:nowrap;max-width:150px;color:var(--text-secondary);overflow:hidden}.btn-delete{color:var(--full);white-space:nowrap;background:#fff5f5;border:1.5px solid #ffcdd2;border-radius:8px;padding:6px 14px;font-size:13px;font-weight:700;transition:all .2s}.btn-delete:hover{background:#ffcdd2}.block-form-card{background:var(--surface-2);border-radius:12px;margin-bottom:20px;padding:20px}.block-form-card h4{margin-bottom:6px;font-size:16px;font-weight:700}.block-form-desc{color:var(--text-secondary);margin-bottom:16px;font-size:13px}.block-form-row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.block-form-row .form-group{flex:1;min-width:140px}.flex-grow{flex:2!important}.block-submit-btn{align-self:flex-end;flex:none!important;padding:12px 24px!important}.blocked-list{flex-direction:column;gap:10px;display:flex}.blocked-item{background:var(--surface-2);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex}.blocked-info{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.blocked-badge{color:var(--blocked);background:#f5f5f5;border-radius:6px;padding:4px 10px;font-size:12px;font-weight:700}.blocked-info strong{font-size:14px}.blocked-reason{color:var(--text-secondary);font-size:13px}.confirm-box{background:var(--surface);border-radius:var(--radius);text-align:center;width:100%;max-width:360px;box-shadow:var(--shadow-lg);padding:32px}.confirm-box h3{margin-bottom:8px;font-size:18px;font-weight:800}.confirm-box p{color:var(--text-secondary);margin-bottom:20px;font-size:14px}.confirm-actions{gap:10px;display:flex}.btn-delete-confirm{background:var(--full);color:#fff;border-radius:10px;flex:1;padding:13px;font-size:15px;font-weight:700;transition:opacity .2s}.btn-delete-confirm:hover{opacity:.85}@media (width<=480px){.timeslots-grid{grid-template-columns:repeat(2,1fr)}.modal-box{padding:20px}.admin-login-box{padding:32px 24px}.block-form-row{flex-direction:column}.block-submit-btn{width:100%}.reservation-table{font-size:12px}.reservation-table th,.reservation-table td{padding:8px}}
