*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--color-primary:#2e6b3e;--color-primary-dark:#1e4d2b;--color-accent:#f0a500;--color-accent-dark:#c98a00;--color-bg:#f8f9f5;--color-surface:#fff;--color-border:#d9e0d3;--color-text:#1a1a1a;--color-muted:#5c6e5c;--color-error:#c0392b;--color-success:#1e8e4e;--color-warning:#e67e22;--radius:10px;--radius-sm:8px;--shadow:0 1px 4px #00000014;--shadow-lg:0 8px 28px #0000002e;--focus-ring:0 0 0 3px #2e6b3e59;--topbar-h:56px;--bottomnav-h:60px}html{-webkit-text-size-adjust:100%}body{background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;min-height:100dvh;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}:root{accent-color:var(--color-primary)}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.layout{flex-direction:column;min-height:100dvh;display:flex}.topbar{z-index:40;background:var(--color-primary);color:#fff;min-height:var(--topbar-h);padding:.5rem 1rem;padding-top:calc(.5rem + env(safe-area-inset-top));padding-left:calc(1rem + env(safe-area-inset-left));padding-right:calc(1rem + env(safe-area-inset-right));align-items:center;gap:1rem;display:flex;position:sticky;top:0}.topbar__brand{letter-spacing:-.01em;color:#fff;font-size:1.15rem;font-weight:800;text-decoration:none}.topbar__links{display:none}.topbar__actions{align-items:center;gap:.5rem;margin-left:auto;display:flex}.topbar__logout{color:#fff;background:#ffffff1f;border:1px solid #ffffff73}.topbar__logout:hover:not(:disabled){background:#ffffff38}.topbar__logout-label{display:none}.page{width:100%;max-width:920px;padding:1.25rem 1rem;padding-left:calc(1rem + env(safe-area-inset-left));padding-right:calc(1rem + env(safe-area-inset-right));padding-bottom:calc(var(--bottomnav-h) + env(safe-area-inset-bottom) + 1.25rem);flex:1;margin:0 auto}.bottomnav{z-index:50;background:var(--color-surface);border-top:1px solid var(--color-border);padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -1px 8px #0000000d}.bottomnav__item{min-height:var(--bottomnav-h);color:var(--color-muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;padding:6px 4px;font-size:.72rem;font-weight:600;text-decoration:none;transition:color .15s;display:flex}.bottomnav__item .bottomnav__label{line-height:1}.bottomnav__item.is-active{color:var(--color-primary)}.bottomnav__item.is-active svg{transform:translateY(-1px)}.auth-page{justify-content:center;align-items:center;min-height:100dvh;padding:1.25rem;display:flex}.auth-card{background:var(--color-surface);border-radius:var(--radius);width:100%;max-width:400px;box-shadow:var(--shadow);padding:1.75rem}.auth-card__title{color:var(--color-primary);font-size:1.6rem;font-weight:800}.auth-card__subtitle{color:var(--color-muted);margin-top:.25rem;font-size:.95rem}.auth-card__header{margin-bottom:1.5rem}.auth-card__footer{text-align:center;color:var(--color-muted);margin-top:1.25rem;font-size:.95rem}.auth-link{color:var(--color-primary);font-weight:600}.auth-form{flex-direction:column;gap:1rem;display:flex}.form-group{flex-direction:column;gap:.4rem;display:flex}.form-label{font-size:.9rem;font-weight:600}.form-input{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;min-height:46px;color:var(--color-text);outline:none;padding:.6rem .8rem;font-size:16px;transition:border-color .15s,box-shadow .15s}.form-input::placeholder{color:#9aa79a}.form-input:focus{border-color:var(--color-primary);box-shadow:var(--focus-ring)}.form-error{color:var(--color-error);font-size:.85rem}.input-group{align-items:center;display:flex;position:relative}.input-group .form-input{padding-right:3rem}.input-toggle{cursor:pointer;min-width:40px;min-height:40px;color:var(--color-muted);background:0 0;border:none;justify-content:center;align-items:center;font-size:.8rem;font-weight:600;display:inline-flex;position:absolute;right:.4rem}.form-row{flex-direction:column;gap:.75rem;display:flex}@media (width>=480px){.form-row{flex-direction:row}.form-row>.form-group{flex:1}}.weekday-row{gap:.35rem;display:flex}.weekday-btn{border:1.5px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius-sm);min-width:38px;min-height:44px;color:var(--color-muted);cursor:pointer;flex:1;font-size:.9rem;font-weight:700;transition:background .12s,color .12s,border-color .12s}.weekday-btn.is-on{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn{border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent;border:1.5px solid #0000;justify-content:center;align-items:center;gap:.45rem;min-height:46px;padding:.6rem 1.15rem;font-size:.95rem;font-weight:600;text-decoration:none;transition:background .15s,opacity .15s,transform 50ms;display:inline-flex}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background:var(--color-primary);color:#fff}.btn--primary:hover:not(:disabled){background:var(--color-primary-dark)}.btn--accent{background:var(--color-accent);color:#1a1a1a}.btn--accent:hover:not(:disabled){background:var(--color-accent-dark)}.btn--danger{background:var(--color-error);color:#fff}.btn--danger:hover:not(:disabled){background:#a5281b}.btn--outline{background:var(--color-surface);border-color:var(--color-primary);color:var(--color-primary)}.btn--outline:hover:not(:disabled){background:#eef4ec}.btn--ghost{color:var(--color-text);background:0 0;border-color:#0000}.btn--sm{min-height:40px;padding:.4rem .8rem;font-size:.85rem}.btn--full,.btn--full-sm{width:100%}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.1rem}.card+.card{margin-top:.85rem}.section-title{color:var(--color-primary);margin-bottom:1rem;font-size:1.15rem;font-weight:700}.week-switch{justify-content:space-between;align-items:center;gap:.75rem;margin:1rem 0 .25rem;display:flex}.week-switch__label{text-align:center;flex:1;font-weight:700}.week-switch__label:first-letter{text-transform:uppercase}.week-switch .btn--sm{min-width:48px;padding:.3rem .6rem;font-size:1.3rem;line-height:1}.agenda-day{margin-top:1.25rem}.agenda-day__title{color:var(--color-primary);margin-bottom:.5rem;font-size:1rem;font-weight:700}.agenda-day__title:first-letter{text-transform:uppercase}.agenda-day__head{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.agenda-day__head .agenda-day__title{margin-bottom:0}.agenda-day__add{color:var(--color-primary);flex:none}.agenda-day__empty{margin:0 0 .25rem}.agenda-slot{justify-content:space-between;align-items:center;gap:1rem;display:flex}.agenda-slot+.agenda-slot{margin-top:.6rem}.agenda-slot__info{flex:1}.agenda-slot__time{font-size:1.15rem}.agenda-slot__action{flex-shrink:0}.choice-row{gap:.6rem;margin-top:.5rem;display:flex}.choice{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);cursor:pointer;text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.15rem;min-height:66px;padding:.6rem;display:flex}.choice.is-on{border-color:var(--color-primary);background:#eef4ec}.choice:disabled{opacity:.5;cursor:not-allowed}.choice__title{font-weight:700}.choice__sub{color:var(--color-muted);font-size:.8rem}.student-card{flex-direction:column;gap:.85rem;display:flex}.student-card__head{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.student-card__name{font-size:1.05rem}.student-card__email{word-break:break-word}.student-link{color:inherit;justify-content:space-between;align-items:center;gap:.75rem;text-decoration:none;display:flex}.student-link__info{flex:1;min-width:0}.student-link__chevron{color:var(--color-muted);flex:none;font-size:1.6rem;line-height:1}.booking-row{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:.75rem;padding:.6rem 0;display:flex}.booking-row:last-child{border-bottom:none;padding-bottom:0}.booking-row__who{min-width:0}.contact-link{color:var(--color-primary);font-weight:600;text-decoration:none}.contact-link:hover{text-decoration:underline}.ledger-row{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:.75rem;padding:.6rem 0;display:flex}.ledger-row:last-child{border-bottom:none;padding-bottom:0}.ledger-row__main{flex-direction:column;gap:.15rem;min-width:0;display:flex}.ledger-row__reason{font-weight:600}.ledger-row__meta{font-size:.8rem}.ledger-amount{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:1.05rem;font-weight:800}.ledger-amount.is-pos{color:var(--color-success)}.ledger-amount.is-neg{color:var(--color-error)}.admin-slot{flex-direction:column;gap:.85rem;display:flex}.admin-slot__time{font-size:1.05rem}.admin-slot__actions{gap:.5rem;display:flex}.admin-slot__actions .btn{flex:1}.page-header__actions{gap:.5rem;width:100%;display:flex}.page-header__actions .btn{flex:1}@media (width>=768px){.admin-slot{flex-direction:row;justify-content:space-between;align-items:center}.admin-slot__info{flex:1}.admin-slot__actions,.admin-slot__actions .btn{flex:none}.page-header__actions{width:auto}.page-header__actions .btn{flex:none}}.table-wrapper{-webkit-overflow-scrolling:touch;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{text-align:left;border-bottom:1px solid var(--color-border);padding:.65rem .8rem}th{background:var(--color-bg);font-weight:700}.alert{border-radius:var(--radius-sm);border:1px solid #0000;padding:.7rem 1rem;font-size:.9rem}.alert--error{color:#8f2018;background:#fde8e8;border-color:#f3c2bd}.alert--success{color:#176c3c;background:#e6f6ec;border-color:#bfe6cd}.badge{border-radius:99px;padding:.18rem .55rem;font-size:.75rem;font-weight:700;display:inline-block}.badge--green{color:#176c3c;background:#e6f6ec}.badge--red{color:#8f2018;background:#fde8e8}.badge--grey{color:#4a4a4a;background:#ececec}.credits-pill{background:var(--color-accent);color:#1a1a1a;border-radius:99px;align-items:center;gap:.3rem;padding:.25rem .75rem;font-size:.95rem;font-weight:700;display:inline-flex}.credits-pill--sm{padding:.2rem .6rem;font-size:.82rem}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1.25rem;display:flex}.page-header h1{font-size:1.45rem;font-weight:800}.muted{color:var(--color-muted);font-size:.9rem}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}.flex-gap{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.modal-overlay{z-index:100;background:#00000080;justify-content:center;align-items:flex-end;padding:0;animation:.15s ease-out overlay-in;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border-radius:var(--radius) var(--radius) 0 0;padding:1.5rem;padding-bottom:calc(1.5rem + env(safe-area-inset-bottom));width:100%;max-width:460px;max-height:90dvh;box-shadow:var(--shadow-lg);animation:.2s ease-out sheet-in;overflow-y:auto}.modal__title{margin-bottom:.75rem;font-size:1.2rem;font-weight:800}.modal__footer{gap:.6rem;margin-top:1.25rem;display:flex}.modal__footer .btn{flex:1}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-in{0%{opacity:.6;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@media (width>=768px){.topbar{gap:1.5rem;padding:.6rem 1.5rem}.topbar__links{gap:1.25rem;margin-left:1rem;display:flex}.topbar__link{color:#ffffffd9;border-bottom:2px solid #0000;padding:.35rem .25rem;font-size:.95rem;font-weight:600;text-decoration:none}.topbar__link:hover{color:#fff}.topbar__link.is-active{color:#fff;border-bottom-color:var(--color-accent)}.topbar__logout-label{display:inline}.bottomnav{display:none}.page{padding:2rem 1.5rem 2.5rem}.modal-overlay{align-items:center;padding:1.5rem}.modal{border-radius:var(--radius);padding-bottom:1.5rem;animation:.18s ease-out modal-in}.modal__footer{justify-content:flex-end}.modal__footer .btn{flex:none}.btn--full-sm{width:auto}.student-card{flex-direction:row;align-items:center}.student-card__info{flex:1}.student-card .btn--full-sm{align-self:center}}@keyframes modal-in{0%{opacity:.5;transform:scale(.97)}to{opacity:1;transform:scale(1)}}
