:root{--ink: #1a1a18;--paper: #f7f5f0;--cream: #ede9e0;--accent: #c8401a;--accent-dark: #a83314;--accent-light: #f5e8e3;--green: #2d6a4f;--green-dark: #235a42;--green-light: #e8f3ed;--border: #d4cfc4;--muted: #8a8578;--white: #ffffff;--danger: #b3261e;--shadow: 0 2px 12px rgba(26, 26, 24, .06)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{min-height:100vh}body{font-family:DM Sans,sans-serif;background:var(--paper);color:var(--ink);font-weight:400;-webkit-font-smoothing:antialiased;overflow-x:hidden}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app-header{background:var(--ink);color:var(--white);padding:.9rem 1.5rem;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem}.header-brand{font-family:"DM Serif Display",serif;font-size:1.8rem;color:var(--white);text-align:center;white-space:nowrap;padding:.35rem 1.1rem;border:1px solid rgba(255,255,255,.25);border-radius:10px}.header-brand:hover{text-decoration:none;opacity:.92;border-color:#fff6}.app-header .header-nav-pill{font-family:"DM Serif Display",serif;font-size:12px;padding:6px 11px;border:1px solid rgba(255,255,255,.25);border-radius:9px;white-space:nowrap}.app-header .header-nav-pill:hover{border-color:#fff6}.header-side{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.header-left{justify-content:flex-start}.header-right{justify-content:flex-end}.app-header a{color:#ddd;font-size:14px;padding:6px 10px;border-radius:8px}.app-header a:hover{color:var(--white);background:#ffffff14;text-decoration:none}.app-header a.active{color:var(--white);background:#ffffff1f}.header-auth-btn{font-weight:500}.header-auth-teacher{background:#c8401a33;border:1px solid rgba(200,64,26,.45)}.header-auth-teacher:hover{background:#c8401a59!important}.header-auth-student{background:#2d6a4f40;border:1px solid rgba(45,106,79,.5)}.header-auth-student:hover{background:#2d6a4f66!important}@media (max-width: 640px){.app-header{grid-template-columns:1fr 1fr;grid-template-rows:auto auto}.header-brand{grid-column:1 / -1;order:-1}.header-left,.header-right{justify-content:center}}.container{max-width:960px;margin:0 auto;padding:2rem 1.25rem 3rem}.container.schedule-page{max-width:1200px}.container.narrow{max-width:520px}@media (max-width: 560px){.container{padding:1.5rem 1rem 2.5rem}.page-title{font-size:1.6rem}}.card{background:var(--white);border:1px solid var(--border);border-radius:12px;padding:1.25rem;box-shadow:var(--shadow)}.card+.card{margin-top:1.25rem}.section-title{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:1rem}.page-title{font-family:"DM Serif Display",serif;font-size:1.9rem;margin-bottom:.35rem}.page-sub{font-size:14px;color:var(--muted);margin-bottom:1.75rem}.field{margin-bottom:.9rem}.field label{display:block;font-size:12px;font-weight:500;color:var(--muted);margin-bottom:5px;text-transform:uppercase;letter-spacing:.05em}.field input,.field textarea,.field select{width:100%;font-family:DM Sans,sans-serif;font-size:14px;border:1px solid var(--border);border-radius:8px;padding:10px 12px;background:var(--paper);color:var(--ink);transition:border-color .15s}.field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--accent)}.password-input-wrap{position:relative}.password-input-wrap input{padding-right:4.5rem}.password-toggle{position:absolute;top:50%;right:8px;transform:translateY(-50%);border:none;background:transparent;color:var(--muted);font-family:DM Sans,sans-serif;font-size:12px;font-weight:500;padding:4px 6px;cursor:pointer}.password-toggle:hover{color:var(--accent)}.btn{font-family:DM Sans,sans-serif;font-size:14px;font-weight:500;border:1px solid transparent;border-radius:9px;padding:10px 16px;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-dark)}.btn-dark{background:var(--ink);color:#fff}.btn-dark:hover:not(:disabled){background:#333}.btn-green{background:var(--green);color:#fff}.btn-green:hover:not(:disabled){background:var(--green-dark)}.btn-ghost{background:var(--white);border-color:var(--border);color:var(--ink)}.btn-ghost:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn-block{width:100%}.btn-sm{font-size:12px;padding:6px 11px}.paid-toggle{font-size:12px;padding:6px 11px;border-radius:999px;border:1px solid var(--border);background:var(--white);color:var(--muted);cursor:pointer;white-space:nowrap}.paid-toggle:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.paid-toggle.paid{background:var(--green);border-color:var(--green);color:#fff}.paid-toggle.paid:hover:not(:disabled){background:var(--green-dark);border-color:var(--green-dark)}.paid-toggle:disabled{opacity:.6;cursor:not-allowed}.error-text{color:var(--danger);font-size:13px;margin:.5rem 0}.muted{color:var(--muted)}.center{text-align:center}.row{display:flex;align-items:center;gap:.5rem}.spread{justify-content:space-between}.pill{font-size:11px;font-weight:500;padding:3px 9px;border-radius:20px}.pill-open{background:#e8edf5;color:#2a4a7a}.pill-taken{background:var(--green-light);color:var(--green)}.pill-warn{background:#fdeede;color:#a05a00}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#14120e73;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:1000}.modal-card{width:100%;max-width:420px;margin:0}.modal-title{font-size:16px;font-weight:600;margin-bottom:.25rem}.modal-subtitle{font-size:13px;color:var(--muted);margin:0 0 1rem}.modal-option{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;padding:11px 13px;margin-bottom:.5rem;border:1px solid var(--border);border-radius:10px;background:var(--white);cursor:pointer}.modal-option:hover:not(:disabled){border-color:var(--accent)}.modal-option:disabled{opacity:.6;cursor:not-allowed}.modal-option.danger:hover:not(:disabled){border-color:var(--danger)}.modal-option-label{font-size:14px;font-weight:600;color:var(--ink)}.modal-option.danger .modal-option-label{color:var(--danger)}.modal-option-desc{font-size:12px;color:var(--muted)}.toast{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%) translateY(10px);background:var(--ink);color:#fff;font-size:13px;padding:11px 20px;border-radius:9px;opacity:0;transition:opacity .2s,transform .2s;pointer-events:none;z-index:200;box-shadow:0 6px 24px #00000040}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}.loading{padding:3rem 1rem;text-align:center;color:var(--muted);font-size:14px}.week-nav{display:flex;align-items:center;justify-content:center;gap:12px;background:var(--cream);border-radius:10px;padding:.7rem 1rem;margin-bottom:1.5rem}.week-nav-btn{width:34px;height:34px;flex-shrink:0;border:1px solid var(--border);border-radius:8px;background:var(--white);color:var(--ink);font-size:20px;line-height:1;cursor:pointer}.week-nav-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.week-nav-btn:disabled{opacity:.35;cursor:not-allowed}.week-nav-text{flex:1;text-align:center;font-size:14px;color:var(--muted)}.week-nav-text strong{color:var(--ink)}.day-group{margin-bottom:1.5rem}.day-group-head{display:flex;align-items:baseline;justify-content:flex-start;gap:4px;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--border)}.day-group-name{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.07em}.day-group-sep{font-size:13px;font-weight:600;color:var(--muted)}.day-group-date{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:#6a655c}.day-group-slots{display:flex;flex-direction:column;gap:8px}.slot-card{background:var(--white);border:1px solid var(--border);border-radius:12px;padding:.85rem 1.1rem;display:flex;align-items:center;gap:1rem;cursor:pointer;transition:border-color .15s,box-shadow .15s;-webkit-user-select:none;user-select:none}.slot-card:hover:not(.taken){border-color:var(--accent);box-shadow:0 2px 12px #c8401a1a}@media (max-width: 560px){.slot-card{padding:.75rem .85rem;gap:.6rem}}.slot-card.selected{border-color:var(--accent);background:var(--accent-light)}.slot-card.taken{opacity:.6;cursor:not-allowed;background:var(--cream)}.slot-card.past{opacity:.55;cursor:not-allowed;background:var(--cream);border-style:dashed;border-color:var(--border)}.slot-card.past .slot-time,.slot-card.past .slot-meta{color:var(--muted)}.slot-card.pending{border-color:#f0c090;background:#fef3e2}.slot-card.pending.mine{border-color:#f0c090;background:#fef3e2;opacity:1}.slot-card.mine{border-color:var(--green);background:var(--green-light);opacity:1;cursor:default}.slot-dot{width:12px;height:12px;border-radius:50%;border:2px solid var(--border);flex-shrink:0}.slot-card.selected .slot-dot{background:var(--accent);border-color:var(--accent)}.slot-info{flex:1}.slot-time{font-size:15px;font-weight:500}.slot-meta{font-size:12px;color:var(--muted);margin-top:2px}.slot-status{font-size:12px;font-weight:500;white-space:nowrap;text-align:right}.slot-oneoff-tag{display:inline-block;margin-left:8px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#6b4fa0;background:#f3ecfb;border:1px solid #d9c9f0;border-radius:999px;padding:1px 7px;vertical-align:middle}.recurring-locked{margin:1rem 0;display:flex;align-items:flex-start;gap:8px;border:1px dashed var(--border);border-radius:10px;background:var(--cream);padding:12px 14px;font-size:13px;color:var(--muted)}.recurring-locked-icon{font-size:14px;line-height:1.3}.recurring-toggle{margin:1rem 0;border:1px solid var(--border);border-radius:10px;background:var(--paper);overflow:hidden}.recurring-toggle.active{border-color:var(--green);background:var(--green-light)}.recurring-toggle-row{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;cursor:pointer;gap:12px}.recurring-toggle-label strong{display:block;font-size:13px;font-weight:500}.recurring-toggle-label span{font-size:12px;color:var(--muted)}.switch{width:42px;height:23px;border-radius:12px;background:var(--border);position:relative;flex-shrink:0;transition:background .2s;cursor:pointer;border:none;padding:0}.switch:after{content:"";position:absolute;top:3px;left:3px;width:17px;height:17px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px #0003}.switch.on{background:var(--green)}.switch.on:after{transform:translate(19px)}.studio-checklist{display:flex;flex-direction:column;gap:.5rem}.studio-check{display:flex;align-items:flex-start;gap:.65rem;padding:.65rem .75rem;border:1px solid var(--border);border-radius:9px;background:var(--paper);cursor:pointer;font-size:14px}.studio-check:hover{border-color:var(--accent)}.studio-check input{margin-top:3px;flex-shrink:0;accent-color:var(--accent)}.studio-check strong{display:block;font-weight:500}.studio-check-desc{display:block;font-size:12px;color:var(--muted);margin-top:2px;line-height:1.4}.studio-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.studio-card{background:var(--white);border:1px solid var(--border);border-radius:12px;padding:1.25rem;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:.6rem}.studio-card h3{font-family:"DM Serif Display",serif;font-weight:400;font-size:1.3rem}.studio-card .bio{font-size:13px;color:var(--muted);line-height:1.5;flex:1}.instructor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}.instructor-card{background:var(--white);border:1px solid var(--border);border-radius:12px;padding:1.25rem;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:.6rem}.instructor-card h3{font-family:"DM Serif Display",serif;font-weight:400;font-size:1.3rem}.instructor-card .bio{font-size:13px;color:var(--muted);line-height:1.5;flex:1}.studio-search{margin-bottom:1.5rem;padding:0;overflow:hidden}.studio-search-summary{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:.75rem;-webkit-user-select:none;user-select:none;padding:1.25rem}.studio-search-summary::-webkit-details-marker{display:none}.studio-search-summary:after{content:"";flex-shrink:0;width:.45rem;height:.45rem;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);margin-top:-.15rem;transition:transform .15s ease}.studio-search[open] .studio-search-summary{border-bottom:1px solid var(--cream)}.studio-search[open] .studio-search-summary:after{transform:rotate(-135deg);margin-top:.15rem}.studio-search-body{padding:1.25rem}.studio-search-form{display:grid;grid-template-columns:1fr 1fr auto;gap:.75rem;align-items:end}.studio-search-form .field{margin-bottom:0}.studio-search-results{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--cream)}.availability-list{display:flex;flex-direction:column;gap:8px}a.availability-row{text-decoration:none;color:inherit}a.availability-row:hover{text-decoration:none}@media (max-width: 640px){.studio-search-form{grid-template-columns:1fr}}.day-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}@media (max-width: 760px){.day-grid{grid-template-columns:repeat(2,1fr)}}.day-col{background:var(--white);border:1px solid var(--border);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:7px}.day-col-head{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;padding-bottom:6px;border-bottom:1px solid var(--border)}.slot-chip{border-radius:8px;padding:6px 8px;border:1px solid var(--border);background:var(--paper);display:flex;align-items:center;justify-content:space-between;gap:4px}.slot-chip .t{font-size:12px;font-weight:500}.chip-x{background:none;border:none;cursor:pointer;color:var(--muted);font-size:14px;line-height:1;padding:2px 4px;border-radius:4px}.chip-x:hover{background:var(--cream);color:var(--danger)}.chip-tag{font-style:normal;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;margin-left:5px;padding:1px 5px;border-radius:999px;vertical-align:middle}.slot-chip-oneoff{border-color:#c7b3e6;background:#f3ecfb}.slot-chip-oneoff .chip-tag{background:#6b4fa0;color:#fff}.slot-chip-blocked{border-style:dashed;background:var(--cream)}.slot-chip-blocked .t{text-decoration:line-through;color:var(--muted)}.slot-chip-blocked .chip-tag{background:#fdeede;color:#a05a00;text-decoration:none}.time-add{margin-top:4px}.time-add select{width:100%;font-family:DM Sans,sans-serif;font-size:12px;border:1px solid var(--border);border-radius:7px;padding:6px;background:var(--white)}.weekly-spot{border-bottom:1px solid var(--cream)}.weekly-spot:last-child{border-bottom:none}.weekly-occurrences{padding:6px 0 12px 130px}.occurrence-row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;padding:4px 0}@media (max-width: 560px){.weekly-occurrences{padding-left:0}}.list-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--cream);font-size:14px}.list-row:last-child{border-bottom:none}.list-row .grow{flex:1;min-width:0}.list-row .when{min-width:130px}.list-row .when .d{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.contact{font-size:12px;color:var(--muted);overflow-wrap:anywhere}@media (max-width: 560px){.list-row{flex-wrap:wrap;align-items:flex-start;gap:8px}.list-row .when{min-width:0;flex:1 1 auto}.list-row .grow{flex:1 1 100%;order:2}.list-row>.row,.list-row>.pill{order:3;margin-left:auto}}.share-grid{display:grid;grid-template-columns:auto 1fr;gap:1.25rem;align-items:start}@media (max-width: 640px){.share-grid{grid-template-columns:1fr;justify-items:center}}.share-qr img{width:150px;height:150px;border:1px solid var(--border);border-radius:10px;background:#fff;display:block}.open-list{font-size:13px;line-height:1.6;max-height:150px;overflow-y:auto;background:var(--paper);border:1px solid var(--cream);border-radius:8px;padding:10px 12px;margin:.5rem 0 1rem}.schedule-layout{display:grid;grid-template-columns:minmax(200px,1fr) minmax(280px,1.4fr) minmax(200px,1fr);gap:1.25rem;align-items:start}.schedule-main,.schedule-side{min-width:0}.schedule-info-panel{position:sticky;top:1rem}@media (max-width: 960px){.schedule-layout{grid-template-columns:1fr}.schedule-main{order:-1}.schedule-info-panel{position:static}}.rich-text-editor{border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--paper)}.rich-text-toolbar{display:flex;flex-wrap:wrap;gap:4px;padding:6px;border-bottom:1px solid var(--border);background:var(--white)}.rich-text-btn{font-family:DM Sans,sans-serif;font-size:12px;min-width:28px;height:28px;padding:0 8px;border:1px solid var(--border);border-radius:6px;background:var(--paper);cursor:pointer;color:var(--ink)}.rich-text-btn:hover{border-color:var(--accent);color:var(--accent)}.rich-text-body{min-height:140px;max-height:320px;overflow-y:auto;padding:10px 12px;font-size:14px;line-height:1.55;outline:none}.rich-text-body:empty:before{content:attr(data-placeholder);color:var(--muted);pointer-events:none}.rich-text-display{font-size:14px;line-height:1.55}.rich-text-display ul,.rich-text-display ol{margin:.5rem 0 .5rem 1.25rem}.rich-text-display p{margin:0 0 .5rem}.rich-text-display p:last-child{margin-bottom:0}.rich-text-empty{font-size:13px}.confirm-lesson{scroll-margin-top:1rem}
