/* Englisy student area (login, account, booking, admin). Builds on styles.css. */
[hidden]{display:none!important}
.app-page{background:#f7fbfe}
.app-main{min-height:70vh;padding:60px 0 90px}
.muted{color:#7b8794}.small{font-size:13px}
.script{color:var(--blue-d)}
.eyebrow-sm{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--blue-d);font-weight:600;margin-bottom:6px}
.btn-block{display:block;width:100%;text-align:center;cursor:pointer;font-family:inherit}
.btn-sm2{padding:9px 18px;font-size:12px;cursor:pointer;font-family:inherit}
button.btn{cursor:pointer;font-family:inherit}
.btn.disabled{opacity:.4;cursor:not-allowed}
.small-link{display:block;margin-top:10px;font-size:13px;font-weight:600;text-align:center}
.link-btn{background:none;border:0;color:#7b8794;font:inherit;font-size:13px;cursor:pointer;text-decoration:underline}

/* auth */
.auth{display:grid;place-items:center;padding:0 20px}
.auth-card{width:100%;max-width:440px;background:#fff;border:1px solid var(--line);padding:44px 40px}
.auth-card h1{font-size:30px;margin-bottom:6px}
.tabs{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line);margin:26px 0 24px}
.tab{background:none;border:0;border-bottom:2px solid transparent;padding:10px;font:inherit;font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#7b8794;cursor:pointer;margin-bottom:-1px}
.tab.active{color:var(--navy);border-color:var(--blue)}
.form label{display:block;font-size:13px;font-weight:600;color:var(--navy);margin-bottom:16px}
.form input{display:block;width:100%;margin-top:6px;padding:12px 14px;border:1px solid var(--line);font:inherit;font-size:15px;color:var(--navy);background:#fff}
.form input:focus{outline:2px solid #bfe0f6;border-color:var(--blue)}
.form .btn{margin-top:6px}
.or{text-align:center;position:relative;margin:18px 0 12px;font-size:12px;color:#7b8794}
.or:before{content:"";position:absolute;left:0;right:0;top:50%;border-top:1px solid var(--line)}
.or span{position:relative;background:#fff;padding:0 10px}
#forgot{display:block;text-align:center;margin-top:16px}
#forgot[hidden]{display:none}
.form-msg{margin:14px 0;font-size:14px;padding:12px 14px}
.form-msg:focus{outline:2px solid var(--blue);outline-offset:2px}
.form-msg.ok,.notice.ok{background:#eaf6ee;color:#245c36}
.form-msg.err{background:#fdecec;color:#8a2a2a}

/* dashboard */
.dash{max-width:960px}
.dash-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:30px;flex-wrap:wrap}
.dash-head h1{font-size:34px}
.dash-actions{display:flex;gap:18px;align-items:center}
.dash-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:24px;margin-bottom:24px}
.panel{background:#fff;border:1px solid var(--line);padding:28px 30px;margin-bottom:24px}
.dash-grid .panel{margin-bottom:0}
.panel-label{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#7b8794;font-weight:600}
.panel-title{font-size:18px;margin-bottom:16px}
.panel-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
.credits-num{font-size:64px;font-weight:600;color:var(--blue-d);line-height:1.1;margin:8px 0 2px}
.credits-panel .muted{margin-bottom:20px}
.pack-line{font-size:22px;color:var(--navy);margin:10px 0 8px}
.pack-panel .muted{margin-bottom:20px;font-size:14px}
.pack-panel.highlight{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue)}
.notice{padding:14px 18px;margin-bottom:24px;background:var(--sky);font-size:15px}
.lessons{list-style:none}
.lesson{display:grid;grid-template-columns:150px 1fr auto;gap:20px;align-items:center;padding:16px 0;border-top:1px solid var(--line)}
.lesson-date .d{display:block;font-weight:600;color:var(--navy)}
.lesson-date .t{font-size:14px}
.lesson-info{color:var(--navy);display:flex;flex-direction:column}
.lesson-info .muted{font-size:13px}
.lesson-actions{display:flex;gap:16px;align-items:center}
.empty{padding:16px 0;border-top:1px solid var(--line);color:#7b8794}
.later{text-align:center;font-size:14px}

/* booking */
.credit-chip{border:1px solid var(--line);background:#fff;padding:10px 18px;font-size:14px}
.credit-chip strong{color:var(--blue-d);font-size:18px}
.blocked{border-color:#f0c8c8;background:#fffafa}
.blocked .muted{margin-bottom:18px}
.picker.locked{opacity:.35;pointer-events:none;filter:grayscale(.5)}
.days{display:flex;gap:10px;overflow-x:auto;padding-bottom:6px}
.day{flex:0 0 78px;border:1px solid var(--line);background:#fff;padding:10px 4px;font:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;color:var(--text);font-size:12px;line-height:1.4}
.day strong{font-size:22px;color:var(--navy);font-weight:600}
.day em{font-style:normal;font-size:11px;color:var(--blue-d);margin-top:2px}
.day:hover{border-color:var(--blue)}
.day.active{background:var(--navy);border-color:var(--navy);color:#cfe3f3}.day.active strong,.day.active em{color:#fff}
.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}
.slot{border:1px solid var(--line);background:#fff;padding:12px;font:inherit;font-weight:600;color:var(--navy);cursor:pointer}
.slot:hover{border-color:var(--blue);color:var(--blue-d)}
.slot.active{background:var(--blue);border-color:var(--blue);color:#fff}
.confirm{display:flex;justify-content:space-between;align-items:center;gap:20px;border-color:var(--blue);background:var(--sky)}
.confirm-when{font-size:20px;font-weight:600;color:var(--navy);margin:4px 0}

/* admin */
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-bottom:24px}
.stat{background:#fff;border:1px solid var(--line);padding:22px 26px}
.stat strong{display:block;font-size:32px;color:var(--blue-d);font-weight:600}
.stat span{font-size:13px;color:#7b8794}
.table{width:100%;border-collapse:collapse;font-size:14px;margin-bottom:10px}
.table th{text-align:left;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#7b8794;padding:8px 10px;border-bottom:1px solid var(--line)}
.table td{padding:12px 10px;border-bottom:1px solid var(--line);color:var(--navy)}
.bal{font-weight:600;color:var(--blue-d)}.bal.zero{color:#b04a4a}
.adj button{border:1px solid var(--line);background:#fff;width:34px;height:30px;margin-right:6px;cursor:pointer;font:inherit}
.adj button:hover{border-color:var(--blue)}

#demo-badge{position:fixed;left:16px;bottom:16px;background:#fff3c4;color:#7a5d00;font-size:12px;font-weight:600;padding:6px 12px;border:1px solid #f0dc8c;z-index:50}
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:var(--navy);color:#fff;padding:12px 20px;font-size:14px;z-index:60}
.toast.err{background:#8a2a2a}

@media(max-width:760px){
 .app-main{padding:36px 0 60px}
 .auth-card{padding:32px 22px}
 .dash-grid,.stat-row{grid-template-columns:1fr}
 .lesson{grid-template-columns:1fr;gap:8px}
 .confirm{flex-direction:column;align-items:stretch}
 .table{font-size:13px}.table td:nth-child(2),.table th:nth-child(2){display:none}
}

.policy{font-size:14px;color:var(--navy);background:#fff;border:1px solid var(--line);border-left:3px solid var(--blue);padding:12px 16px;margin-bottom:20px}
.policy-inline{font-size:13px;color:var(--navy);margin-top:6px}
.too-late{font-size:12px;color:#8a5a00;max-width:200px;line-height:1.4}
.confirm .btn{white-space:nowrap;flex-shrink:0}

/* homework */
.hw-tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:6px}
.hw-tab{background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;padding:8px 12px;font:inherit;font-size:13px;font-weight:600;color:#7b8794;cursor:pointer}
.hw-tab span{font-weight:400;margin-left:4px;color:#9aa5b1}
.hw-tab.active{color:var(--navy);border-color:var(--blue)}
.hw{padding:22px 0;border-bottom:1px solid var(--line)}
.hw:last-child{border-bottom:0}
.hw-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
.hw h3{font-size:17px;font-weight:600;letter-spacing:0}
.hw-student{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--blue-d);font-weight:600;margin-bottom:2px}
.hw-status{flex-shrink:0;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;padding:3px 8px;border:1px solid var(--line);color:#7b8794}
.hw-status.assigned{border-color:var(--blue);color:var(--blue-d)}
.hw-status.submitted{border-color:#e0b85a;color:#8a5a00}
.hw-status.reviewed{border-color:#9fd0ad;color:#245c36}
.hw-meta{font-size:13px;color:#7b8794;margin:4px 0 10px}
.hw-meta .overdue{color:#b04a4a;font-weight:600}
.hw-instr{font-size:15px;margin-bottom:12px}
.hw-answer,.hw-feedback{padding:12px 16px;margin:10px 0;font-size:14.5px}
.hw-answer{background:#f7f9fb;border-left:3px solid #c9d4de}
.hw-feedback{background:#eef8f1;border-left:3px solid #6bb784}
.hw-answer .panel-label,.hw-feedback .panel-label{font-size:11px;margin-bottom:4px}
.hw-wait{font-size:13px;color:#7b8794}
.hw-form,.hw-review{margin-top:12px}
.form textarea,.form select{display:block;width:100%;margin-top:6px;padding:11px 14px;border:1px solid var(--line);font:inherit;font-size:15px;color:var(--navy);background:#fff;resize:vertical}
.form textarea:focus,.form select:focus{outline:2px solid #bfe0f6;border-color:var(--blue)}
.hw-actions{display:flex;gap:16px;align-items:center;margin-top:8px}
.link-btn.danger{color:#b04a4a}
.hw-admin-tools{display:flex;gap:12px;align-items:center}
.hw-admin-tools select{padding:8px 10px;border:1px solid var(--line);font:inherit;font-size:13px;color:var(--navy);background:#fff}
.hw-editor{background:var(--sky);border-color:var(--blue)}
.hw-editor h3{font-size:16px;margin-bottom:14px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.editor-actions{display:flex;gap:16px;align-items:center}
@media(max-width:760px){.grid2{grid-template-columns:1fr}.hw-head{flex-direction:column;gap:6px}.hw-admin-tools{flex-wrap:wrap}}

/* pack picker */
.pack-pick{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:12px 0 16px}
.pack-opt{position:relative;border:1px solid var(--line);background:#fff;padding:14px 6px 10px;font:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;color:var(--text);line-height:1.3}
.pack-opt strong{font-size:26px;color:var(--navy);font-weight:600}
.pack-opt span{font-size:12px}
.pack-opt em{font-style:normal;font-size:12px;color:var(--blue-d);margin-top:4px}
.pack-opt .pop{position:absolute;top:-9px;background:var(--blue);color:#fff;font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:2px 6px}
.pack-opt:hover{border-color:var(--blue)}
.pack-opt.active{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue);background:var(--sky)}
.pack-opt:disabled{opacity:.4;cursor:not-allowed}
.blocked .pack-pick{max-width:420px}
.pack-badge{font-size:12px;font-weight:600;color:var(--blue-d);border:1px solid var(--line);padding:2px 8px}

/* lesson history (student) */
.history-item{border-top:1px solid var(--line)}
.history-item summary{display:flex;gap:16px;align-items:baseline;padding:14px 0;cursor:pointer;list-style:none}
.history-item summary::-webkit-details-marker{display:none}
.history-item summary:before{content:"+";width:18px;color:var(--blue-d);font-weight:600}
.history-item[open] summary:before{content:"–"}
.h-date{font-weight:600;color:var(--navy)}
.h-time{font-size:14px;color:#7b8794}
.h-counts{margin-left:auto;font-size:13px;color:var(--blue-d)}
.history-body{padding:0 0 22px 34px;display:grid;gap:22px}
.notes-block h4{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:#7b8794;margin-bottom:8px}
.notes-table{width:100%;border-collapse:collapse;font-size:14.5px}
.notes-table th{text-align:left;font-size:11px;font-weight:600;color:#9aa5b1;padding:4px 8px;border-bottom:1px solid var(--line)}
.notes-table td{padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top;color:var(--navy)}
.notes-table .said{color:#a14a4a;text-decoration:line-through;text-decoration-color:#e4a5a5;width:38%}
.notes-table .arrow{color:#9aa5b1;width:20px}
.notes-table .correct{color:#245c36;font-weight:600}
.notes-table .note{font-size:13px;color:#7b8794;margin-top:2px}
.notes-table.vocab td:first-child{width:38%}
.notes-table .it{color:#7b8794;font-style:italic}

/* lesson notes editor (admin) */
#ln-editor h3{font-size:15px}
.ln-section{margin:18px 0 24px}
.ln-rows{display:grid;gap:6px;margin-top:8px}
.ln-row{display:grid;gap:6px;align-items:center}
.ln-row.m{grid-template-columns:1fr 18px 1fr 1fr 28px}
.ln-row.v{grid-template-columns:1fr 1.2fr 1.4fr .9fr 28px}
.ln-row input{padding:8px 10px;border:1px solid var(--line);font:inherit;font-size:14px;color:var(--navy);width:100%;min-width:0}
.ln-row input:focus{outline:2px solid #bfe0f6;border-color:var(--blue)}
.ln-row[data-source] input:first-child{border-left:3px solid #e0b85a}
.ln-arrow{color:#9aa5b1;text-align:center}
.ln-del{border:0;background:none;font-size:20px;color:#b9c2cc;cursor:pointer;line-height:1}
.ln-del:hover{color:#b04a4a}
.ln-paste{margin:8px 0;padding:12px;background:var(--sky);border:1px solid var(--line)}
.ln-paste textarea{margin:0 0 8px}
@media(max-width:760px){.ln-row.m,.ln-row.v{grid-template-columns:1fr 28px}.ln-row .ln-arrow{display:none}.history-body{padding-left:0}.h-counts{display:none}}

/* trial */
.kind-pick{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.kind-opt{position:relative;text-align:left;border:1px solid var(--line);background:#fff;padding:18px 20px;font:inherit;cursor:pointer;display:flex;flex-direction:column;gap:4px;color:var(--text)}
.kind-opt strong{font-size:17px;color:var(--navy);font-weight:600}
.kind-opt span{font-size:14px}.kind-opt em{font-style:normal;color:var(--blue-d);font-weight:600}
.kind-opt .pop{position:absolute;top:-9px;right:14px;background:var(--blue);color:#fff;font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:2px 6px}
.kind-opt:hover{border-color:var(--blue)}
.kind-opt.active{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue);background:var(--sky)}
.trial-pay{border-color:var(--blue);background:var(--sky)}
.trial-status{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 22px;margin-bottom:24px;background:#fff;border:1px solid var(--line);border-left:3px solid var(--blue)}
.trial-status strong{display:block;color:var(--navy)}
.trial-status span{font-size:14px;color:#7b8794}
.trial-status.open{background:var(--sky)}
.trial-status.done{border-left-color:#c9d4de}
.trial-flag{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--blue-d);border:1px solid var(--blue);padding:1px 6px;margin-left:6px;vertical-align:1px}
.trial-flag.done{color:#7b8794;border-color:var(--line);margin-left:0}
@media(max-width:760px){.kind-pick{grid-template-columns:1fr}.trial-status{flex-direction:column;align-items:flex-start}}

/* welcome / needs analysis */
.wiz{max-width:680px}
.wiz h1{font-size:30px;margin-bottom:10px}
.wiz-intro{margin-bottom:28px}
.wiz-progress{height:4px;background:var(--line);margin-bottom:10px}
.wiz-progress span{display:block;height:100%;width:20%;background:var(--blue);transition:width .3s}
.wiz-step-label{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:#7b8794;font-weight:600;margin-bottom:22px}
.wiz-form{background:#fff;border:1px solid var(--line);padding:30px}
.wiz-step{border:0;padding:0;margin:0;min-width:0}
.wiz-q{font-size:13px;font-weight:600;color:var(--navy);margin-bottom:10px}
.wiz-q .muted{font-weight:400}
.wiz-note{font-size:14px;margin-bottom:14px}
.guardian{background:var(--sky);border:1px solid var(--line);padding:18px 18px 4px;margin-bottom:16px}
.form label.check{display:flex;gap:10px;align-items:flex-start;font-weight:400;font-size:14px;color:var(--text)}
.form label.check input{width:auto;margin:3px 0 0;flex:none}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px}
.form .chips label{margin:0;font-weight:500}
.chips input{position:absolute;opacity:0;pointer-events:none}
.chips span{display:flex;flex-direction:column;border:1px solid var(--line);padding:10px 16px;font-size:14px;color:var(--navy);cursor:pointer;background:#fff;transition:border-color .15s,background .15s}
.chips small{font-size:12px;color:#7b8794;font-weight:400}
.chips label:hover span{border-color:var(--blue)}
.chips input:checked+span{border-color:var(--blue);background:var(--sky);box-shadow:0 0 0 1px var(--blue)}
.chips input:focus-visible+span{outline:2px solid #bfe0f6}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.wiz-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding-top:20px;margin-top:8px}
.wiz-nav #skip{margin-left:auto;margin-right:8px}
.wiz-nav .btn{margin-top:0}
/* profile summary (account + admin) */
.lp-list{display:grid;grid-template-columns:160px 1fr;gap:8px 18px;font-size:14.5px;margin:0}
.lp-list dt{color:#7b8794;font-weight:500}.lp-list dd{margin:0;color:var(--navy)}
.lp-mini{font-size:12.5px;color:#7b8794;line-height:1.45;max-width:280px}
.lp-mini strong{color:var(--navy);font-weight:600}
.lp-mini details summary{cursor:pointer;color:var(--blue-d);font-weight:600}
.lp-mini .lp-list{grid-template-columns:110px 1fr;font-size:12.5px;margin-top:8px;gap:4px 10px}
@media(max-width:600px){.wiz-form{padding:22px 18px}.two-col{grid-template-columns:1fr}.lp-list{grid-template-columns:1fr;gap:2px}.lp-list dd{margin-bottom:8px}.chips span{padding:9px 13px}}
.wiz [hidden],.lp-card[hidden]{display:none!important}
.chips label{position:relative}.chips input{left:0;top:0;width:1px;height:1px}.form input{min-width:0}
/* merged "After each lesson" */
#lesson-box .ln-section{border-top:1px solid var(--line);padding-top:16px;margin-top:16px}
#lesson-box .ln-section:first-child{border-top:0;margin-top:4px;padding-top:0}
#lesson-box .hw-editor{background:var(--sky);border:1px solid var(--line);padding:18px;margin:8px 0 14px}
.hw-other-wrap{margin-top:22px;border-top:1px solid var(--line);padding-top:14px}
.hw-other-wrap>summary{cursor:pointer;font-weight:600;color:var(--navy);font-size:15px}
.hw-other-wrap #hw-other{margin-top:12px}
#notes-panel .notes-block h4{margin-top:4px}
#notes-panel .hw{margin-bottom:12px}
.history-body,.notes-block,.hw,.hw-admin-tools select{min-width:0;max-width:100%}
.notes-table td{overflow-wrap:anywhere}
@media(max-width:600px){.hw-admin-tools{display:flex;flex-direction:column;gap:8px;width:100%}.hw-admin-tools select{width:100%}}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
@media(max-width:760px){.ln-row{grid-template-columns:1fr 28px!important;padding-bottom:10px;border-bottom:1px dashed var(--line);margin-bottom:10px}.ln-row input{grid-column:1}.ln-row .ln-del{grid-column:2;grid-row:1}}
.err-notice{background:#fdecec;color:#8a2a2a;border-left:3px solid #c0392b}
.pack-pick.locked{opacity:.5}.th-note{font-weight:400;text-transform:none;letter-spacing:0}.ok-text{color:#245c36}
/* booking confirmation card (account page, after booking) */
.booked-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.booked-title{font-size:20px;font-weight:800;color:var(--navy)}
.booked-when{font-size:18px;font-weight:700;color:var(--navy)}
.booked-when small{font-weight:400;font-size:13px}
.booked-link{font-size:14px;word-break:break-all}
.lesson-info .meet-link{font-size:13px;word-break:break-all}
.join-hint{margin-top:10px}

/* account page: discreet link to edit the learning profile (answers themselves are not shown) */
.lp-update{margin:-6px 0 18px;text-align:right;font-size:13px}.lp-update a{color:#7b8794;text-decoration:underline;text-underline-offset:2px}.lp-update a:hover{color:var(--navy)}.lp-update[hidden]{display:none!important}
/* packs: 4/8/12 framing, per-pack validity (shown before payment), personal pack, what-you-buy summary */
.pack-opt .pack-week{font-size:10.5px;color:var(--muted,#6b7785);text-align:center;margin-top:2px;line-height:1.25}
.pack-opt .pack-per{font-size:10.5px;color:var(--muted,#6b7785)}
.pack-opt .pack-valid{font-size:10.5px;font-weight:600;color:var(--navy);text-align:center;margin-top:3px;line-height:1.25}
.pack-opt.custom{grid-column:1/-1;padding-top:16px}
.pack-opt .pop.mine{background:#245c36}
.co-summary{margin:4px 0 10px;padding:8px 10px;background:var(--sky);border-left:3px solid var(--blue);line-height:1.45}
.co-summary:empty{display:none}
.credits-valid{list-style:none;padding:0;margin:4px 0 12px;color:var(--muted,#6b7785)}
.credits-valid li{margin:2px 0}
.blocked .pack-pick{max-width:520px}
.end-row.cp-valid{display:flex;gap:8px}.end-row.cp-valid input{flex:0 0 96px;width:96px;min-width:96px}.end-row.cp-valid select{flex:1}
/* credit expiry + history (account) */
.credits-valid .exp-first{color:var(--ink,#1f3350)}
.credits-valid .exp-note{margin-top:4px}
.credit-history{margin-top:16px;font-size:.9rem}
.credit-history summary{cursor:pointer;color:var(--blue,#2b7bb9);font-weight:600}
.ledger-list{list-style:none;padding:0;margin:8px 0 0;max-height:320px;overflow:auto}
.ledger-list li{display:grid;grid-template-columns:7.2em 1fr auto;gap:10px;padding:6px 0;border-bottom:1px solid #e3ebf3;align-items:baseline}
.ledger-list .lg-date{color:#7a8797;white-space:nowrap;font-size:.85em}
.ledger-list .lg-delta{font-weight:700;white-space:nowrap}
.ledger-list .lg-delta.pos{color:#2e7d4f}
.ledger-list .lg-delta.neg{color:#7a8797}
.ledger-list li.exp .lg-what{color:#b04a3a;font-weight:600}
.ledger-list li.exp .lg-delta{color:#b04a3a}
.ledger-list .lg-note{display:block;color:#7a8797;font-size:.85em}
/* admin: student credits panel */
.cl-lots{margin:6px 0 10px;padding-left:18px}
.cl-add{display:grid;grid-template-columns:110px 1fr 1.4fr auto;gap:10px;align-items:end;margin:10px 0}
@media (max-width:720px){.cl-add{grid-template-columns:1fr 1fr}}
.bal-link{background:none;border:0;padding:0;cursor:pointer}
/* monthly-first standard packs (English, 22 Oct 2026) */
.pack-opt.monthly{padding:16px 6px 10px}
.pack-opt .pack-month{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:0 3px;font-size:21px;font-weight:800;color:var(--navy);letter-spacing:-.02em;line-height:1.1;margin-top:0}
.pack-opt .pack-month .mo{font-size:11px;font-weight:700;color:var(--blue-d);letter-spacing:0}
.pack-opt .pack-month s.was{font-size:13px;width:100%;text-align:center}
.pack-opt.monthly .pack-week{font-size:11px;font-weight:600;color:var(--navy);margin-top:4px}
.pack-opt.monthly .pack-n{font-size:11px;color:var(--navy)}
/* collapsible sections on account + admin (assets/sections.js) */
.sec-head{display:flex;align-items:center;justify-content:space-between;gap:10px 14px;flex-wrap:wrap}
.sec-head>.panel-title{margin:0;flex:1 1 auto;min-width:0;font-size:18px}
.sec-head>.sec-title-label{font-size:18px}
.sec-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;margin:-10px -12px;padding:10px 12px;box-sizing:content-box;
  background:none;border:0;font:inherit;font-weight:700;color:var(--navy);text-align:left;cursor:pointer;border-radius:8px;-webkit-tap-highlight-color:transparent}
.sec-toggle:hover{background:var(--sky)}
.sec-toggle:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.sec-label{min-width:0;overflow-wrap:anywhere}
.sec-chev{flex:none;color:var(--blue-d);transition:transform .2s ease}
.sec-toggle[aria-expanded="true"] .sec-chev{transform:rotate(180deg)}
.sec-body{padding-top:18px}
.sec-body[hidden]{display:none}
.panel.sec-closed{padding-top:20px;padding-bottom:20px}
.dash-grid{align-items:start}
@media(max-width:600px){.panel.sec{padding-left:18px;padding-right:18px}.panel.sec-closed{padding-top:16px;padding-bottom:16px}.sec-head>.panel-title{font-size:17px}}
@media(prefers-reduced-motion:reduce){.sec-chev{transition:none}}

/* weekly booking (book page) + book for student (admin) */
.confirm.has-series{flex-direction:column;align-items:stretch}
.repeat-pick{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.repeat-pick label{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:#fff;padding:8px 12px;font-size:14px;cursor:pointer}
.repeat-pick label.active{border-color:var(--blue);box-shadow:inset 0 0 0 1px var(--blue)}
.series-plan{margin-top:12px}
.series-sum{font-size:14px;color:var(--navy);margin-bottom:8px}
.series-warn{background:#fff6e0;border:1px solid #f0d48a;color:#7a5200;padding:10px 14px;font-size:14px;margin:8px 0}
.series-warn strong{color:#5c3d00}
.series-list{list-style:none;margin:0;padding:0;border:1px solid var(--line);background:#fff;max-height:340px;overflow:auto}
.series-list li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 12px;border-top:1px solid var(--line);font-size:14px}
.series-list li:first-child{border-top:0}
.series-list .st{font-size:12px;font-weight:600;white-space:nowrap}
.series-list .st.ok{color:#2e7d4f}.series-list .st.no{color:#b04a4a}.series-list .st.wait{color:#7b8794}
.series-list li.no{background:#fbf5f5}
.series-cancel{margin-top:4px}
.ab-form{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:10px;align-items:end}
.ab-form label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:#7b8794}
.ab-form select,.ab-form input{font:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--line);background:#fff;min-width:0}
.ab-info{font-size:14px;margin-top:10px}
.ab-warn{margin-top:10px}
.ab-warn .btn{margin-top:8px}
@media (max-width:700px){.ab-form{grid-template-columns:1fr 1fr}.ab-form label.stu,.ab-form .ab-go{grid-column:1/-1}
 .series-list li{flex-direction:column;align-items:flex-start;gap:2px}}
/* admin: cancel a lesson (27 Oct 2026) */
.lessons-table .cx-cell{text-align:right;white-space:nowrap}
.lessons-table .cx-cell .small{font-size:12px}
.cx-row td{padding-top:0}
.cx-box{text-align:left;margin:0;white-space:normal}
.cx-box p{margin:0 0 8px}
.cx-box .cx-list{margin:0 0 8px;padding-left:18px}
.cx-box .cx-exp{background:#fff;border-left:3px solid #b04a4a;padding:6px 10px;color:#5c3d00}
.cx-box .cx-opt{display:flex;gap:8px;align-items:center;margin:0 0 8px;font-weight:600}
.cx-box .cx-actions{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
@media (max-width:560px){.lessons-table .cx-cell{white-space:normal}}
/* admin: import past lessons */
.im-form{display:grid;gap:12px;max-width:820px}
.im-form textarea{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.5}
.im-stu select{max-width:420px}
.im-help{background:var(--sky);border-radius:10px;padding:10px 14px}
.im-help summary{cursor:pointer;font-weight:600;font-size:14px}
.im-help ul{margin:8px 0 8px 18px;padding:0}
.im-help li{margin:3px 0}
.im-help code{background:#fff;border-radius:4px;padding:1px 5px;font-size:12.5px}
.im-example{background:#fff;border:1px solid var(--line,#e6e1d8);border-radius:8px;padding:10px 12px;font-size:12.5px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0}
.im-file input{display:block;margin-top:6px;font-size:13px}
.im-preview,.im-result{margin-top:16px;border-top:1px solid var(--line,#e6e1d8);padding-top:14px}
.im-preview h3,.im-recent h3{font-size:16px;margin:0 0 8px}
.im-sum{margin:0 0 10px}
.im-table td{vertical-align:top}
.im-when{white-space:nowrap}
.im-tag{display:inline-block;font-size:12px;font-weight:600;border-radius:999px;padding:2px 9px}
.im-tag.ok{background:#e3f4e8;color:#1f6b3a}.im-tag.dup{background:#eef0f4;color:#4a5568}.im-tag.err{background:#fde8e6;color:#a1302a}
.im-msg{font-size:13px;color:#a1302a;margin-top:3px}.im-msg.warn{color:#8a5a00}
tr.im-duplicate td{color:#6b7a89}
.im-detail{margin:6px 0 0 16px;padding:0;font-size:13px}
.im-detail li{margin:2px 0}
.im-recent{margin-top:18px}
.im-list{list-style:none;margin:0;padding:0;font-size:14px}
.im-list li{padding:6px 0;border-bottom:1px solid var(--line,#e6e1d8)}
@media (max-width:600px){.im-table thead{display:none}.im-table,.im-table tbody,.im-table tr{display:block;width:100%}.im-table tr{border-bottom:1px solid var(--line);padding:10px 0}.im-table td,.im-table td:nth-child(2){display:block;border:0;padding:2px 0}.im-when{white-space:normal;font-weight:600}}
/* PayPal checkout buttons (PayPal + card), shown instead of "Pay now" when PAYMENT_PROVIDER=paypal */
.pp-checkout{margin-top:6px}
.pp-checkout[hidden]{display:none}
.pp-buttons{min-height:45px;position:relative;z-index:0}
.pp-buttons .pp-status{margin:10px 0;text-align:center}
.pp-via{margin:8px 0 0;text-align:center}

/* Bank transfer checkout (PAYMENT_PROVIDER=bank) */
.bank-checkout{margin-top:6px}
.bank-checkout[hidden]{display:none}
.bank-via{margin:8px 0 0;text-align:center}
.bank-result{margin-top:14px;padding:14px 16px;border:1px solid var(--line,#e5e2da);border-radius:10px;background:var(--panel,#fff)}
.bank-title{margin:0 0 10px;font-size:1.05rem}
.bank-dl{margin:0;display:grid;gap:8px}
.bank-row{display:grid;grid-template-columns:minmax(7rem,auto) 1fr auto;gap:6px 10px;align-items:center}
.bank-row dt{margin:0;color:var(--muted,#6b6560);font-size:.85rem}
.bank-row dd{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.95rem;word-break:break-all}
.bank-copy{justify-self:end}
.bank-pending{margin-top:16px}
.bank-pending-item{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;padding:10px 0;border-top:1px solid var(--line,#e5e2da)}
.bank-admin-details{margin:0 0 10px}
.bank-admin-details code{font-size:.9em}


/* Bank + Stripe choice (PAYMENT_PROVIDER=both) */
.pay-both .pay-choice{display:grid;gap:6px}
.pay-both .pay-or{display:flex;align-items:center;gap:10px;margin:4px 0;text-align:center}
.pay-both .pay-or::before,.pay-both .pay-or::after{content:"";flex:1;height:1px;background:var(--line,#e5e2da)}
.pay-both .pay-or span{text-transform:lowercase}
.pay-both .pay-stripe-via{margin:0 0 4px;text-align:center}

/* Admin page tabs (tidy sections; After lesson first) */
.admin-tabs{display:flex;flex-wrap:nowrap;gap:0;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin;border-bottom:1px solid var(--line);margin:8px 0 20px;padding:0}
.admin-tabs::-webkit-scrollbar{height:4px}
.admin-tab{flex:0 0 auto;background:none;border:0;border-bottom:2px solid transparent;padding:12px 16px;font:inherit;font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#7b8794;cursor:pointer;margin-bottom:-1px;white-space:nowrap;scroll-snap-align:start}
.admin-tab:hover{color:var(--navy)}
.admin-tab.active,.admin-tab[aria-selected="true"]{color:var(--navy);border-color:var(--blue)}
.admin-tab:focus-visible{outline:2px solid #bfe0f6;outline-offset:2px;border-radius:4px}
.admin-tabpanel{min-width:0}
.admin-tabpanel[hidden]{display:none!important}
.admin-tabpanel > .panel{margin-top:0}
.admin-tabpanel > .panel + .panel{margin-top:18px}
@media (max-width:560px){
  .admin-tab{padding:12px 12px;font-size:12px;letter-spacing:.04em}
  .admin-tabs{margin-left:-4px;margin-right:-4px;padding:0 4px;scroll-snap-type:x proximity}
}
