@import "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600;9..144,700&family=Manrope:wght@400;500;600;700;800&display=swap";:root{--paper:#faf6ee;--paper-raised:#fffdf8;--ink:#2b241c;--ink-soft:#6b5f4f;--line:#e4d9c4;--accent:#c1622d;--accent-soft:#f0d9c4;--accent-ink:#fff;--done:#3f7a4f;--done-bg:#e4efe2;--planned:#4a5b8c;--planned-bg:#e4e8f5;--cancelled:#b5433a;--cancelled-bg:#f6e0dd;--rescheduled:#a9812f;--rescheduled-bg:#f4ecd8;--shadow:0 2px 0 #2b241c14, 0 8px 24px -12px #2b241c40;--radius:14px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:Manrope,-apple-system,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--paper:#1c1812;--paper-raised:#241f18;--ink:#f2ead9;--ink-soft:#b8a98e;--line:#3a3226;--accent:#e2884f;--accent-soft:#4a3320;--accent-ink:#1c1812;--done:#7fbf8f;--done-bg:#24352a;--planned:#8ea0d8;--planned-bg:#232a42;--cancelled:#e0847b;--cancelled-bg:#3a2624;--rescheduled:#dcb95f;--rescheduled-bg:#3a3020;--shadow:0 2px 0 #0000004d, 0 8px 24px -12px #00000080}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--paper);color:var(--ink);background-image:radial-gradient(circle at 1px 1px,#2b241c0a 1px,#0000 0);background-size:22px 22px;margin:0}h1,h2,h3{letter-spacing:-.01em;margin:0;font-family:Fraunces,Georgia,serif;font-weight:600}p{margin:0}button{cursor:pointer;border:1px solid var(--line);background:var(--paper-raised);color:var(--ink);border-radius:10px;padding:.55em 1.1em;font-family:inherit;font-size:.9rem;font-weight:600;transition:transform .12s,box-shadow .12s,background .12s}button:hover:not(:disabled){box-shadow:var(--shadow);transform:translateY(-1px)}button:disabled{opacity:.5;cursor:not-allowed}button.danger{border-color:var(--cancelled);color:var(--cancelled)}input,select{border:1px solid var(--line);background:var(--paper-raised);color:var(--ink);border-radius:8px;padding:.5em .7em;font-family:inherit;font-size:.95rem}a{color:var(--accent)}.auth-page{justify-content:center;align-items:center;min-height:100%;padding:2rem;display:flex}.auth-form{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:1.1rem;width:100%;max-width:360px;padding:2.5rem;display:flex}.auth-form h1{margin-bottom:.5rem;font-size:2rem}.auth-form label{color:var(--ink-soft);flex-direction:column;gap:.35rem;font-size:.85rem;display:flex}.auth-form button{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);margin-top:.5rem;padding:.7em}.error-text{color:var(--cancelled);margin:0;font-size:.85rem}.app-shell{flex-direction:column;min-height:100%;display:flex}.app-header{border-bottom:1px solid var(--line);background:var(--paper-raised);flex-wrap:wrap;align-items:center;gap:2rem;padding:1rem 2rem;display:flex}.app-title{font-family:Fraunces,serif;font-size:1.3rem;font-weight:700}.app-nav{flex:1;gap:1.5rem;display:flex}.app-nav a{color:var(--ink-soft);border-bottom:2px solid #0000;padding-bottom:4px;font-size:.9rem;font-weight:600;text-decoration:none}.app-nav a.active{color:var(--ink);border-bottom-color:var(--accent)}.app-user{color:var(--ink-soft);align-items:center;gap:.8rem;font-size:.9rem;display:flex}.app-content{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:2rem}.app-content--full{flex-direction:column;max-width:none;padding:1.5rem 2rem;display:flex}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.page-header h1{font-size:1.8rem}.student-form{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius);flex-wrap:wrap;align-items:flex-end;gap:1rem;margin-bottom:1.5rem;padding:1.2rem;display:flex}.student-form label{color:var(--ink-soft);flex-direction:column;gap:.3rem;font-size:.8rem;display:flex}.student-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;display:grid}.student-card{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius);color:var(--ink);border-left:4px solid;flex-direction:column;gap:.4rem;padding:1.2rem;text-decoration:none;transition:transform .12s,box-shadow .12s;display:flex}.student-card:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.student-color-dot{border-radius:50%;width:12px;height:12px;display:inline-block}.student-name{font-family:Fraunces,serif;font-size:1.1rem;font-weight:600}.student-contact{color:var(--ink-soft);font-size:.85rem}.student-card-page{flex-direction:column;gap:1.2rem;display:flex}.student-card-page>a{color:var(--ink-soft);font-size:.85rem;text-decoration:none}.student-header{align-items:center;gap:.7rem;display:flex}.student-header h1{font-size:1.8rem}.student-notes{color:var(--ink-soft);font-style:italic}.stats-summary{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;display:grid}.stats-summary.compact{grid-template-columns:repeat(4,1fr);max-width:640px}.stat-tile{border-radius:var(--radius);border:1px solid var(--line);flex-direction:column;gap:.2rem;padding:1.2rem;display:flex}.stat-value{font-family:Fraunces,serif;font-size:2.2rem;font-weight:700;line-height:1}.stat-label{color:var(--ink-soft);font-size:.8rem}.stat-done{background:var(--done-bg)}.stat-done .stat-value{color:var(--done)}.stat-planned{background:var(--planned-bg)}.stat-planned .stat-value{color:var(--planned)}.stat-cancelled{background:var(--cancelled-bg)}.stat-cancelled .stat-value{color:var(--cancelled)}.stat-cancelled-billable{background:var(--done-bg)}.stat-cancelled-billable .stat-value{color:var(--done)}.stat-rescheduled{background:var(--rescheduled-bg)}.stat-rescheduled .stat-value{color:var(--rescheduled)}.month-switcher{align-items:center;gap:1rem;font-weight:600;display:flex}.cancel-reasons,.by-student-table,.student-lessons{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius);padding:1.2rem}.by-student-table table{border-collapse:collapse;width:100%;margin-top:.8rem}.by-student-table th,.by-student-table td{text-align:left;border-bottom:1px solid var(--line);padding:.5rem .6rem;font-size:.9rem}.status-badge{white-space:nowrap;border-radius:999px;padding:.25em .7em;font-size:.78rem;font-weight:600}.badge-planned{background:var(--planned-bg);color:var(--planned)}.badge-done{background:var(--done-bg);color:var(--done)}.badge-cancelled{background:var(--cancelled-bg);color:var(--cancelled)}.badge-rescheduled{background:var(--rescheduled-bg);color:var(--rescheduled)}.billable-badge{white-space:nowrap;border-radius:999px;padding:.2em .6em;font-size:.72rem;font-weight:600}.billable-yes{background:var(--done-bg);color:var(--done)}.billable-no{background:var(--cancelled-bg);color:var(--cancelled)}.lesson-list-badges{flex-direction:column;align-items:flex-end;gap:.3rem;display:flex}.lesson-list{flex-direction:column;gap:.5rem;margin:.8rem 0 0;padding:0;list-style:none;display:flex}.lesson-list li{border-bottom:1px dashed var(--line);cursor:pointer;border-radius:8px;justify-content:space-between;align-items:center;gap:.8rem;margin:0 -.5rem;padding:.6rem .5rem;font-size:.9rem;display:flex}.lesson-list li:hover{background:var(--accent-soft)}.lesson-list-main{flex-direction:column;gap:.2rem;min-width:0;display:flex}.lesson-list-date{font-weight:600}.lesson-list-subtitle{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;overflow:hidden}.lesson-list-empty{cursor:default;color:var(--ink-soft);justify-content:center}.lesson-list-empty:hover{background:0 0}.reschedule-note{color:var(--rescheduled);font-size:.75rem}.view-mode-switch{flex-shrink:0;gap:.4rem;margin:1rem 0;display:flex}.view-mode-switch button{background:var(--paper-raised);border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;border-radius:999px;padding:.4em 1em;font-size:.85rem;font-weight:600}.view-mode-switch button:hover{background:var(--accent-soft)}.view-mode-switch button.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.share-link-box{background:var(--accent-soft);border:1px solid var(--accent);border-radius:var(--radius);padding:1.2rem}.share-link-box h3{margin-bottom:.6rem;font-size:1rem}.share-url{background:var(--paper-raised);word-break:break-all;border-radius:8px;padding:.5rem .7rem;font-family:monospace}.share-actions{flex-wrap:wrap;gap:.6rem;margin-top:.6rem;display:flex}.modal-backdrop{z-index:50;background:#14100a73;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{background:var(--paper-raised);border-radius:var(--radius);border:1px solid var(--line);box-shadow:var(--shadow);flex-direction:column;gap:1rem;width:100%;max-width:380px;padding:1.6rem;display:flex}.modal label{color:var(--ink-soft);flex-direction:column;gap:.35rem;font-size:.85rem;display:flex}.modal-actions{justify-content:flex-end;gap:.6rem;display:flex}.modal-actions-column,.reason-options{flex-direction:column;gap:.5rem;display:flex}.reason-option{align-items:center;gap:.5rem;font-size:.9rem;display:flex}.billable-options{border-top:1px dashed var(--line);flex-direction:column;gap:.5rem;padding-top:.6rem;display:flex}.hint{color:var(--ink-soft);margin:0;font-size:.8rem}.calendar-page{flex-direction:column;flex:1;min-height:0;display:flex}.calendar-page h1{flex-shrink:0;margin:0;font-size:1.8rem}.calendar-header{flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.calendar-filters{flex-wrap:wrap;gap:.5rem;display:flex}.filter-chip{border:1px solid var(--line);background:var(--paper-raised);color:var(--ink-soft);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:999px;align-items:center;gap:.4em;padding:.35em .8em;font-size:.85rem;font-weight:600;transition:background-color .15s,color .15s,border-color .15s;display:inline-flex}.filter-chip:has(input:checked){background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.filter-chip input{accent-color:var(--accent);margin:0}.calendar-page .fc{flex:1;min-height:0}.fc{--fc-border-color:var(--line);--fc-page-bg-color:transparent;--fc-neutral-bg-color:var(--paper-raised);--fc-today-bg-color:var(--accent-soft);--fc-now-indicator-color:var(--accent);font-family:Manrope,sans-serif}.fc .fc-event-main{font-size:.78rem;line-height:1.3}.fc-event-muted{border-style:dashed!important;border-width:2px!important}.fc-event-muted .fc-event-main{opacity:.85}.fc .fc-event-time{opacity:.85;font-size:.72rem}.fc .fc-timegrid-now-indicator-line{border-color:var(--accent);border-width:2px}.fc .fc-timegrid-now-indicator-arrow{background:var(--accent);color:var(--accent-ink);text-align:center;white-space:nowrap;z-index:5;border:none;border-radius:4px;margin-top:-.9em;padding:2px 4px;font-size:.7rem;font-weight:700;line-height:1.4;position:absolute;left:0;right:0}.fc .fc-scroller{scrollbar-width:thin;scrollbar-color:var(--accent) var(--paper)}.fc .fc-scroller::-webkit-scrollbar{width:10px;height:10px}.fc .fc-scroller::-webkit-scrollbar-track{background:var(--paper)}.fc .fc-scroller::-webkit-scrollbar-thumb{background:var(--accent-soft);border:2px solid var(--paper);border-radius:999px}.fc .fc-scroller::-webkit-scrollbar-thumb:hover{background:var(--accent)}.fc-event-reschedule-highlight{outline:3px solid var(--accent);outline-offset:1px;z-index:6;box-shadow:var(--shadow)}.reschedule-tooltip{z-index:100;background:var(--ink);color:var(--paper);white-space:nowrap;pointer-events:none;box-shadow:var(--shadow);border-radius:8px;padding:.4em .7em;font-size:.8rem;font-weight:600;position:fixed}.fc .fc-button{background:var(--paper-raised);border-color:var(--line);color:var(--ink);text-transform:none;box-shadow:none}.fc .fc-button:hover{background:var(--accent-soft)}.fc .fc-button-primary:not(:disabled).fc-button-active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.fc .fc-toolbar-title{font-family:Fraunces,serif;font-size:1.3rem!important}.public-page{max-width:640px;margin:0 auto;padding:3rem 1.5rem}.public-page-calendar{flex-direction:column;max-width:900px;height:100%;padding:1.5rem;display:flex}.public-page-calendar .fc{flex:1;min-height:0}.public-page-calendar .public-header{flex-shrink:0}.public-header{border-bottom:3px solid;align-items:center;gap:.8rem;margin-bottom:1.5rem;padding-bottom:1rem;display:flex}.public-page-message{text-align:center;color:var(--ink-soft);padding:4rem 1rem;font-size:1.1rem}@media (width<=640px){.public-page{padding:1.25rem .9rem}.public-page-calendar{padding:.9rem}.public-header{gap:.6rem;margin-bottom:1rem;padding-bottom:.75rem}.public-header h1{font-size:1.3rem;line-height:1.25}.view-mode-switch{margin:0 0 .9rem}.fc .fc-toolbar.fc-header-toolbar{flex-wrap:wrap;row-gap:.5rem;margin-bottom:.75rem}.fc .fc-toolbar-chunk{justify-content:center;display:flex}.fc .fc-toolbar-chunk:first-child{order:1}.fc .fc-toolbar-chunk:nth-child(2){order:0;width:100%}.fc .fc-toolbar-chunk:last-child{order:2}.fc .fc-toolbar-title{font-size:1.05rem!important}.fc .fc-button{padding:.3em .6em;font-size:.8rem}.fc .fc-toolbar-chunk .fc-today-button{margin-left:.4em}}
