:root{--bg:#151a1b;--grid:#d9d3a80d;--text:#e9edeb;--head:#f1eee4;--sub:#a2aaa7;--sand:#d9d3a8;--sage:#b5c6aa;--line:#3a4443;--line2:#2a3231;--warn:#e0a58f;--mono:"IBM Plex Mono",ui-monospace,monospace}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg) linear-gradient(var(--grid) 1px,transparent 1px) 0 0/16px 16px;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:16px 16px;color:var(--text);font:16px/1.75 "BIZ UDPGothic",system-ui,sans-serif}
[hidden]{display:none!important}
a{color:var(--sage)}
h1,h2,h3{font-family:"Zen Kaku Gothic New",sans-serif;color:var(--head);line-height:1.4;margin:0}
h1{font-size:clamp(24px,4.5vw,34px);font-weight:900}
h2{font-size:18px;margin-top:32px;padding-top:14px;border-top:1.5px solid var(--line)}
button,input,select{font:inherit;color:inherit}
button{background:transparent;border:1px solid var(--line);padding:8px 14px;cursor:pointer;border-radius:0;min-height:40px}
button:hover:not(:disabled){border-color:var(--sage)}
button:disabled{opacity:.5;cursor:default}
button.primary{background:var(--sand);color:#151a1b;border-color:var(--sand);font-weight:700}
button.link{border:0;padding:0;min-height:0;color:var(--sage);text-decoration:underline;font-size:13px}
button.danger{color:var(--warn)}
:focus-visible{outline:2px solid var(--sand);outline-offset:2px}
input[type=text],select{background:#0f1314;border:1px solid var(--line);padding:8px 10px;min-height:40px;border-radius:0;max-width:100%}
.top{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;border-bottom:1.5px solid var(--line)}
.brand{font-family:Manrope,sans-serif;font-weight:800;font-size:18px;color:var(--head);text-decoration:none}
.tag{font:500 12px var(--mono);padding:1px 6px;border:1px solid var(--sub);color:var(--sub);vertical-align:middle;white-space:nowrap}
.tag.dotted{border-style:dotted}
.tag.star{border-color:var(--sand);color:var(--sand)}
.account{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--sub);min-width:0}
#account-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:44vw}
.wrap{max-width:1080px;margin:0 auto;padding:24px 16px 48px}
.lead{color:var(--text);max-width:40em}
.login-box{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:20px 0 8px}
.status-line{flex-basis:100%;margin:0;color:var(--sub);font-size:14px;min-height:1.75em}
.plain{padding-left:1.2em;margin:10px 0;max-width:44em}
.plain li{margin:4px 0}
.banner{border:1px dotted var(--sand);color:var(--sand);padding:8px 12px;margin:0 0 16px;font-size:14px}
.banner.error{border-color:var(--warn);color:var(--warn);border-style:solid}
.layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:28px;align-items:start}
#students h2,#karte h2{margin-top:0;border-top:0;padding-top:0}
.student-list{list-style:none;margin:10px 0;padding:0;border-top:1px solid var(--line2)}
.student-list li{border-bottom:1px solid var(--line2)}
.student-list button{display:flex;justify-content:space-between;gap:8px;width:100%;border:0;text-align:left;padding:10px 6px}
.student-list button[aria-current=true]{background:#d9d3a814;box-shadow:inset 3px 0 var(--sand)}
.student-list .count{font:12px var(--mono);color:var(--sub);white-space:nowrap;align-self:center}
.add-form{display:flex;gap:6px}
.add-form input{flex:1;min-width:0}
.muted{color:var(--sub);font-size:14px}
.karte-head{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}
.karte-head h2{font-size:24px;margin-right:auto;overflow-wrap:anywhere}
.inline-form{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:8px 0}
.summary{display:flex;flex-wrap:wrap;gap:4px 18px;margin:12px 0 4px;font:13px var(--mono);color:var(--sub)}
.summary b{color:var(--head);font-weight:500}
.bar{height:6px;background:var(--line2);position:relative;overflow:hidden}
.bar i{position:absolute;inset:0 auto 0 0;background:var(--sage)}
.tabs{display:flex;gap:0;margin:20px 0 14px;border-bottom:1.5px solid var(--line)}
.tabs button{border:0;border-bottom:3px solid transparent;margin-bottom:-1.5px;padding:8px 16px}
.tabs button[aria-selected=true]{border-bottom-color:var(--sand);color:var(--head);font-weight:700}
.filters{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;font-size:14px;margin-bottom:6px}
.filters label{display:flex;align-items:center;gap:6px}
.note{font-size:13px;color:var(--sub);margin:6px 0}
details.cat{border-top:1px solid var(--line)}
details.cat:last-of-type{border-bottom:1px solid var(--line)}
details.cat>summary{cursor:pointer;padding:12px 4px;display:grid;grid-template-columns:auto 1fr auto;gap:4px 10px;align-items:center;list-style:none}
details.cat>summary::-webkit-details-marker{display:none}
details.cat>summary .num{font:13px var(--mono);color:var(--sub)}
details.cat>summary .name{font-family:"Zen Kaku Gothic New",sans-serif;font-weight:700;color:var(--head)}
details.cat>summary .prog{font:13px var(--mono);color:var(--sub);white-space:nowrap}
details.cat>summary .bar{grid-column:1/-1}
.items{list-style:none;margin:0;padding:0 0 8px}
.item{padding:12px 4px;border-top:1px solid var(--line2)}
.item-head{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:baseline}
.item-head .text{flex:1 1 14em}
.method{font-size:13px;color:var(--sub);margin:2px 0 8px}
.status{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));max-width:520px}
.status button{padding:6px 2px;font-size:13px;margin-left:-1px;min-height:38px;color:var(--sub)}
.status button:first-child{margin-left:0}
.status button[aria-pressed=true]{color:#151a1b;font-weight:700;position:relative;border-color:var(--head);background:var(--head)}
.status button[data-status=cannot][aria-pressed=true]{background:var(--warn);border-color:var(--warn)}
.status button[data-status=practicing][aria-pressed=true]{background:var(--sand);border-color:var(--sand)}
.status button[data-status=can][aria-pressed=true],.status button[data-status=mastered][aria-pressed=true]{background:var(--sage);border-color:var(--sage)}
.status button[data-status=unchecked][aria-pressed=true]{background:transparent;color:var(--head)}
.item-meta{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:13px;color:var(--sub);margin-top:6px}
.item-meta .date{color:var(--sage);font-family:var(--mono)}
.log{list-style:none;margin:6px 0 0;padding:0;font-size:14px}
.log li{display:flex;flex-wrap:wrap;gap:2px 10px;padding:6px 0;border-top:1px dotted var(--line2);align-items:baseline}
.log time{font:13px var(--mono);color:var(--sub);white-space:nowrap}
.log .what{flex:1 1 14em}
.log .change{white-space:nowrap}
.log .change b{color:var(--head)}
.day{font:500 13px var(--mono);color:var(--sand);margin:18px 0 2px}
.foot{display:flex;flex-wrap:wrap;gap:6px 18px;padding:16px;border-top:1px solid var(--line);font-size:13px}
@media(max-width:760px){.layout{grid-template-columns:1fr;gap:20px}.status button{font-size:12px}}
button.demo{min-height:30px;padding:2px 10px;font-size:13px;margin-left:8px;color:var(--sage);border-color:var(--sage)}
button.demo[aria-pressed=true]{background:var(--sage);color:#151a1b}
