*{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:var(--k-c0,#e2efda)}.c1{background:var(--k-c1,#fff7d1)}.c2{background:var(--k-c2,#ddebf7)}.c3{background:var(--k-c3,#fce4d6)}
.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%}
.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}}
.tlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin:0 4px 16px}
.tcard{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;min-height:150px;padding:56px 16px 14px;border:1px solid #ddd;border-radius:14px;background:#faf6ec top/100% auto no-repeat;box-shadow:0 2px 6px #0001}
.tcard .ttag{font-size:14px;color:#555;font-weight:600}.tcard .tdays{font-size:12.5px;color:#666}
.sign.tsign{background-size:100% 100%;background-repeat:no-repeat;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.sign.tsign .slabel{background:var(--tb,#e8a03a);font-family:var(--tbf)}.sign.tsign .stitle{margin-top:.6%;color:var(--ta,#222);font-family:var(--tf);font-size:var(--ts,15cqw);font-weight:var(--tw,400);font-style:var(--ti,normal);white-space:nowrap}.sign.tsign .sdish{font-family:var(--tbf);color:#2a2522}
.tcard .tname{font-family:var(--tf,Allura),cursive;font-size:28px;line-height:1;color:var(--ta,#222)}
.tstamp{position:absolute;right:6%;top:15%;width:12%;opacity:.9}
.tal .chip{font-size:13px;padding:6px 10px}
.accsheet{position:relative;max-width:420px}.accsheet input,.accsheet select{width:100%;font-size:17px;padding:12px;border:1px solid #bbb;border-radius:10px;margin-bottom:6px;box-sizing:border-box}
.accsheet .big{width:100%;margin-top:10px}.accx{position:absolute;right:10px;top:8px;border:0;background:none;font-size:22px;padding:8px}
.accerr{background:#fde8e6;color:#9b1c10;border-radius:8px;padding:10px;margin:8px 0;font-weight:600}.accl{margin-top:12px;text-align:center}
.accsecret{font:600 18px ui-monospace,monospace;letter-spacing:1px;background:#f4f1ea;padding:12px;border-radius:8px;margin:6px 0 10px;word-break:break-all;text-align:center}
.accinv input,.accinv select,.acclink input{width:100%;font-size:16px;padding:11px;border:1px solid #bbb;border-radius:10px;box-sizing:border-box;margin-bottom:6px}
.acclink{border:2px solid #2f5d3a}.acclink .row{gap:8px;flex-wrap:wrap}.acclink .row>*{flex:1 1 140px}
.urow{border-top:1px solid #eee;padding:12px 0;display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}.urow.disabled{opacity:.6}
.uctl{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.uctl .sel{width:auto;min-height:44px}.uctl .big{padding:10px 12px;font-size:14px;min-height:44px}
.big.danger{color:#a3271a;border-color:#a3271a}.warnc{background:#fff6e0}.ok{color:#2f7d3a;font-weight:600}.warn{color:#9a6400;font-weight:600}.rolehelp{margin:8px 0}
body.role-kock #lock,body.role-kock #unlock,body.role-personal #lock,body.role-personal #unlock,body.role-lasare #lock,body.role-lasare #unlock{display:none!important}
body.role-lasare #print,body.role-lasare [data-pr],body.role-lasare .actions{display:none!important}
@media print{body.role-lasare main{display:none!important}}
#title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}#title .logo{width:1.25em;height:1.25em;border-radius:22%;box-shadow:0 0 0 2px #fff3}#title .brand{font-weight:800;letter-spacing:.5px}#title .brand b{font-weight:800}#title .tvk{font-weight:600;opacity:.95}
.accbrand{display:flex;align-items:center;gap:10px;font-size:26px;font-weight:800;color:#2f5d3a;margin-bottom:4px}.accbrand img{width:40px;height:40px;border-radius:22%}
.accsheet .lnk{color:#2f5d3a;text-decoration:underline;background:none;border:0;font-size:15px;padding:8px}
body.needlogin main,body.needlogin #views,body.needlogin .actions,body.needlogin #sub,body.needlogin #lockbar{visibility:hidden}
.actions[hidden]{display:none!important}
/* Spansk vecka – kategorirubrik (.stitle) i spansk affischstil */
.sign.tsign[style*="themes/es.jpg"] .stitle{
  font-family:'Kaushan Script',cursive;
  font-weight:400;font-style:normal;
  color:#c60b1e;
  position:relative;isolation:isolate;width:max-content;
  padding:0 .28em .08em;
  letter-spacing:.01em;
  transform:rotate(-2deg);
  text-shadow:
    /* yellow inner outline */
    .022em 0 0 #ffc400,-.022em 0 0 #ffc400,0 .022em 0 #ffc400,0 -.022em 0 #ffc400,
    .016em .016em 0 #ffc400,-.016em .016em 0 #ffc400,.016em -.016em 0 #ffc400,-.016em -.016em 0 #ffc400,
    /* dark outer outline + drop shadow */
    .042em 0 0 #3b1208,-.042em 0 0 #3b1208,0 .042em 0 #3b1208,0 -.042em 0 #3b1208,
    .03em .03em 0 #3b1208,-.03em .03em 0 #3b1208,.03em -.03em 0 #3b1208,-.03em -.03em 0 #3b1208,
    .06em .075em 0 rgba(59,18,8,.55);
}
/* red-yellow-red flag ribbon (1:2:1) behind the lower part of the text, swallowtail ends */
.sign.tsign[style*="themes/es.jpg"] .stitle::before{
  content:"";position:absolute;z-index:-1;
  left:-.1em;right:-.1em;bottom:.22em;height:.24em;
  background:linear-gradient(to bottom,#c60b1e 0 25%,#ffc400 25% 75%,#c60b1e 75% 100%);
  clip-path:polygon(0 0,100% 0,96% 50%,100% 100%,0 100%,4% 50%);
  box-shadow:0 .03em 0 rgba(59,18,8,.35);
  opacity:.95;
}
.sign.tsign .ssub{font-family:var(--tbf,'Open Sans'),sans-serif;font-size:3cqw;color:#2a2522;letter-spacing:.08em;text-transform:uppercase;margin-top:.6%;margin-bottom:1.2%;font-weight:400;font-style:normal;text-shadow:none;transform:none}
.tlabrow{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.tlabrow label{flex:1 1 160px;font-size:13px;color:#555}.tlabrow input{width:100%;font-size:16px;padding:9px;border:1px solid #bbb;border-radius:8px;box-sizing:border-box}
/* ===== Temaveckor: temanamnet (pill) centrerat OVANFÖR kategorirubriken, stil per tema ===== */
.sign.tsign .slabel{order:-1;transform:none;margin:0 auto 1.6%;align-self:center;white-space:nowrap;line-height:1.25}
/* jp – som förut (röd rektangel), bara flyttad */
.sign.tsign.t-jp .slabel{background:#c0442b;color:#fff;font-family:'Open Sans',sans-serif;font-size:3.2cqw;padding:.5% 4%}
/* es – elfenbensvit banderoll med kluvna ändar, röd/gul kantlinje, Playfair Display SC */
.sign.tsign.t-es .slabel{background:
  linear-gradient(#c60b1e,#c60b1e) top/100% .32cqw no-repeat,linear-gradient(#ffc400,#ffc400) 0 .32cqw/100% .22cqw no-repeat,
  linear-gradient(#c60b1e,#c60b1e) bottom/100% .32cqw no-repeat,linear-gradient(#ffc400,#ffc400) 0 calc(100% - .32cqw)/100% .22cqw no-repeat,#fffaf0;
  color:#a3101c;font-family:'Playfair Display SC',Georgia,serif;font-weight:700;font-size:2.7cqw;letter-spacing:.2em;padding:1.1cqw 6.2cqw 1.1cqw 6.4cqw;
  clip-path:polygon(0 0,100% 0,95.5% 50%,100% 100%,0 100%,4.5% 50%);filter:drop-shadow(0 .25cqw .2cqw rgba(59,18,8,.25))}
/* in – saffransfärgad rundad tagg med prickad insida */
.sign.tsign.t-in .slabel{background:#c9771a;color:#fff8ea;font-family:'Hind',sans-serif;font-weight:400;font-size:2.8cqw;letter-spacing:.18em;text-transform:uppercase;padding:.9cqw 5cqw;border-radius:99px;outline:.25cqw dotted #f6ecd6;outline-offset:-.9cqw}
/* us – dinerskylt: röd med vit dubbelram, Bebas Neue */
.sign.tsign.t-us .slabel{background:#b8323a;color:#fff;font-family:'Bebas Neue','Oswald',sans-serif;font-size:3.6cqw;letter-spacing:.16em;padding:.5cqw 4.5cqw .3cqw;border-radius:1.2cqw;box-shadow:inset 0 0 0 .35cqw #b8323a,inset 0 0 0 .6cqw #fff}
/* se – dalaröd rundad etikett, Fraunces kursiv */
.sign.tsign.t-se .slabel{background:#b5352a;color:#fff6ea;font-family:'Fraunces',serif;font-style:italic;font-weight:600;font-size:3cqw;letter-spacing:.06em;padding:.6cqw 4.5cqw;border-radius:99px;box-shadow:0 0 0 .3cqw #efe7d6,0 0 0 .55cqw #2f5a3c}
/* or – granatäpple med guldram, El Messiri */
.sign.tsign.t-or .slabel{background:#9e2b3a;color:#fbf1dc;font-family:'El Messiri',serif;font-weight:600;font-size:2.9cqw;letter-spacing:.14em;padding:.6cqw 5cqw;border-radius:.6cqw;box-shadow:inset 0 0 0 .3cqw #9e2b3a,inset 0 0 0 .5cqw #c49a3a}
/* Variant B (body.pill-tilt): temanamnet som snett placerad etikett uppe till vänster om rubriken */
body.pill-tilt .sign.tsign .slabel{position:absolute;top:23cqw;left:7cqw;margin:0;transform:rotate(-7deg);transform-origin:left center;z-index:2}
body.pill-tilt .sign.tsign .stitle{margin-top:10cqw}
body.pill-tilt .sign.tsign.t-jp .slabel{left:6cqw}
/* Om ChefSi + sidfot */
#appfoot{text-align:center;font-size:12.5px;color:#8a8577;padding:18px 12px 90px}#appfoot .lnk,.accfoot .lnk{color:#6f6a5c;font-size:12.5px;text-decoration:underline;background:none;border:0;padding:4px}
.accfoot{text-align:center;font-size:12px;color:#8a8577;margin-top:14px;border-top:1px solid #eee;padding-top:10px}
.ftest{background:#c0392b;color:#fff;font-weight:700;font-size:10.5px;letter-spacing:.08em;padding:1px 6px;border-radius:4px;vertical-align:middle}
#aboutm{z-index:1000}.aboutsheet{position:relative;max-width:380px;text-align:center;padding-top:28px}
.aboutlogo{width:76px;height:76px;border-radius:22%;box-shadow:0 4px 14px #2f5d3a33}.aboutname{font-size:34px;font-weight:800;color:#2f5d3a;letter-spacing:.5px;margin-top:10px}
.aboutver{font-size:13px;color:#8a8577;margin-top:2px;letter-spacing:.04em}.aboutdesc{font-size:16px;line-height:1.5;color:#3b3a35;margin:18px 6px 14px}
.aboutcred{font-size:14px;color:#5b584f;border-top:1px solid #eee;padding-top:14px;margin-bottom:6px}.aboutsheet .big{width:100%;margin-top:14px}
body.needlogin #appfoot{visibility:hidden}
body.pill-tilt .sign.tsign.t-es .stitle{margin-top:12.5cqw}
/* Ordspråk på temaskyltar – samma idé som Japansk vecka (originalspråk + uttal + svensk översättning i högerspalten) */
.sign.tsign .sprov{position:absolute;right:4cqw;top:30%;width:21cqw;z-index:1;text-align:center;color:var(--pc,var(--ta,#2f4466));pointer-events:none}
.sign.tsign .sprov .po{font-family:var(--pf,var(--tbf));font-size:3.8cqw;line-height:1.28;font-weight:var(--pw,400);font-style:var(--pi,normal)}
.sign.tsign .sprov .po::after{content:"";display:block;width:6cqw;height:.25cqw;margin:1.4cqw auto 1.1cqw;background:currentColor;opacity:.45;border-radius:1cqw}
.sign.tsign .sprov .pt{font-family:var(--ptf,var(--tbf));font-style:italic;font-weight:600;font-size:2.25cqw;line-height:1.25}
.sign.tsign .sprov .ps{font-family:var(--psf,var(--tbf));font-size:2.2cqw;line-height:1.3;margin-top:.6cqw;color:#4a5160}
/* (borttagen: .has-prov .sdish-padding – ordspråket ska inte flytta huvudtexten) */
/* jp: lodrät japansk text som i trycket */
.sign.tsign.t-jp .sprov .po{writing-mode:vertical-rl;margin:0 auto;font-family:'Yuji Syuku','Noto Serif CJK JP',serif;font-size:4.6cqw;letter-spacing:.12em;line-height:1}
.sign.tsign.t-jp .sprov .po::after{display:none}
.sign.tsign.t-jp .sprov .pt{margin-top:1.8cqw;font-family:'Cormorant Garamond',serif;font-size:2.3cqw}
.sign.tsign.t-jp .sprov .ps{font-family:'Cormorant Garamond',serif;font-size:2.1cqw}
/* teman */
.sign.tsign.t-es .sprov{--pc:#1f4e8c;--pf:'Playfair Display',serif;--pi:italic;--pw:600;--ptf:'Lora',serif;--psf:'Lora',serif}
.sign.tsign.t-in .sprov{--pc:#9c2a2a;--pf:'Noto Serif Devanagari',serif;--pw:600;--ptf:'Hind',sans-serif;--psf:'Hind',sans-serif}
.sign.tsign.t-in .sprov .po{font-size:4cqw;line-height:1.45}
.sign.tsign.t-us .sprov{--pc:#2c4170;--pf:'Pacifico',cursive;--psf:'Oswald',sans-serif}
.sign.tsign.t-us .sprov .po{font-size:3.5cqw;line-height:1.45}
.sign.tsign.t-us .sprov .ps{font-weight:300;font-size:2.4cqw}
.sign.tsign.t-se .sprov{--pc:#2f5a3c;--pf:'Fraunces',serif;--pi:italic;--pw:600;--psf:'Nunito Sans',sans-serif}
.sign.tsign.t-or .sprov{--pc:#1f6f73;--pf:'Amiri',serif;--pw:700;--ptf:'Lora',serif;--psf:'Lora',serif}
.sign.tsign.t-or .sprov .po{font-size:4.5cqw;line-height:1.5}
.sign.tsign.t-or .sprov[lang="tr"] .po{font-family:'Lora',serif;font-style:italic;font-weight:600;font-size:3.6cqw;line-height:1.3}
@media print{.sign.tsign .sprov .ps{color:#3a404c}}
/* Allergen-notering (t.ex. "Senap ✓ (i kalla såsen)") på skyltar och i allergendialogen */
.alg .anote{font-style:italic;font-weight:400;font-size:2.05cqw;color:#4a4f57;overflow-wrap:anywhere}
.sign.tsign .alg .anote{color:inherit;opacity:.85}
.aedi{display:flex;flex-direction:column;gap:6px}
.aedn{background:#f3f7f3;border:1px solid #cfe0d1;border-radius:12px;padding:8px 10px}
.aednl{font-size:14px;color:#2f5d3a;font-weight:600;margin-bottom:4px}.aednl span{font-weight:400;color:#666}
.aedn .chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.aedni{width:100%;box-sizing:border-box;font-size:16px;padding:8px;border:1px solid #bbb;border-radius:8px}
.aedr .aedns{font-style:italic;margin-top:2px}
/* Svensk landskapsvecka: dagens landskap (vapen + landskapsblomma) ersätter dalahästen (se-stamp.png) */
.sign.tsign.t-se .tland{position:absolute;right:3.5%;top:12.5%;width:19%;margin:0;text-align:center;pointer-events:none}
.sign.tsign.t-se .tland img{display:block;width:100%;height:auto}
.sign.tsign.t-se .tland figcaption{font-family:'Fraunces',serif;font-style:italic;font-weight:600;font-size:2.4cqw;color:#2f5a3c;line-height:1.15;margin-top:-.4cqw}
.sign.tsign.t-se .tland figcaption small{display:block;font-family:'Nunito Sans',sans-serif;font-style:normal;font-weight:400;font-size:1.7cqw;color:#4a5160;letter-spacing:.04em}
.aboutlic{font-size:12px;color:#666;line-height:1.4;margin:10px 0 14px}.aboutlic a{color:#2f5d3a}
/* Vanliga skyltar (rullmeny): bara skriptrubriken – den orange etiketten döljs men behåller sin plats så att inget annat flyttar sig. Temaskyltar oförändrade. */
.sign:not(.tsign) .slabel{visibility:hidden}
/* Bara ordspråket på skylten: strecket under som skilde det från förklaringen behövs inte längre */
.sign.tsign .sprov .po::after{display:none}
/* Vanliga skyltar: skriptrubriken i kategorins färg (KITCHEN.cats.*.head). Temaskyltar använder sina egna färger. */
.sign:not(.tsign) .stitle{color:var(--hc,#222)}
@media print{.sign:not(.tsign) .stitle{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
/* Ordspråket tar ingen layoutbredd (Stefan 2026-10-17): huvudtexten ligger exakt som utan ordspråk. Ordspråket ligger absolut,
   centrerat i luckan mellan rätten och allergenraden; jp behåller lodrät text men i en smal kolumn vid högerkanten, under stämpeln. */
.sign.tsign .sprov{top:auto;bottom:37%;left:10cqw;right:10cqw;width:auto}
.sign.tsign .sprov .po{font-size:3.3cqw;line-height:1.3}
.sign.tsign.t-in .sprov .po{font-size:3.5cqw;line-height:1.4}
.sign.tsign.t-us .sprov .po{font-size:3.1cqw;line-height:1.4}
.sign.tsign.t-or .sprov .po{font-size:3.9cqw;line-height:1.4}
.sign.tsign.t-or .sprov[lang="tr"] .po{font-size:3.2cqw}
.sign.tsign.t-jp .sprov{top:30%;bottom:auto;left:auto;right:3.2cqw;width:6cqw}
.sign.tsign.t-jp .sprov .po{font-size:4.2cqw;line-height:1}
/* ChefSi-logotyper: liten (toque + ordbild, vit) i sidhuvudet, stor handskriven D2 i inloggning och Om-sidan */
#title .brandlogo{height:1.25em;width:auto;display:block;flex:none}
.accbrand img{width:auto;height:64px;border-radius:0}
.aboutbig{display:block;height:96px;width:auto;margin:4px auto 6px}

/* ===== Skylt design A (v2+v3+v4 från themes-src/skylt_v2_impl.md) – bara vanliga skyltar (.sign.v2:not(.tsign)); temaveckor oförändrade ===== */
/* ===== Skylt v2 (vanliga skyltar, ej temaveckor) ===== */
.sign.v2:not(.tsign){padding:6% 7% 5%}
.sign.v2:not(.tsign) .stitle{font-family:'Kaushan Script','Brush Script MT',cursive;color:var(--hc,#222);line-height:1.1;white-space:nowrap;position:relative;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.sign.v2:not(.tsign) .stx{position:relative;-webkit-text-stroke:.32cqw var(--hc);paint-order:stroke fill}
.sign.v2:not(.tsign) .sdish{font-size:7cqw;font-weight:400;line-height:1.28;color:#111;padding:0 2%}
.sign.v2:not(.tsign) .seko{font-size:2.3cqw;color:#222;margin-bottom:2.2%;max-width:92%}
.sign.v2:not(.tsign) .alg{font-size:2.75cqw;color:#222}
.sign.v2:not(.tsign) .alg b{font-size:3.4cqw}
.sign.v2:not(.tsign) .alg .anote{font-size:2.3cqw}
.sign.v2:not(.tsign) .sall{margin-bottom:3%}
/* rubrik: lutad uppåt (A, C) */
.sign.v2tilt:not(.tsign) .stitle{font-size:var(--fit,18cqw);margin-top:6%;padding:0 5%;transform:rotate(-5deg)}
/* A: mjukt penseldrag bakom rubriken (kategorifärg, låg täckning = lite bläck) */
.sign.v2:not(.tsign) .sbrush{position:absolute;left:-3%;width:106%;top:38%;height:60%;fill:var(--hc);opacity:.22;z-index:0}
/* ===== v3: allergenpanel (7 × 2 rutor, som japanska skylten) ===== */
.sign.v3:not(.tsign) .spanel{width:108%;margin:0 0 1.5%;border:.25cqw solid #b9b9b9;border-radius:2.2cqw;padding:2.2cqw 1cqw 1.8cqw;background:#fff}
.sign.v3:not(.tsign) .spanel .seko{font-size:2.5cqw;font-style:italic;color:#222;text-align:center;max-width:none;margin:0 0 2.2cqw;letter-spacing:.02em}
.sign.v3:not(.tsign) .sgrid{display:grid;grid-template-columns:repeat(7,1fr);column-gap:.3cqw;row-gap:2.6cqw}
.sign.v3:not(.tsign) .alg{all:unset;display:flex;flex-direction:column;align-items:center;text-align:center;gap:.9cqw;min-height:0;cursor:pointer}
.sign.v3:not(.tsign) .sbox{width:7cqw;height:7cqw;border:.38cqw solid #4a4a4a;border-radius:.9cqw;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background:#fff}
.sign.v3:not(.tsign) .sbox svg{width:115%;height:115%;margin:-12% -6% 0 4%;fill:none;stroke:var(--hc);stroke-width:3.6;stroke-linecap:round;stroke-linejoin:round;visibility:hidden;overflow:visible}
.sign.v3:not(.tsign) .alg.on .sbox{border-color:var(--hc);border-width:.5cqw}
.sign.v3:not(.tsign) .alg.on .sbox svg{visibility:visible}
.sign.v3:not(.tsign) .sname{font-size:2.6cqw;font-weight:600;line-height:1.15;color:#1a1a1a;hyphens:manual;-webkit-hyphens:manual}
.sign.v3:not(.tsign) .alg.on .sname{font-weight:700}
.sign.v3:not(.tsign) .snote{font-size:2cqw;font-style:italic;line-height:1.15;color:#333;margin-top:-.5cqw}
.sign.v3:not(.tsign) .sbox,.sign.v3:not(.tsign) .sbox svg{-webkit-print-color-adjust:exact;print-color-adjust:exact}
/* ===== v4: hierarki lånad från japanska skylten (variant A) ===== */
.sign.v4:not(.tsign){padding:5% 7% 4.5%}
.sign.v4:not(.tsign) .stop{font-size:2.15cqw;letter-spacing:.32em;text-transform:uppercase;color:#555;font-weight:400;margin:0 0 1%;text-align:center}
.sign.v4:not(.tsign) .stitle{margin-top:3.5%}
.sign.v4:not(.tsign) .sdiv{display:block;width:50%;height:auto;margin:3.2% auto 0;fill:var(--hc);-webkit-print-color-adjust:exact;print-color-adjust:exact}
.sign.v4:not(.tsign) .sdish{flex-direction:column;gap:0;padding:0 3%;font-size:inherit}
.sign.v4:not(.tsign) .sdn{font-family:'Cormorant Garamond',Georgia,serif;font-weight:700;font-size:var(--dn,11.5cqw);line-height:1;color:#111;letter-spacing:.003em;text-wrap:balance}
.sign.v4:not(.tsign) .sds{font-family:'Cormorant Garamond',Georgia,serif;font-style:italic;font-weight:500;font-size:6.4cqw;line-height:1.16;color:#222;margin-top:2.6cqw;max-width:88%;text-wrap:balance}
.sign.v4:not(.tsign) .sdn.only{font-size:var(--dn,9cqw)}
/* App-anpassningar: all:unset i panelen nollar även appens viewonly-/mobilregler för .alg – lägg tillbaka dem */
body.viewonly .sign.v3:not(.tsign) .alg{pointer-events:none;opacity:.6}
@media(max-width:700px){.sign.v3:not(.tsign) .alg{pointer-events:none}}
.sign.v3:not(.tsign) .alg:focus-visible .sbox{outline:.5cqw solid var(--hc);outline-offset:.4cqw}
.sign.v2:not(.tsign) .sbrush{-webkit-print-color-adjust:exact;print-color-adjust:exact}
/* Allergenrutorna ca 25 % mindre (Stefan 2026-10-17, efter provutskrift): 7cqw → 5.25cqw, kanter i samma proportion; bocken skalar med rutan */
.sign.v3:not(.tsign) .sbox{width:5.25cqw;height:5.25cqw;border-width:.3cqw;border-radius:.7cqw}
.sign.v3:not(.tsign) .alg.on .sbox{border-width:.4cqw}
.sign.v3:not(.tsign) .alg{gap:.8cqw}
/* Ännu mindre allergenrutor (Stefan 2026-10-17 14:40): 5.25cqw → 4.2cqw (×0.8), kant/radie i samma proportion; bocken skalar med rutan */
.sign.v3:not(.tsign) .sbox{width:4.2cqw;height:4.2cqw;border-width:.24cqw;border-radius:.56cqw}
.sign.v3:not(.tsign) .alg.on .sbox{border-width:.32cqw}
