/* UI refresh: parent portal, cards, chips, modals, mobile nav. Uses theme variables so dark mode works. */
:root{--surface:#fff;--soft:#f3f6fa;--ok:#16845b;--ok-bg:#e6f6ee;--warn:#b54708;--warn-bg:#fff1e0;--brand-soft:#fff0e7}
:root[data-theme="dark"]{--soft:#1b2639;--ok:#7ce0b5;--ok-bg:#17352e;--warn:#ffb36b;--warn-bg:#3b2a17;--brand-soft:#3b291f}
body{-webkit-font-smoothing:antialiased}
.btn.small{padding:7px 11px;font-size:12px;text-decoration:none;display:inline-block}
a.btn{text-decoration:none;display:inline-block;color:#fff}
a.btn.secondary{color:inherit}
.center{text-align:center}.muted{color:var(--muted)}
.welcome-actions,.card-actions,.chips,.mail-actions,.test-send{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.card-actions{margin-top:12px}
.nav-label{font:800 10px 'DM Sans',sans-serif;letter-spacing:1.4px;text-transform:uppercase;color:var(--muted);padding:14px 14px 4px}
.nav-label:first-child{padding-top:0}
nav{gap:2px}
.menu-toggle{display:none}
.head-title{display:flex;align-items:center;gap:12px}
body:not([data-role]) .menu-toggle{display:none!important}
.sidebar{overflow-y:auto}
.sidebar #logout{margin-top:6px;border:1px solid var(--line);text-align:center}
.pdf{margin-top:auto}

/* chips */
.chip{display:inline-flex;align-items:center;gap:4px;background:var(--soft);color:var(--ink);padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}
.chip.ok,.chip.s-mastered,.chip.s-present{background:var(--ok-bg);color:var(--ok)}
.chip.warn,.chip.s-absent{background:var(--warn-bg);color:var(--warn)}
.chip.s-learning,.chip.s-late{background:#e8f1fd;color:#164e8a}
:root[data-theme="dark"] .chip.s-learning,:root[data-theme="dark"] .chip.s-late{background:#172d47;color:#a9d2ff}
.chip.s-not_started,.chip.s-excused{background:var(--soft);color:var(--muted)}
.chip.type-competition{background:var(--brand-soft);color:#cf5310}
.chip.type-evaluation{background:#e8f1fd;color:#164e8a}
:root[data-theme="dark"] .chip.type-competition{color:#ffad7a}:root[data-theme="dark"] .chip.type-evaluation{background:#172d47;color:#a9d2ff}
td.actions{white-space:nowrap}td.actions .btn{margin-right:4px}

/* empty state, notices */
.empty-state{text-align:center;padding:34px 16px;color:var(--muted)}
.empty-state b{display:block;color:var(--ink);font:800 16px Manrope,sans-serif;margin:8px 0 4px}.empty-state p{margin:0;line-height:1.5}
.empty-icon{font-size:30px}
.notice{display:flex;justify-content:space-between;align-items:center;gap:16px;background:var(--brand-soft);border:1px solid #ffd4bb;border-radius:14px;padding:14px 18px;margin-bottom:20px}
:root[data-theme="dark"] .notice{border-color:#6b3d20}
.notice.warn-n{background:var(--warn-bg);border-color:transparent}
code{background:var(--soft);padding:2px 6px;border-radius:6px;font-size:12px}

/* dashboards */
.two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.card h3{margin:0 0 14px;font-size:16px}
.mini-event{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.mini-event:last-of-type{border-bottom:0}
.mini-event>div:nth-child(2){flex:1;min-width:0}.mini-event small{display:block;color:var(--muted);margin-top:2px}
.date-chip{width:48px;flex:none;text-align:center;background:var(--brand-soft);color:#cf5310;border-radius:12px;padding:6px 0;line-height:1.1}
:root[data-theme="dark"] .date-chip{color:#ffad7a}
.date-chip b{display:block;font:800 18px Manrope,sans-serif}.date-chip span{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.8px}
.date-chip.big{width:62px;padding:10px 0}.date-chip.big b{font-size:26px}
.todo{display:grid;grid-template-columns:1fr auto;gap:2px 10px;width:100%;text-align:left;background:var(--soft);border:0;border-radius:12px;padding:12px 14px;margin-bottom:8px;cursor:pointer;color:var(--ink);font:inherit}
.todo small{grid-column:1;color:var(--muted)}.todo span{grid-row:1/3;grid-column:2;align-self:center;color:var(--orange);font-weight:800}
.todo:hover{background:var(--brand-soft)}

/* events */
.event-card{display:flex;gap:18px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:18px;margin-bottom:14px}
.event-card.past{opacity:.7}
.event-card h3{margin:10px 0 4px;font:800 18px Manrope,sans-serif}.event-card p{margin:0;line-height:1.5}
.event-details{margin-top:10px!important;white-space:pre-line}
.event-main{flex:1;min-width:0}
.group-title{font:800 12px Manrope,sans-serif;text-transform:uppercase;letter-spacing:1.2px;color:var(--muted);margin:26px 0 12px}
.link-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px}
.link-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:4px}
.link-card>div:first-child{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.link-card p{margin:2px 0}.link-card .card-actions{margin-top:auto;padding-top:10px}
.url{color:var(--muted);word-break:break-all;font-size:11px}
.section-gap-sm{margin:6px 0 10px}
details>summary{cursor:pointer}

/* modal */
.modal-bg{position:fixed;inset:0;background:#17233799;display:grid;place-items:center;padding:16px;z-index:30;animation:rise-in .2s both}
.modal{width:min(560px,100%);max-height:92vh;overflow:auto}.modal.wide-modal{width:min(820px,100%)}
.modal-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.modal-head h2{margin:0;font:800 20px Manrope,sans-serif}
.icon-btn{background:var(--soft);border:0;border-radius:8px;width:32px;height:32px;cursor:pointer;color:var(--ink);font-size:14px}
.modal-actions{align-items:center}.modal-actions .muted{margin-right:auto}
.preview-frame{width:100%;height:60vh;border:1px solid var(--line);border-radius:10px;background:#fff}
.link-list .link-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.link-row small{display:block}
.lvl{margin-bottom:16px}.lvl-head{display:flex;align-items:center;gap:12px;margin-bottom:6px}.lvl-head .btn{margin-left:auto}
.skill-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid var(--line)}.skill-row select{width:150px;flex:none}

/* segmented control, forms */
.seg{display:flex;gap:4px;background:var(--soft);padding:4px;border-radius:12px;margin:18px 0 6px}
.seg button{flex:1;border:0;background:transparent;padding:9px 10px;border-radius:9px;font:700 13px 'DM Sans',sans-serif;color:var(--muted);cursor:pointer;width:auto!important}
.seg button.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 4px #1723371f}
.login a{color:var(--blue)}
.narrow{max-width:520px}
.check{display:flex!important;align-items:center;gap:8px;flex-direction:row!important;font-weight:600}.check input{width:auto}
.mail-form .attach-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:18px 0}
fieldset{border:1px solid var(--line);border-radius:12px;padding:10px 12px;min-width:0;max-height:260px;overflow:auto}
legend{font:800 12px Manrope,sans-serif;padding:0 6px;color:var(--muted);text-transform:uppercase;letter-spacing:.8px}
.pick{display:flex;gap:10px;align-items:flex-start;padding:7px 0;cursor:pointer}.pick input,.roster-person input{width:auto}
.pick span{display:grid}.pick small{color:var(--muted)}
.mail-actions{justify-content:space-between;margin-top:14px}.test-send input{width:200px}
.card.mail-form .roster-list{max-height:240px;overflow:auto}

/* parent portal */
.child{margin-bottom:22px}
.child-head{display:flex;align-items:center;gap:16px;margin-bottom:16px}.child-head h2{margin:0;font:800 22px Manrope,sans-serif}.child-head p{margin:2px 0 0}
.avatar{width:62px;height:62px;border-radius:50%;background:var(--orange);color:#fff;display:grid;place-items:center;font:800 20px Manrope,sans-serif;position:relative;overflow:hidden;flex:none}
.avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;padding:0;border:0;border-radius:0}
.levels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.level-box{background:var(--soft);border-radius:12px;padding:12px 14px;display:grid;gap:4px}.level-box small{color:var(--muted);font-weight:800;letter-spacing:1px;font-size:10px}.level-box b{font:800 16px Manrope,sans-serif}
.pips{display:flex;gap:4px;margin-top:2px}.pips i{height:6px;flex:1;border-radius:4px;background:var(--line)}.pips i.on{background:var(--orange)}
.child h4{margin:22px 0 10px;font:800 12px Manrope,sans-serif;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}
.skills-acc{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:8px}
.skills-acc>summary{font-size:14px}.skills-acc details{margin:10px 0 0 6px}.lv-sum{font-size:13px;font-weight:700}
.bar{height:8px;background:var(--line);border-radius:6px;margin:10px 0 4px;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--orange),#ffb27a);border-radius:6px}
.skill-list,.att-list{list-style:none;margin:8px 0 0;padding:0}
.skill-list li,.att-list li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--line);font-size:13px}
.skill-list a{color:var(--blue)}
.routine{white-space:pre-wrap;font:13px/1.6 'DM Sans',sans-serif;margin:10px 0 0}
.att{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.att-rate b{font:800 30px Manrope,sans-serif;color:var(--orange)}.att-rate small{display:block;color:var(--muted)}
.next-up{margin-bottom:22px}.next-up .btn{margin-top:12px}

/* mobile: collapsible menu instead of a giant button grid */
@media(max-width:850px){
 .menu-toggle{display:inline-block}
 .sidebar{position:sticky;top:0;z-index:15;padding:10px 14px;gap:0;max-height:100vh}
 .sidebar nav,.sidebar .pdf,.sidebar #logout{display:none}
 body.nav-open .sidebar nav{display:grid;grid-template-columns:1fr;margin-top:10px}
 body.nav-open .sidebar #logout:not(.hidden){display:block}
 body.nav-open .sidebar .pdf{display:block;margin-top:8px}
 header .eyebrow,header #theme-toggle{display:none}
 header{padding:12px 16px!important}
 .two-col,.mail-form .attach-grid{grid-template-columns:1fr}
 .brand small{display:none}
}
@media(max-width:600px){
 .event-card{flex-direction:column;gap:10px}.date-chip.big{width:58px}
 .levels{grid-template-columns:1fr}.mail-actions,.test-send{flex-direction:column;align-items:stretch}.test-send input{width:100%}
 .notice{flex-direction:column;align-items:stretch}.skill-row{flex-direction:column;align-items:stretch;gap:4px}.skill-row select{width:100%}
 td.actions .btn{margin-bottom:4px}.welcome-actions .btn{flex:1}
}
