*{box-sizing:border-box}body{margin:0;font:18px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:#f4f1ea;color:#222;padding-bottom:40px}
button{font:inherit;cursor:pointer}
.demo{position:fixed;top:6px;right:6px;background:#333;color:#fff;font-size:12px;padding:3px 9px;border-radius:20px;z-index:20;opacity:.85}
header{background:#2f5d3a;color:#fff;padding:18px 12px 0}.top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding-top:8px}
h1{margin:0;font-size:28px;flex:1}.wk{font-size:18px}.wk select{font-size:20px;padding:6px 10px;border-radius:10px;margin-left:6px}
.sub{margin:4px 0 12px;opacity:.9;font-size:16px}
nav{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}nav button{flex:1 0 auto;font-size:17px;padding:12px 14px;border:0;border-radius:12px 12px 0 0;background:#4b7a55;color:#fff;white-space:nowrap}
nav button.on{background:#f4f1ea;color:#2f5d3a;font-weight:700}
.daytabs{display:flex;gap:6px;overflow-x:auto;margin:14px 0 4px}.daytabs button{flex:1 0 auto;padding:12px 14px;border-radius:12px;border:2px solid #2f5d3a;background:#fff;color:#2f5d3a;font-size:17px}
.daytabs button.on{background:#2f5d3a;color:#fff;font-weight:700}.daytabs .dot{color:#c62828}
main,.actions{max-width:1150px;margin:0 auto;padding:0 12px}
.grid{display:grid;gap:14px;grid-template-columns:1fr;margin-top:12px}@media(min-width:760px){.grid{grid-template-columns:repeat(3,1fr)}}
.card{background:#fff;border-radius:16px;padding:16px;box-shadow:0 2px 8px #0001;margin-top:14px}.grid .card{margin:0}
h2{margin:0 0 10px;font-size:22px}h3{margin:14px 0 6px;font-size:19px}
.tag{display:inline-block;font-size:14px;font-weight:700;padding:3px 11px;border-radius:20px;margin:0 6px 8px 0}
.Kött{background:#fde2d6}.Fisk{background:#d9e8f7}.Vegetariskt{background:#dcefd6}.pop{background:#ffd54f}.fast{background:#e0e0e0}
.dish{font-size:21px;font-weight:600;margin:4px 0 8px;cursor:pointer}.dish small{display:block;font-size:14px;color:#2f5d3a;font-weight:400;margin-top:3px}
.opts{display:grid;gap:8px;margin:10px 0}.opt{text-align:left;font-size:17px;padding:13px;border:2px solid #ddd;border-radius:12px;background:#fafafa}
.opt.on{border-color:#2f5d3a;background:#e8f2ea;font-weight:600}.opt b{color:#2f5d3a}
.lbl{font-size:14px;color:#666;margin:10px 0 4px;text-transform:uppercase;letter-spacing:.03em}.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{font-size:16px;padding:10px 15px;border-radius:30px;border:2px solid #ccc;background:#fff}.chip.on{background:#2f5d3a;color:#fff;border-color:#2f5d3a}
input[type=text],textarea{width:100%;font-size:18px;padding:12px;border:2px solid #ccc;border-radius:12px;font-family:inherit}
.warn{background:#c62828;color:#fff;font-weight:700;padding:13px;border-radius:12px;margin-top:10px}
.note{background:#ffe9b0;color:#6a4b00;padding:11px;border-radius:12px;margin-top:10px}
.info{font-size:14px;color:#555;margin-top:8px}
.map{display:grid;gap:8px;grid-template-columns:1fr}@media(min-width:760px){.map{grid-template-columns:repeat(4,1fr)}}
.map div{border-radius:12px;padding:10px;font-size:16px}.map b{display:block;font-size:13px;text-transform:uppercase;color:#444}
.c0{background:#e2efda}.c1{background:#fff7d1}.c2{background:#ddebf7}.c3{background:#fce4d6}
.blk{display:flex;gap:10px;align-items:flex-start;border-radius:12px;padding:10px;margin:6px 0}.blk pre{flex:1;margin:0;white-space:pre-wrap;font:inherit}
.cp{padding:10px 14px;border-radius:10px;border:2px solid #2f5d3a;background:#fff;color:#2f5d3a;font-weight:700;font-size:15px}
.tblw{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:15px}td,th{border-bottom:1px solid #e3e3e3;padding:8px 6px;text-align:left;vertical-align:top}th{background:#f3f3f3;position:sticky;top:0}
td.n{text-align:right;white-space:nowrap}tr.hus td{background:#fff3c4}tr.hus td:first-child{border-left:4px solid #f0a500}.done td{opacity:.45;text-decoration:line-through}
td input[type=checkbox]{width:26px;height:26px}
.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px}.big{flex:1;min-width:200px;font-size:20px;padding:18px;border-radius:16px;border:0;font-weight:700}
.sec{background:#fff;border:3px solid #2f5d3a!important;color:#2f5d3a}.lock{background:#2f5d3a;color:#fff}
.lockbar{background:#37474f;color:#fff;text-align:center;padding:10px;font-weight:600}.lockbar button{margin-left:10px;padding:6px 12px;border-radius:8px;border:0}
body.locked .edit{pointer-events:none;opacity:.6}body.locked #lock{display:none}
.modal{position:fixed;inset:0;background:#0008;display:flex;align-items:center;justify-content:center;z-index:30;padding:10px}.modal[hidden]{display:none}
.sheet{background:#fff;border-radius:14px;padding:22px;max-width:480px}.row{display:flex;gap:10px;flex-wrap:wrap}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#2f5d3a;color:#fff;padding:12px 22px;border-radius:30px;z-index:40}
.a4{background:#fff;aspect-ratio:297/210;padding:18px;box-shadow:0 2px 10px #0003;margin-top:14px;overflow:auto}
.kb{display:grid;grid-template-columns:90px repeat(4,1fr);border:2px solid #333;height:calc(100% - 40px);grid-auto-rows:auto}
.kb div{border:1px solid #333;padding:7px;font-size:14px}.kb .h{font-weight:700;background:#eee}.kb .d{font-weight:700}
.kb .x{display:block;font-size:12px;font-style:italic;margin-top:4px}
@media(max-width:600px){.kb{grid-template-columns:52px repeat(4,1fr)}.kb div{font-size:10px;padding:3px}.a4{aspect-ratio:auto}h1{font-size:24px}}
.seg{display:flex;gap:0;border:2px solid #2f5d3a;border-radius:12px;overflow:hidden;margin-top:6px}.seg button{flex:1;padding:10px 4px;border:0;background:#fff;color:#2f5d3a;font-size:15px}.seg button.on{background:#2f5d3a;color:#fff;font-weight:700}
@media print{@page{size:A4 landscape;margin:8mm}body{background:#fff;padding:0}.noprint,.daytabs,.card:not(.printme){display:none!important}main{max-width:none;padding:0}
.a4{box-shadow:none;margin:0;padding:0;aspect-ratio:auto;height:190mm;overflow:visible}.kb div{font-size:12pt}.kb{height:180mm}}
@media(max-width:600px){.tblw th:nth-child(2),.tblw td:nth-child(2),.tblw th:nth-child(6),.tblw td:nth-child(6){display:none}.tblw td .info{display:none}table{font-size:14px}td,th{padding:7px 4px}}
.signs{display:grid;gap:18px;grid-template-columns:1fr;margin-top:14px}@media(min-width:900px){.signs{grid-template-columns:1fr 1fr}}
.signwrap{display:flex;flex-direction:column;gap:8px}
.sign{background:#fff;aspect-ratio:210/297;box-shadow:0 2px 10px #0003;padding:6% 7%;display:flex;flex-direction:column;align-items:center;position:relative;font-family:'Open Sans',system-ui,sans-serif;color:#222;container-type:inline-size}
.stitle{font-family:'Allura','Brush Script MT','Segoe Script',cursive;font-size:15cqw;line-height:1.05;margin-top:4%;text-align:center;color:#222}
.slabel{background:#e9a54a;color:#fff;font-size:3.4cqw;padding:.4% 4%;margin-top:-1%;align-self:center;transform:translateX(18%)}
.sdish{flex:1;display:flex;align-items:center;justify-content:center;text-align:center;font-size:5.6cqw;font-weight:300;line-height:1.3;padding:0 4%}
.seko{font-style:italic;font-size:2.1cqw;text-align:center;max-width:80%}
.sco2{font-size:3cqw;margin:4% 0 6%;align-self:flex-start;margin-left:20%}
.sall{display:grid;grid-template-columns:repeat(4,1fr);gap:2%;width:100%;margin-bottom:8%}.sall>div{display:flex;flex-direction:column;gap:6px}
.alg{background:none;border:0;border-radius:8px;text-align:left;padding:4px;font-size:2.5cqw;line-height:1.2;color:#333;min-height:44px}
.alg small{font-size:2.2cqw}.alg.on{background:#eef6ee}.alg b{font-size:3.2cqw}
.scorner{position:absolute;right:5%;bottom:3%;width:12%;aspect-ratio:1}
@media print{@page skylt{size:A4 portrait;margin:0}body.ps{background:#fff}body.ps main>*:not(.signs){display:none!important}body.ps .signs{display:block;margin:0}
body.ps .signwrap{display:block}body.ps .sign:not(.psel){display:none}
body.ps .sign{page:skylt;width:210mm;height:296mm;overflow:hidden;aspect-ratio:auto;box-shadow:none;break-after:page;page-break-after:always;margin:0}body.ps .sign.plast{break-after:auto;page-break-after:auto}
body.ps .alg.on{background:none}}
body.ps .signwrap.pno{display:none!important}
.status{margin:-6px 0 10px;font-size:15px;opacity:.95}.status .off{background:#ffb74d;color:#3e2700;padding:3px 8px;border-radius:8px;font-weight:600}.bad{color:#ffcdd2;font-weight:700}#fbmsg.bad{color:#c62828}
.lnk{background:none;border:0;color:#fff;text-decoration:underline;font-size:15px;padding:4px}
body.viewonly .edit{pointer-events:none;opacity:.6}body.viewonly #lock,body.viewonly #reset,body.viewonly #unlock{display:none}
.fbbtn{position:fixed;left:10px;bottom:10px;z-index:15;background:#fff;border:2px solid #2f5d3a;color:#2f5d3a;border-radius:30px;padding:10px 16px;font-weight:700;box-shadow:0 2px 8px #0003;font-size:15px}
.sel{font-size:18px;padding:10px;border-radius:10px;width:100%}.sheet .lbl{display:block}
.fbi{border-top:1px solid #eee;padding:10px 0}.fbi.done{opacity:.55}.fbt{white-space:pre-wrap;margin:6px 0}
body{padding-bottom:80px}
.calhdr{display:flex;flex-wrap:wrap;gap:6px 18px;margin:-4px 0 8px;font-size:17px}.calhdr b{color:#fff}
.calset{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin:10px 0}.calset label{display:flex;flex-direction:column;font-size:14px;color:#555;gap:4px}
.calset input{font-size:18px;padding:10px;border:2px solid #ccc;border-radius:10px;min-width:90px}.calset input[type=text]{min-width:220px}
.big2{font-size:24px;font-weight:700;margin:4px 0 8px;color:#2f5d3a}
.pill{display:inline-block;font-size:13px;font-weight:700;padding:2px 9px;border-radius:20px;background:#2f5d3a;color:#fff}
.pill.semester,.pill.jul{background:#78909c}.pill.tema{background:#8e24aa}.pill.prop{background:#ffb300;color:#3e2700}.pill.ok{background:#43a047}
tr.cur td{background:#e8f2ea}tr.closed td{color:#666}.acts{white-space:nowrap}.acts .chip{font-size:14px;padding:7px 10px;margin:2px}
.julrow{border-top:1px solid #eee;padding:10px 0}
.kbp{grid-column:2 / span 4;font-weight:700;background:#f3e5f5}
@media print{body.ps{padding:0!important;margin:0}}
.xhead{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.xadd{flex:0 0 auto;min-width:0;padding:14px 22px}.xrow{display:flex;justify-content:space-between;align-items:center;gap:10px;border-top:1px solid #eee;padding:10px 0}.mx{display:flex;gap:8px;align-items:center;margin-bottom:10px;font-size:17px}.mx input{width:24px;height:24px}
@media print{body{padding:0!important}}
@media(max-width:600px){header{padding-top:28px}}
.salbtn{margin-top:8px}.salsheet{max-width:640px;width:100%;max-height:92vh;overflow:auto}.sall2 .xrow{padding:4px 0}.sall2 .opt{font-size:16px;padding:10px}.opt.ub{font-size:16px;margin-left:12px}
.chip.ic{min-width:44px;padding:10px 0;text-align:center}
.opt.hl{border-color:#f0a500;background:#fff6dd}.hltag{display:inline-block;font-size:12px;background:#f0a500;color:#fff;border-radius:10px;padding:1px 8px;margin-left:6px}.sqnote{margin-top:12px}.lnk2{background:none;border:0;text-decoration:underline;color:#6a4b00;font-size:15px;padding:4px 6px}
.spsheet{max-width:640px;width:100%;max-height:92vh;overflow:auto}.spi{border-top:1px solid #eee;padding:10px 0}.spctx{margin:4px 0 8px}.spctx mark{background:#ffcdd2;padding:0 2px;border-radius:3px}
body.viewonly .edit2{pointer-events:none;opacity:.6}#locknote{font-weight:400}
.badge{display:inline-block;font-size:11px;font-weight:700;background:#c62828;color:#fff;border-radius:8px;padding:1px 7px;margin-left:4px;vertical-align:middle}.lchg{margin:4px 0 6px}

.aledbtn{width:100%;margin-top:8px}
.aedsheet{max-width:640px;width:100%;max-height:94vh;overflow:auto}
.aedl{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.aedr{display:flex;align-items:center;gap:10px;min-height:64px;padding:10px 12px;border:2px solid #bbb;border-radius:14px;background:#fff;text-align:left;font-size:17px;color:#222;width:100%}
.aedr small{display:block;font-size:13px;color:#666;font-weight:400}
.aedc{flex:0 0 32px;height:32px;border:2px solid #999;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;color:#fff}
.aedr.on{background:#2f5d3a;border-color:#2f5d3a;color:#fff}.aedr.on small{color:#dfe}.aedr.on .aedc{background:#fff;border-color:#fff;color:#2f5d3a}
.alcsheet{max-width:640px;width:100%;max-height:94vh;overflow:auto}
.alci{border-top:1px solid #eee;padding:10px 0}.alcn{font-size:15px;color:#c0611a;font-weight:700;text-transform:uppercase}.alct{font-size:17px;font-weight:600;margin:2px 0 6px}
.alcu{list-style:none;padding:0;margin:0;font-size:24px;font-weight:700;line-height:1.5}.alcw{font-size:22px;font-weight:800;color:#c62828;background:#ffebee;padding:10px;border-radius:10px}
.utoast{position:fixed;left:50%;transform:translateX(-50%);bottom:70px;z-index:60;background:#222;color:#fff;border-radius:14px;padding:10px 12px 10px 18px;display:flex;gap:14px;align-items:center;font-size:17px;box-shadow:0 4px 14px #0005}
.utoast[hidden]{display:none}.utoast button{background:#ffd54f;color:#222;border:0;border-radius:10px;padding:12px 18px;font-weight:800;font-size:17px;min-height:48px}
@media(max-width:700px){.sign .alg{pointer-events:none}.aedl{grid-template-columns:1fr}.aedr{min-height:60px;font-size:19px}}

.testbar{background:repeating-linear-gradient(45deg,#ffd54f,#ffd54f 14px,#ffca28 14px,#ffca28 28px);color:#3e2700;text-align:center;padding:8px 10px;font-size:15px;position:sticky;top:0;z-index:25}
.testbar b{background:#c62828;color:#fff;padding:2px 8px;border-radius:6px;letter-spacing:1px}.testbar button{margin-left:8px;border:2px solid #3e2700;background:#fff;border-radius:10px;padding:6px 12px;font-weight:700}
body.testmode .demo{background:#c62828}
@media print{body.testmode .sign::after,body.testmode .a4::after{content:'TEST';position:absolute;right:8mm;bottom:5mm;font:700 9pt sans-serif;color:#c62828;border:1px solid #c62828;padding:0 4px;border-radius:3px}body.testmode .sign,body.testmode .a4{position:relative}}
