:root{--ink: #17241e;--ink-soft: #4d5b54;--paper: #f4efe6;--card: #fffdf8;--line: #e3dacb;--pine: #16382b;--pine-2: #1f4d3a;--clay: #c4622d;--clay-deep: #8d3e14;--good: #1f7a45;--warn: #9a6412;--bad: #9d2c2c;--sidebar: #122119;--shadow: 0 18px 50px rgba(22, 36, 28, .08);--sans: "Source Sans 3", "Segoe UI", sans-serif;--serif: "Fraunces", Georgia, serif}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{font-family:var(--sans);color:var(--ink);background:var(--paper)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit}.loading,.empty{padding:48px 20px;text-align:center;color:var(--ink-soft)}.auth{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr}.auth-brand{background:radial-gradient(900px 420px at 10% 0%,rgba(196,98,45,.28),transparent 55%),linear-gradient(165deg,#1c4636,#101c16 70%);color:#f6f1e7;padding:48px 56px;display:flex;flex-direction:column;justify-content:space-between;gap:32px}.brand-lockup{display:flex;gap:14px;align-items:center}.mark{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:#f4efe6;color:var(--pine);flex:none}.mark svg{width:28px;height:28px}.brand-lockup strong{display:block;font-family:var(--serif);font-size:22px;font-weight:560}.brand-lockup span{color:#f6f1e7b8;font-size:14px}.auth-brand h1{font-family:var(--serif);font-weight:560;font-size:clamp(40px,4vw,64px);line-height:1.02;margin:0 0 16px;letter-spacing:-.03em}.auth-brand p.lead{max-width:440px;font-size:18px;line-height:1.45;color:#f6f1e7d1;margin:0}.points{display:grid;gap:10px;margin-top:28px;padding:0;list-style:none}.points li{display:flex;gap:10px;align-items:baseline;color:#f6f1e7e0}.points i{color:#f0b089;font-style:normal}.auth-panel{display:grid;place-items:center;padding:32px 20px}.panel{width:min(420px,100%);background:var(--card);border:1px solid var(--line);border-radius:22px;padding:28px;box-shadow:var(--shadow)}.panel h2{font-family:var(--serif);font-weight:560;margin:0 0 6px;font-size:32px}.sub{color:var(--ink-soft);margin:0 0 18px}.field{display:grid;gap:6px;margin-bottom:12px}.field span{font-size:13px;font-weight:600;letter-spacing:.02em}input,select,textarea{width:100%;border:1px solid var(--line);background:#fff;border-radius:12px;padding:11px 12px;outline:none}textarea{min-height:110px;resize:vertical}input:focus,select:focus,textarea:focus{border-color:#b9784d;box-shadow:0 0 0 3px #c4622d26}.btn{border:0;border-radius:12px;padding:11px 14px;font-weight:650;background:var(--ink);color:#fff}.btn.primary{background:var(--clay)}.btn.primary:hover{background:var(--clay-deep)}.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}.btn.danger{background:var(--bad)}.btn.small{padding:7px 10px;border-radius:10px;font-size:14px}.btn.full{width:100%}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.banner{background:#fde8e4;color:#7a241c;border-radius:12px;padding:10px 12px;margin-bottom:12px}.banner.ok{background:#e5f5ea;color:#145c32}.demo{margin-top:16px;border-top:1px solid var(--line);padding-top:12px;display:grid;gap:8px}.demo button{text-align:left;background:#f7f3eb;border:1px solid var(--line);border-radius:12px;padding:8px 10px}.demo small{display:block;color:var(--ink-soft)}.app{min-height:100vh;display:grid;grid-template-columns:248px 1fr}.side{background:var(--sidebar);color:#f4efe6;padding:22px 14px;display:flex;flex-direction:column;gap:18px}.side .brand-lockup strong{font-size:20px}.side .brand-lockup span,.side em{color:#f4efe6ad;font-style:normal;font-size:13px}.side nav{display:grid;gap:4px}.side a,.side button.linkish{color:#f4efe6db;text-decoration:none;border-radius:10px;padding:9px 10px;display:flex;justify-content:space-between;align-items:center;background:transparent;border:0;text-align:left}.side a.active,.side a:hover{background:#ffffff14;color:#fff}.badge{background:var(--clay);color:#fff;border-radius:999px;min-width:20px;text-align:center;font-size:12px;padding:1px 6px}.side-foot{margin-top:auto;display:grid;gap:8px}.plan{display:inline-flex;width:fit-content;border:1px solid rgba(244,239,230,.25);border-radius:999px;padding:3px 8px;font-size:12px;letter-spacing:.04em;text-transform:uppercase}.main{min-width:0}.top{display:flex;justify-content:space-between;gap:16px;align-items:end;padding:28px 32px 8px}.kicker{margin:0;color:var(--clay-deep);font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-size:12px}.top h1{font-family:var(--serif);font-weight:560;font-size:36px;margin:4px 0 0;letter-spacing:-.03em}.who{color:var(--ink-soft);text-align:right}.who strong{display:block;color:var(--ink)}.content{padding:12px 32px 48px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}.stat,.card,.class-card,.approval,.poster,.thread-list,.thread-view{background:var(--card);border:1px solid var(--line);border-radius:18px}.stat{padding:16px 18px}.stat b{display:block;font-family:var(--serif);font-size:36px;font-weight:560}.stat span{color:var(--ink-soft)}.class-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.class-card{padding:16px 18px}.class-card header{display:flex;justify-content:space-between;align-items:baseline}.class-card h3{margin:0;font-family:var(--serif);font-size:28px;font-weight:560}.bar{height:8px;background:#efe7da;border-radius:99px;overflow:hidden;margin:12px 0}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--pine-2),#3e8f62)}.muted{color:var(--ink-soft)}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:16px;background:var(--card)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}.drop{border:1.5px dashed #c9bba6;border-radius:18px;padding:28px;background:#fffdf8b3;text-align:center;margin-bottom:14px}.drop strong{display:block;font-size:18px;margin-bottom:4px}.drop.hot{border-color:var(--clay);background:#fff6ef}.pill{border-radius:99px;padding:2px 8px;font-size:12px;font-weight:700}.pill.high{background:#e5f5ea;color:var(--good)}.pill.mid{background:#fff1d6;color:var(--warn)}.pill.low{background:#fde8e4;color:var(--bad)}.split{display:grid;grid-template-columns:1.1fr .9fr;gap:14px}.poster{max-width:720px;margin:0 auto;overflow:hidden}.poster-head{background:var(--pine);color:#f6f1e7;padding:28px 28px 22px}.poster-head h2{font-family:var(--serif);font-size:40px;margin:8px 0 0;font-weight:560}.poster-body{padding:24px 28px 32px;display:grid;grid-template-columns:240px 1fr;gap:20px;align-items:center}.poster-body img{width:100%;background:#fff;border-radius:12px}.code-xl{font-family:var(--serif);font-size:42px;letter-spacing:.12em;margin:0}.steps{margin:8px 0 0;padding-left:18px}.steps li{margin:6px 0}.layout-2{display:grid;grid-template-columns:320px 1fr;gap:12px;min-height:480px}.thread-list,.thread-view{padding:8px}.thread-list button.item,a.item{width:100%;text-align:left;background:transparent;border:0;border-radius:12px;padding:10px;display:block;text-decoration:none}.thread-list button.item.active,.thread-list button.item:hover{background:#f6f1e7}.bubbles{display:grid;gap:8px;padding:8px}.bubble{max-width:80%;background:#f6f1e7;border-radius:14px 14px 14px 4px;padding:8px 10px}.bubble.mine{margin-left:auto;background:#e7f2ea;border-radius:14px 14px 4px}.bubble small{display:block;color:var(--ink-soft)}.composer{display:flex;gap:8px;padding:8px}.composer input{flex:1}.checks{display:grid;gap:6px}.checks label{display:flex;gap:8px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px 10px}.approval{padding:14px;display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:8px}.stack{display:grid;gap:12px}.warn-line{color:var(--bad);font-size:13px}@media(max-width:980px){.auth,.app,.split,.class-grid,.stats,.poster-body,.layout-2{grid-template-columns:1fr}.auth-brand{padding:28px 22px}.auth-brand h1{font-size:40px}.top,.content{padding-left:16px;padding-right:16px}.side{padding:14px}.app{display:block}.side nav{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.side-foot{margin-top:8px}}@page{size:A4 portrait;margin:8mm}@media print{html,body{background:#fff!important;margin:0;padding:0}.side,.top,.no-print,.side-foot,.who,.kicker{display:none!important}.app,.main,.content{display:block!important;padding:0!important;margin:0!important;background:#fff!important;width:100%!important;max-width:none!important}.poster{border:0;box-shadow:none}.qr-cards{display:grid!important;grid-template-columns:repeat(2,1fr)!important;grid-auto-rows:68mm;gap:0!important;width:100%}.qr-card{width:100%;height:68mm;max-height:68mm;box-sizing:border-box;border:1px dashed #8a9a90!important;border-radius:0!important;background:#fff!important;box-shadow:none!important;padding:2.5mm 4mm 2mm!important;page-break-inside:avoid!important;break-inside:avoid!important;overflow:hidden;gap:.6mm!important;justify-content:flex-start}.qr-card-brand{gap:1.5mm!important}.qr-card-brand .mark{width:6mm;height:6mm;border-radius:1.2mm}.qr-card-brand .mark svg{width:3.5mm;height:3.5mm}.qr-card-brand strong{font-size:10pt;line-height:1.1}.qr-card-school{font-size:7.5pt;margin-top:0!important;line-height:1.15}.qr-card-name{font-size:10pt;margin-top:.8mm!important;line-height:1.15}.qr-card-meta{font-size:7.5pt;line-height:1.15}.qr-card img.qr{width:30mm!important;height:30mm!important;margin:.8mm 0 .4mm!important;flex:none}.qr-card-hint{font-size:7pt!important;line-height:1.2!important;max-width:80mm;color:#222!important;margin:0!important}}.fold{background:var(--card, #fff);border:1px solid var(--line, #ddd);border-radius:14px;margin-bottom:12px;overflow:hidden}.fold>summary{list-style:none;display:flex;align-items:center;gap:10px;padding:12px 14px;font-weight:700;cursor:pointer}.fold>summary::-webkit-details-marker,.row-item>summary::-webkit-details-marker{display:none}.fold>summary:before{content:"+";display:grid;place-items:center;width:26px;height:26px;border-radius:8px;background:#16382b;color:#fff;font-size:18px;flex:none}.fold[open]>summary:before{content:"−"}.list{display:grid;gap:6px}.list.flat{gap:0}.list.flat .line-item{border-radius:0;border-width:1px 0 0}.row-item,.line-item{background:var(--card, #fff);border:1px solid var(--line, #ddd);border-radius:12px}.row-item>summary,.line-item{list-style:none;display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:default;flex-wrap:wrap}.row-item>summary{cursor:pointer}.row-item>summary:before{content:"+";font-weight:800;width:18px;color:#16382b}.row-item[open]>summary:before{content:"−"}.row-body{padding:0 14px 12px 40px}.acks div{padding:3px 0;border-bottom:1px dotted #d8cdb9}.grow{flex:1;min-width:180px}.tag{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;padding:3px 7px;border-radius:6px;background:#16382b;color:#fff;flex:none}.tag.k-consent{background:#c4622d}.tag.k-exam{background:#9d2c2c}.tag.k-homework{background:#2f5d8a}.tag.k-holiday{background:#5c6b64}.tag.k-meeting{background:#6a4c93}.meter{width:70px;height:8px;border-radius:99px;background:#e9e1d3;overflow:hidden;flex:none}.meter i{display:block;height:100%;background:#1f7a45}.num{font-variant-numeric:tabular-nums;min-width:34px;text-align:right}.ok{color:#1f7a45}.no{color:#9d2c2c}.date{font-variant-numeric:tabular-nums;min-width:92px}.minus,.plus{border:1px solid #16382b;background:#fff;color:#16382b;border-radius:8px;font-weight:800;min-width:32px;height:32px;cursor:pointer}.minus[data-armed="1"]{background:#9d2c2c;color:#fff;border-color:#9d2c2c}.plus{width:100%;margin-top:6px}.inline-check{display:flex;gap:8px;align-items:center;margin:4px 0 12px}.inline-check input{width:auto}.meal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}.meal-day{background:var(--card, #fff);border:1px solid var(--line, #ddd);border-radius:12px;padding:10px}.meal-day h3{margin:0 0 8px;font-size:15px;text-transform:capitalize}.meal-item{display:flex;gap:6px;margin-bottom:6px}.meal-item input{flex:1;min-width:0}.line-item .note{width:160px}.st{font-size:12px;font-weight:800;padding:3px 9px;border-radius:99px;background:#efe6d8}.st.approved{background:#d7f0df;color:#145c32}.st.rejected{background:#f7d9d4;color:#7a241c}.plan-box{margin-top:14px;padding:12px 14px;border:1px dashed #b9ab93;border-radius:12px;background:#f8f4ec}
