:root{
  --ink:#26312b;
  --paper:#f6f4ee;
  --panel:#ffffff;
  --line:#e2ddcf;
  --slate:#3d4f47;
  --slate-dark:#2a3831;
  --mustard:#c8912a;
  --mustard-dark:#a9761c;
  --c-color:#2f6fa8;
  --c-bg:#e7f0f8;
  --l-color:#3f7d4f;
  --l-bg:#e9f4ea;
  --danger:#b8452f;
  --danger-bg:#fbeae5;
  --muted:#7c8b82;
  --radius:8px;
  --shadow:0 1px 2px rgba(38,49,43,.06), 0 4px 14px rgba(38,49,43,.05);
  font-size:16px;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  font-family:"Iowan Old Style","Palatino Linotype",Georgia,serif;
  background:var(--paper);
  color:var(--ink);
  -webkit-font-smoothing:antialiased;
}
input,select,button,textarea{
  font-family:"Avenir Next","Segoe UI",Helvetica,Arial,sans-serif;
}
h1,h2,h3{
  font-family:"Iowan Old Style","Palatino Linotype",Georgia,serif;
  font-weight:600;
  letter-spacing:.2px;
  margin:0 0 .5em 0;
}
a{color:inherit;}
button{
  cursor:pointer;
  border:1px solid var(--slate);
  background:var(--slate);
  color:#fff;
  padding:.5em 1em;
  border-radius:var(--radius);
  font-size:.92rem;
  font-weight:600;
  transition:transform .06s ease, background .15s ease;
}
button:hover{background:var(--slate-dark);}
button:active{transform:scale(.98);}
button.secondary{
  background:transparent;
  color:var(--slate);
  border:1px solid var(--line);
}
button.secondary:hover{background:#efece2;}
button.danger{background:var(--danger);border-color:var(--danger);}
button.danger:hover{background:#98371f;}
button.gold{background:var(--mustard);border-color:var(--mustard);}
button.gold:hover{background:var(--mustard-dark);}
button:disabled{opacity:.45;cursor:not-allowed;}
input[type=text],input[type=password],input[type=number],input[type=date],select,textarea{
  border:1px solid var(--line);
  border-radius:6px;
  padding:.5em .65em;
  font-size:.95rem;
  background:#fff;
  color:var(--ink);
}
input:focus,select:focus,textarea:focus,button:focus-visible{
  outline:2px solid var(--mustard);
  outline-offset:1px;
}
table{border-collapse:collapse;width:100%;}
th,td{padding:.5em .6em;text-align:left;border-bottom:1px solid var(--line);font-size:.92rem;}
th{
  font-family:"Avenir Next","Segoe UI",Helvetica,Arial,sans-serif;
  text-transform:uppercase;
  letter-spacing:.06em;
  font-size:.72rem;
  color:var(--muted);
  font-weight:700;
}
.num-input{width:5.5em;text-align:right;}
.num-input.input-error{border-color:var(--danger);background:var(--danger-bg);}
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0;}
input[type=number]{-moz-appearance:textfield;}
.zebra-table tbody tr:nth-child(even){background:#f4f2e9;}
.zebra-table tbody tr:nth-child(odd){background:#fff;}
.zebra-table th{background:#ece8da;}
.note-input{width:100%;min-width:140px;font-size:.85rem;}
.dish-heading{font-size:1.05rem;font-weight:700;color:var(--slate-dark);margin:.1em 0 .5em;}
.dish-heading .polozka-label{
  display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;
  color:var(--muted);font-weight:700;font-family:"Avenir Next",sans-serif;margin-bottom:.15em;
}

/* ---------- Login ---------- */
.login-screen{
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  background:
    linear-gradient(180deg, rgba(38,49,43,.04), rgba(38,49,43,0) 40%),
    var(--paper);
}
.login-card{
  width:min(360px, 90vw);
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:12px;
  padding:2.2em 2em;
  box-shadow:var(--shadow);
}
.login-card .brand{
  display:flex;align-items:baseline;gap:.5em;margin-bottom:.15em;
}
.login-card .brand .mark{
  width:10px;height:10px;border-radius:2px;background:var(--mustard);display:inline-block;transform:rotate(45deg);
}
.login-card h1{font-size:1.5rem;}
.login-card p.sub{color:var(--muted);margin:0 0 1.4em 0;font-size:.92rem;}
.login-card label{display:block;font-size:.8rem;color:var(--muted);margin:.9em 0 .3em;font-family:"Avenir Next",sans-serif;}
.login-card input{width:100%;}
.login-card button{width:100%;margin-top:1.4em;}
.login-error{color:var(--danger);font-size:.85rem;margin-top:.8em;font-family:"Avenir Next",sans-serif;}
.login-hint{margin-top:1.6em;font-size:.78rem;color:var(--muted);font-family:"Avenir Next",sans-serif;line-height:1.5;border-top:1px solid var(--line);padding-top:1em;}

/* ---------- Shell ---------- */
.shell{min-height:100vh;display:flex;flex-direction:column;}
.topbar{
  background:var(--slate-dark);
  color:#f2efe4;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:.7em 1.4em;
  font-family:"Avenir Next",sans-serif;
}
.topbar .brand{display:flex;align-items:center;gap:.55em;font-weight:700;letter-spacing:.02em;}
.topbar .brand .mark{width:9px;height:9px;background:var(--mustard);display:inline-block;transform:rotate(45deg);}
.topbar .who{display:flex;align-items:center;gap:1em;font-size:.85rem;}
.topbar .who .badge{
  background:rgba(255,255,255,.12);
  padding:.25em .6em;
  border-radius:999px;
  font-size:.72rem;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.topbar button.logout{background:transparent;border-color:rgba(255,255,255,.35);color:#f2efe4;padding:.35em .8em;font-size:.8rem;}
.topbar button.logout:hover{background:rgba(255,255,255,.12);}

.tabs{
  display:flex;
  gap:.2em;
  background:var(--slate);
  padding:0 1.4em;
  overflow-x:auto;
  font-family:"Avenir Next",sans-serif;
}
.tabs button{
  background:transparent;
  border:none;
  border-radius:0;
  color:rgba(255,255,255,.65);
  padding:.85em 1em;
  font-size:.85rem;
  font-weight:600;
  border-bottom:3px solid transparent;
}
.tabs button:hover{color:#fff;background:rgba(255,255,255,.06);}
.tabs button.active{color:#fff;border-bottom-color:var(--mustard);}

.content{flex:1;padding:1.6em;max-width:1200px;margin:0 auto;width:100%;}
.panel{
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:1.4em;
  margin-bottom:1.4em;
  box-shadow:var(--shadow);
}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:1em;margin-bottom:1em;flex-wrap:wrap;}
.panel-head h2{margin:0;font-size:1.15rem;}
.row{display:flex;gap:.8em;flex-wrap:wrap;align-items:center;}
.field{display:flex;flex-direction:column;gap:.3em;}
.field label{font-size:.75rem;color:var(--muted);font-family:"Avenir Next",sans-serif;text-transform:uppercase;letter-spacing:.05em;}
.muted{color:var(--muted);}
.small{font-size:.85rem;}
.chip{
  display:inline-flex;align-items:center;gap:.3em;
  padding:.15em .55em;border-radius:999px;font-size:.72rem;font-weight:700;
  font-family:"Avenir Next",sans-serif;letter-spacing:.03em;
}
.chip.c{background:var(--c-bg);color:var(--c-color);}
.chip.l{background:var(--l-bg);color:var(--l-color);}
.chip.locked{background:var(--danger-bg);color:var(--danger);}
.chip.open{background:#eef3ea;color:var(--l-color);}
.toast{
  position:fixed;bottom:1.4em;right:1.4em;
  background:var(--slate-dark);color:#fff;
  padding:.8em 1.2em;border-radius:8px;font-family:"Avenir Next",sans-serif;
  font-size:.88rem;box-shadow:var(--shadow);z-index:50;
  animation:toast-in .18s ease;
}
.toast.error{background:var(--danger);}
@keyframes toast-in{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}

.matrix-table th, .matrix-table td{text-align:center;}
.matrix-table td.cell{cursor:pointer;user-select:none;}
.matrix-table td.cell:hover{background:#f2efe2;}
.matrix-table th.rowhead, .matrix-table td.rowhead{text-align:left;font-weight:600;}

.day-nav{display:flex;align-items:center;gap:.6em;}
.day-nav button{padding:.35em .7em;}
.day-nav .current{font-weight:700;min-width:10em;text-align:center;font-family:"Avenir Next",sans-serif;}

.empty-state{
  text-align:center;padding:2.5em 1em;color:var(--muted);font-family:"Avenir Next",sans-serif;
}
.week-block{border:1px solid var(--line);border-radius:8px;margin-bottom:1em;overflow:hidden;}
.week-block .day-title{
  background:#efece2;padding:.5em .9em;font-weight:700;font-size:.85rem;
  font-family:"Avenir Next",sans-serif;display:flex;justify-content:space-between;align-items:center;
}
.search-combo{position:relative;}
.search-combo .suggestions{
  position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid var(--line);
  border-radius:6px;box-shadow:var(--shadow);z-index:20;max-height:220px;overflow:auto;
}
.search-combo .suggestions div{padding:.5em .7em;cursor:pointer;font-size:.9rem;}
.search-combo .suggestions div:hover{background:var(--paper);}
.type-badges span{margin-right:.3em;}
.section-title{
  font-family:"Avenir Next",sans-serif;text-transform:uppercase;letter-spacing:.06em;
  font-size:.75rem;color:var(--muted);font-weight:700;margin:1.2em 0 .5em;
}
.section-title:first-child{margin-top:0;}
footer.foot{
  text-align:center;color:var(--muted);font-size:.75rem;padding:1.4em;font-family:"Avenir Next",sans-serif;
}
@media (max-width:640px){
  .content{padding:1em;}
  .panel{padding:1em;}
  table{font-size:.85rem;}
}
