:root{--color-primary:#0070f3;--color-primary-dark:#0051a8;--color-primary-light:#3291ff;--color-primary-transparent:rgba(0,112,243,0.1);--gradient-primary:linear-gradient(135deg,#667eea,#764ba2);--gradient-button:linear-gradient(135deg,#0070f3,#00a2ff);--gradient-accent:linear-gradient(135deg,#f093fb,#f5576c);--color-white:#ffffff;--color-gray-50:#f9fafb;--color-gray-100:#f3f4f6;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5db;--color-gray-400:#9ca3af;--color-gray-500:#6b7280;--color-gray-600:#4b5563;--color-gray-700:#374151;--color-gray-800:#1f2937;--color-gray-900:#111827;--color-success:#10b981;--color-success-bg:#d1fae5;--color-warning:#f59e0b;--color-warning-bg:#fef3c7;--color-error:#ef4444;--color-error-bg:#fee2e2;--color-info:#3b82f6;--color-info-bg:#dbeafe;--font-family:"Segoe UI","Hiragino Sans","Meiryo",sans-serif;--font-size-xs:0.75rem;--font-size-sm:0.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:1.875rem;--font-size-4xl:2.25rem;--spacing-1:0.25rem;--spacing-2:0.5rem;--spacing-3:0.75rem;--spacing-4:1rem;--spacing-5:1.25rem;--spacing-6:1.5rem;--spacing-8:2rem;--spacing-10:2.5rem;--spacing-12:3rem;--spacing-16:4rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--shadow-sm:0 1px 2px 0 rgb(0 0 0/0.05);--shadow-md:0 4px 6px -1px rgb(0 0 0/0.1),0 2px 4px -2px rgb(0 0 0/0.1);--shadow-lg:0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1);--shadow-xl:0 20px 25px -5px rgb(0 0 0/0.1),0 8px 10px -6px rgb(0 0 0/0.1);--shadow-card:0 4px 20px rgba(0,0,0,0.08);--transition-fast:150ms ease;--transition-base:200ms ease;--transition-slow:300ms ease;--z-dropdown:100;--z-sticky:200;--z-modal:1000;--z-tooltip:1100}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:1.6;color:var(--color-gray-800);background:var(--gradient-primary);min-height:100vh}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-primary-dark)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideIn{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fade-in{animation:fadeIn .3s ease-out}.slide-in{animation:slideIn .3s ease-out}.container{max-width:1200px;margin:0 auto;padding:0 var(--spacing-4)}.page-wrapper{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-8)}.card{background:var(--color-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--spacing-6);transition:transform var(--transition-base),box-shadow var(--transition-base)}.card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-4);padding-bottom:var(--spacing-4);border-bottom:1px solid var(--color-gray-200)}.card-title{font-size:var(--font-size-xl);font-weight:600;color:var(--color-gray-800)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-2);padding:var(--spacing-3) var(--spacing-5);font-size:var(--font-size-sm);font-weight:500;border-radius:var(--radius-md);border:none;cursor:pointer;transition:all var(--transition-base);white-space:nowrap}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--gradient-button);color:var(--color-white);box-shadow:0 4px 14px rgba(0,112,243,.3)}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,112,243,.4)}.btn-secondary{background:var(--color-gray-100);color:var(--color-gray-700);border:1px solid var(--color-gray-300)}.btn-secondary:hover:not(:disabled){background:var(--color-gray-200)}.btn-outline{background:transparent;color:var(--color-primary);border:2px solid var(--color-primary)}.btn-outline:hover:not(:disabled){background:var(--color-primary);color:var(--color-white)}.btn-danger{background:var(--color-error);color:var(--color-white)}.btn-danger:hover:not(:disabled){background:#dc2626}.btn-sm{font-size:var(--font-size-xs)}.btn-lg{padding:var(--spacing-4) var(--spacing-8);font-size:var(--font-size-lg)}.form-group{margin-bottom:var(--spacing-5)}.form-label{display:block;margin-bottom:var(--spacing-2);font-size:var(--font-size-sm);font-weight:500;color:var(--color-gray-700)}.form-input{width:100%;padding:var(--spacing-3) var(--spacing-4);font-size:var(--font-size-base);border:1px solid var(--color-gray-300);border-radius:var(--radius-md);background:var(--color-white);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.form-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-transparent)}.form-input::placeholder{color:var(--color-gray-400)}.form-input:disabled{background:var(--color-gray-100);cursor:not-allowed}.form-error{color:var(--color-error);font-size:var(--font-size-sm);margin-top:var(--spacing-1)}.status-badge{display:inline-flex;align-items:center;padding:var(--spacing-1) var(--spacing-3);font-size:var(--font-size-xs);font-weight:500;border-radius:var(--radius-full)}.status-confirmed{background:var(--color-success-bg);color:var(--color-success)}.status-pending{background:var(--color-warning-bg);color:var(--color-warning)}.status-cancelled{background:var(--color-error-bg);color:var(--color-error)}.status-completed{background:var(--color-info-bg);color:var(--color-info)}.steps{gap:0;margin-bottom:var(--spacing-8);max-width:600px;width:100%;margin-left:auto;margin-right:auto;padding:0 var(--spacing-4)}.step,.steps{display:flex;align-items:center;justify-content:center}.step{flex-direction:column;flex:0 0 auto;padding:0;background:transparent;font-size:var(--font-size-sm);color:var(--color-gray-400);transition:all var(--transition-base);white-space:nowrap;border:none;position:relative;z-index:1}.step:first-child,.step:last-child{border-radius:0}.step:not(:last-child):after{display:none}.step-divider{flex:1 1;min-width:0;width:auto;height:2px;background:rgba(255,255,255,.3);margin:0 5px 8px;transform:translateY(-8px);z-index:0;transition:background var(--transition-base)}.step-divider.completed{background:rgba(255,255,255,.8)}.step-number{width:48px;height:48px;border-radius:50%;background:var(--color-white);border:2px solid var(--color-gray-300);color:var(--color-gray-500);display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;margin-bottom:var(--spacing-2);margin-right:0;transition:all var(--transition-base);position:relative;z-index:1}.step span:not(.step-number){font-size:12px;font-weight:500;white-space:nowrap;transition:color var(--transition-base)}.step.active .step-number{border-color:var(--color-white);background:var(--color-white);color:var(--color-primary);box-shadow:0 0 8px rgba(255,255,255,.4)}.step.active span:not(.step-number){color:var(--color-white);font-weight:700}.step.completed .step-number{background:rgba(255,255,255,.6);border-color:transparent;color:var(--color-gray-600)}.step.completed span:not(.step-number){color:rgba(255,255,255,.8)}.step:not(.active):not(.completed) .step-number{background:transparent;border-color:rgba(255,255,255,.3);color:rgba(255,255,255,.6)}.step:not(.active):not(.completed) span:not(.step-number){color:rgba(255,255,255,.5)}@media (max-width:640px){.steps{padding:0 16px!important;max-width:100%!important;margin-bottom:var(--spacing-6);gap:0!important}.step{margin:0!important;padding:0!important;flex:0 0 auto!important;width:auto!important}.step-number{width:30px!important;height:30px!important;font-size:16px!important;border-width:2px!important;margin-bottom:4px!important}.step span:not(.step-number){font-size:11px!important;line-height:1.1;white-space:normal!important}.step-divider{flex:1 1!important;width:auto!important;min-width:0!important;margin:20px 4px 0!important;transform:translateY(-8px)}}.schedule-table{width:100%;border-collapse:collapse;min-width:600px}.time-col-header{width:80px;font-size:14px;color:var(--color-gray-600);border-bottom:2px solid var(--color-gray-200)}.date-col-header,.time-col-header{text-align:center;padding:var(--spacing-2)}.date-col-header{font-weight:400;background:var(--color-gray-50);border-bottom:2px solid transparent}.date-col-header.today{background:var(--color-info-bg)}.weekday{font-size:14px;font-weight:600}.day-number{font-size:18px;font-weight:700}.schedule-table td{border-bottom:1px solid var(--color-gray-100)}.schedule-table tr:hover{background-color:var(--color-gray-50)}.time-label{text-align:center;font-weight:600;color:var(--color-gray-700);font-size:14px;background:var(--color-white);position:-webkit-sticky;position:sticky;left:0;z-index:1}.slot-cell{text-align:center;padding:8px 4px;height:60px;vertical-align:middle}.slot-button{width:100%;height:100%;min-height:44px;border:1px solid var(--color-primary);border-radius:var(--radius-md);background:var(--color-white);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast)}.slot-button:hover{background:var(--color-primary-light);color:var(--color-white)}.slot-button.selected{background:var(--color-primary);color:var(--color-white);box-shadow:0 0 0 2px var(--color-primary-dark)}.slot-button .symbol-circle{font-size:18px;color:var(--color-primary)}.slot-button.selected .symbol-circle,.slot-button:hover .symbol-circle{color:var(--color-white)}.slot-static{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--color-gray-400);font-size:18px}@media (max-width:480px){.schedule-table{min-width:0;width:100%;table-layout:fixed}.time-col-header{width:40px;font-size:10px;padding:4px 2px}.date-col-header{padding:4px 1px}.weekday{font-size:10px;display:block}.day-number{font-size:12px;display:block}.time-label{font-size:10px;padding:4px 2px}.slot-cell{padding:2px;height:40px}.slot-button{min-height:36px;border-radius:4px}.slot-button .symbol-circle{font-size:14px}.slot-static{font-size:12px}.schedule-wrapper{margin-left:-10px;margin-right:-10px;padding:0}}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:6px;gap:6px;background:var(--color-gray-50);padding:var(--spacing-3);border-radius:var(--radius-lg)}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-4);padding:0 var(--spacing-2)}.calendar-month{font-size:var(--font-size-lg);font-weight:700;margin:0;color:var(--color-gray-800)}.weekday-header{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:var(--spacing-2);font-weight:600;font-size:var(--font-size-sm)}.weekday{padding:var(--spacing-2);color:var(--color-gray-500)}.weekday.sun{color:#ef4444}.weekday.sat{color:#3b82f6}.calendar-day{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-2);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);background:var(--color-white);border:none;font-size:var(--font-size-base);font-weight:600;color:var(--color-gray-700);box-shadow:0 1px 2px rgba(0,0,0,.05)}.calendar-day:hover:not(.disabled){background:var(--color-gray-100);transform:scale(1.05)}.calendar-day.selected{background:var(--color-gray-800);color:var(--color-white)}.calendar-day.today{border:2px solid var(--color-primary)}.calendar-day.disabled{opacity:.4;cursor:not-allowed;background:var(--color-gray-100);color:var(--color-gray-400);box-shadow:none}.booking-container{padding-top:var(--spacing-8);padding-bottom:var(--spacing-10);max-width:800px;margin:0 auto}@media (max-width:480px){.booking-container{padding-left:var(--spacing-2);padding-right:var(--spacing-2);padding-top:var(--spacing-4)}}.booking-title{font-size:var(--font-size-2xl);color:var(--color-gray-800)}.booking-title,.section-title{text-align:center;margin-bottom:var(--spacing-6)}.section-title{font-size:var(--font-size-lg);color:var(--color-gray-700)}.date-navigation{display:flex;justify-content:space-between;align-items:center;background:var(--color-gray-50);padding:var(--spacing-4);border-radius:var(--radius-lg);margin-bottom:var(--spacing-6)}.date-display{text-align:center;flex:1 1}.date-text{font-size:var(--font-size-lg);font-weight:700;color:var(--color-gray-800);white-space:nowrap}@media (max-width:480px){.date-text{font-size:var(--font-size-base)}.date-navigation{padding:var(--spacing-3)}}.treatment-grid{display:grid;grid-gap:var(--spacing-3);gap:var(--spacing-3)}.treatment-card{padding:var(--spacing-4)}.treatment-card:hover{border-color:var(--color-gray-400)}.treatment-card.selected{border-color:var(--color-gray-800);background:var(--color-gray-50)}.booking-form-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--spacing-6);gap:var(--spacing-6)}.btn-sm{padding:var(--spacing-2) var(--spacing-3);font-size:var(--font-size-base);min-width:44px}@media (max-width:768px){.booking-form-grid{grid-template-columns:1fr}.booking-container{padding-top:var(--spacing-4);padding-bottom:var(--spacing-6)}.booking-title{font-size:var(--font-size-xl);margin-bottom:var(--spacing-4)}.section-title{font-size:var(--font-size-base);margin-top:var(--spacing-4);margin-bottom:var(--spacing-6);padding:0 var(--spacing-2);line-height:1.6}.calendar-grid{gap:4px;padding:var(--spacing-2)}.calendar-day{font-size:var(--font-size-sm);padding:var(--spacing-1)}.calendar-month{font-size:var(--font-size-base)}.weekday{font-size:var(--font-size-xs);padding:var(--spacing-1)}}.time-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));grid-gap:var(--spacing-2);gap:var(--spacing-2)}.time-slot{padding:var(--spacing-3) var(--spacing-4);text-align:center;border:1px solid var(--color-gray-200);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);background:var(--color-white);font-size:var(--font-size-sm)}.time-slot:hover:not(.disabled){border-color:var(--color-primary);background:var(--color-primary-transparent)}.time-slot.selected{background:var(--color-primary);color:var(--color-white);border-color:var(--color-primary)}.time-slot.disabled{background:var(--color-gray-100);color:var(--color-gray-400);cursor:not-allowed}.dashboard-container{display:grid;grid-template-columns:220px 1fr 280px;min-height:100vh;background:var(--color-gray-100)}.dashboard-container.sidebar-closed{grid-template-columns:0 1fr 280px}.sidebar{background:var(--color-white);border-right:1px solid var(--color-gray-200);padding-top:var(--spacing-6);display:flex;flex-direction:column;overflow:hidden;transition:all var(--transition-base);width:220px}.sidebar.closed{width:0;padding:0;border-right:none;visibility:hidden}.sidebar-item{display:flex;align-items:center;gap:var(--spacing-3);padding:var(--spacing-3) var(--spacing-5);color:var(--color-gray-600);cursor:pointer;transition:all var(--transition-fast);border-left:3px solid transparent}.sidebar-item:hover{background:var(--color-gray-50);color:var(--color-gray-800)}.sidebar-item.active{background:var(--color-primary-transparent);color:var(--color-primary);border-left-color:var(--color-primary);font-weight:500}.main-content{padding:var(--spacing-6);overflow:auto;display:flex;flex-direction:column}.dashboard-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-6);flex-wrap:wrap;gap:var(--spacing-4)}.right-panel{border-left:1px solid var(--color-gray-200);padding:var(--spacing-6);display:flex;flex-direction:column;gap:var(--spacing-6)}.right-panel,.timeline-container{background:var(--color-white);overflow-y:auto}.timeline-container{flex:1 1;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow-x:auto}.timeline-column{min-width:180px;flex:1 1;border-right:1px solid var(--color-gray-200)}.timeline-column:last-child{border-right:none}.timeline-column-header{padding:var(--spacing-4);text-align:center;font-weight:500;border-bottom:1px solid var(--color-gray-200);background:var(--color-gray-50);position:-webkit-sticky;position:sticky;top:0;z-index:10}.time-grid{position:relative}.time-cell{height:60px;border-bottom:1px solid var(--color-gray-100)}.time-cell:nth-child(2n){border-bottom-style:dashed;border-bottom-color:var(--color-gray-200)}.appointment-card{position:absolute;left:2px;right:2px;border-radius:var(--radius-sm);padding:var(--spacing-2);font-size:var(--font-size-xs);cursor:pointer;overflow:hidden;transition:transform var(--transition-fast),box-shadow var(--transition-fast);z-index:5}.appointment-card:hover{transform:scale(1.02);box-shadow:var(--shadow-md);z-index:10}.mini-calendar{background:var(--color-gray-50);border-radius:var(--radius-md);padding:var(--spacing-4)}.mini-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:var(--spacing-1);gap:var(--spacing-1);text-align:center;font-size:var(--font-size-xs)}.mini-calendar-day{padding:var(--spacing-2);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.mini-calendar-day:hover{background:var(--color-primary-transparent)}.mini-calendar-day.selected{background:var(--color-primary);color:var(--color-white)}.treatment-card{background:var(--color-white);border:2px solid var(--color-gray-200);border-radius:var(--radius-lg);padding:var(--spacing-5);cursor:pointer;transition:all var(--transition-base)}.treatment-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md)}.treatment-card.selected{border-color:var(--color-primary);background:var(--color-primary-transparent)}.treatment-card-title{font-size:var(--font-size-lg);font-weight:600;color:var(--color-gray-800);margin-bottom:var(--spacing-2)}.treatment-card-info{display:flex;gap:var(--spacing-4);font-size:var(--font-size-sm);color:var(--color-gray-600)}.treatment-card-price{font-size:var(--font-size-xl);font-weight:700;color:var(--color-primary);margin-top:var(--spacing-3)}.loading{display:flex;align-items:center;justify-content:center;padding:var(--spacing-8)}.loading-spinner{width:40px;height:40px;border:3px solid var(--color-gray-200);border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite}.empty-state{text-align:center;padding:var(--spacing-12);color:var(--color-gray-500)}.empty-state-icon{font-size:48px;margin-bottom:var(--spacing-4)}@media (max-width:1400px){.dashboard-container{grid-template-columns:200px 1fr 260px}.dashboard-container.sidebar-closed{grid-template-columns:0 1fr 260px}}@media (max-width:1200px){.dashboard-container{grid-template-columns:180px 1fr 240px}.dashboard-container.sidebar-closed{grid-template-columns:0 1fr 240px}.timeline-column{min-width:150px}}@media (max-width:1024px){.dashboard-container,.dashboard-container.sidebar-closed{grid-template-columns:1fr 240px}.sidebar{position:fixed;left:0;top:0;bottom:0;width:220px;z-index:100;transform:translateX(-100%);transition:transform .3s ease}.sidebar.open{transform:translateX(0)}}@media (max-width:768px){.dashboard-container,.dashboard-container.sidebar-closed{grid-template-columns:1fr}.right-panel{display:none}.timeline-column{min-width:120px}}@media (max-width:640px){.container{padding:0 var(--spacing-3)}.steps{gap:var(--spacing-1);margin-bottom:var(--spacing-4)}.step,.steps{padding:var(--spacing-1) var(--spacing-2)}.step{font-size:11px;gap:4px}.step-number{width:18px;height:18px;font-size:10px}.step-divider{width:12px}.card{padding:var(--spacing-3);border-radius:var(--radius-md)}.calendar-grid{gap:2px}.calendar-day{padding:var(--spacing-1);font-size:var(--font-size-xs)}.time-slots{grid-template-columns:repeat(3,1fr);gap:var(--spacing-2)}.time-slot{padding:var(--spacing-3) var(--spacing-2);font-size:var(--font-size-sm)}.treatment-card{padding:var(--spacing-3)}.treatment-card-title{font-size:var(--font-size-base)}.treatment-card-info{flex-direction:column;gap:var(--spacing-2)}.form-input{padding:var(--spacing-3);font-size:16px}.form-label{font-size:var(--font-size-sm)}.btn{padding:var(--spacing-3) var(--spacing-4)}.btn-lg{padding:var(--spacing-4) var(--spacing-6);font-size:var(--font-size-base)}}@media (max-width:480px){.steps{justify-content:flex-start}.step span:not(.step-number){display:none}.step-divider{width:8px}.time-slots{grid-template-columns:repeat(2,1fr)}h1{font-size:var(--font-size-xl)!important}h2{font-size:var(--font-size-lg)!important}}