/* === Cantine Commande === */
.cantine-order-page{
  display:grid;
  gap:18px;
}
.cantine-order-top{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:16px;
  align-items:start;
}
.cantine-order-top .section-head{
  margin:0;
}
.cantine-admin-order-panel{
  background:
    radial-gradient(circle at top right,rgba(177,216,201,.22),transparent 30%),
    linear-gradient(135deg,#ffffff 0%,#f6fbf8 54%,#fffdf7 100%);
  border:1px solid rgba(28,109,90,.12);
  box-shadow:0 18px 44px rgba(17,43,37,.06);
}
.cantine-admin-order-form{
  align-items:end;
}
.cantine-admin-user-field{
  max-width:640px;
}
.cantine-admin-user-field label{
  font-weight:800;
  color:#315b51;
  margin-bottom:8px;
}
.cantine-admin-user-select{
  min-height:62px;
  width:100%;
  border-radius:18px;
  border:1px solid rgba(28,109,90,.18);
  background:
    linear-gradient(180deg,#ffffff,#f9fdfb) padding-box,
    linear-gradient(135deg,rgba(28,109,90,.45),rgba(240,176,75,.28)) border-box;
  color:#14342e;
  font-size:1.05rem;
  font-weight:800;
  padding:0 52px 0 18px;
  box-shadow:0 12px 24px rgba(17,43,37,.08), inset 0 1px 0 rgba(255,255,255,.9);
  cursor:pointer;
}
.cantine-admin-user-select:focus{
  outline:none;
  border-color:rgba(28,109,90,.42);
  box-shadow:0 0 0 5px rgba(28,109,90,.12), 0 12px 24px rgba(17,43,37,.08);
}
.cantine-admin-order-panel .mini-actions{
  gap:10px;
}
.cantine-admin-order-panel .mini-btn.soft{
  background:#edf7f3;
  border-color:#cfe9e1;
  color:#0d5b4a;
}
.cantine-order-help,
.portal-btn.secondary.cantine-order-help{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:38px;
  height:38px;
  border-radius:50%;
  border:1px solid rgba(28,109,90,.16);
  background:#fff;
  color:#A65D0D;
  font-weight:900;
  font-size:1.05rem;
  line-height:1;
  text-decoration:none;
  box-shadow:0 10px 20px rgba(15,23,42,.06);
}
.portal-btn.secondary.cantine-order-help:hover{
  background:#fff;
  color:#8B4E07;
}
.cantine-context-help{
  position:relative;
  justify-self:end;
}
.cantine-context-help__panel{
  position:absolute;
  top:46px;
  right:0;
  z-index:20;
  width:min(320px, calc(100vw - 48px));
  padding:14px 16px;
  border-radius:18px;
  border:1px solid rgba(var(--brand-900-rgb),.12);
  background:#fff;
  color:#435355;
  line-height:1.6;
  box-shadow:0 18px 42px rgba(15,23,42,.14);
}
.cantine-context-help.is-open .cantine-context-help__panel{
  display:block;
}
.cantine-info-modal{display:none !important}
.cantine-week-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
  gap:18px;
}
.cantine-week-card{
  display:grid;
  gap:14px;
  padding:22px 22px;
  border-radius:24px;
  background:linear-gradient(180deg,#fff,#f7fbf9);
  border:1px solid rgba(28,109,90,.12);
  color:inherit;
  transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease;
  min-height:192px;
}
.cantine-week-card:hover{
  transform:translateY(-2px);
  box-shadow:0 14px 26px rgba(15,23,42,.08);
  border-color:var(--brand-900);
}
.cantine-week-card.is-current{
  border:2px solid var(--brand-900);
  box-shadow:0 16px 30px rgba(var(--brand-900-rgb),.10);
}
.cantine-week-card.is-closed{
  background:linear-gradient(180deg,#f6f8f7,#eef2f0);
  border-color:#d5dfdb;
  color:#60716C;
  cursor:pointer;
}
.cantine-week-card.is-closed:hover{
  border-color:#c5d0cb;
  box-shadow:0 10px 20px rgba(15,23,42,.06);
}
.cantine-week-card.is-closed:focus-visible{
  outline:none;
  box-shadow:0 0 0 3px rgba(var(--brand-700-rgb),.18), 0 10px 20px rgba(15,23,42,.06);
}
.cantine-week-card__top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
}
.cantine-week-card__badges{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  margin-right:auto;
}
.cantine-week-card__badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:7px 12px;
  border-radius:999px;
  font-size:.8rem;
  font-weight:800;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.cantine-week-card__badge.status-open{
  background:#edf7f3;
  border:1px solid #cfe9e1;
  color:#0D5B4A;
}
.cantine-week-card__badge.status-closed{
  background:#eef2f3;
  border:1px solid #d6dde0;
  color:#5e6c70;
}
.cantine-week-card__badge.status-ordered{
  background:#fff4de;
  border:1px solid #f0d3a0;
  color:#8b5a05;
}
.cantine-week-card__chip{
  margin-left:auto;
}
.cantine-week-card__title{
  display:block;
  font-weight:800;
  font-size:1.18rem;
  color:#18352f;
}
.cantine-week-card__meta{
  display:block;
  color:#60716C;
  font-size:1rem;
  line-height:1.55;
}
.cantine-week-card__note{
  margin:0;
  color:#60716C;
  font-size:.96rem;
  line-height:1.6;
}
.cantine-week-card__timer{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  font-size:.76rem;
  font-weight:800;
  min-width:94px;
  padding:7px 12px;
  background:rgba(var(--brand-900-rgb),.92);
  color:#fff;
  box-shadow:0 12px 24px rgba(var(--brand-900-rgb),.18);
  white-space:nowrap;
}
.cantine-week-card__timer.is-closed{
  background:rgba(107,114,128,.92);
  box-shadow:none;
}
.cantine-week-card__actions{
  margin-top:auto;
  display:flex;
  justify-content:flex-start;
}
.cantine-empty-choice{
  display:grid;
  gap:14px;
  padding:30px 32px;
  background:
    radial-gradient(circle at top right, rgba(247,162,26,.12), transparent 28%),
    linear-gradient(180deg,#ffffff,#f8fbf8);
}
.cantine-empty-choice__eyebrow{
  display:inline-flex;
  width:max-content;
  padding:7px 12px;
  border-radius:999px;
  background:#fff5e6;
  border:1px solid #f2dfbb;
  color:#8B5A05;
  font-size:.8rem;
  font-weight:800;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.cantine-empty-choice h2{
  margin:0;
  color:#18352f;
  font-size:clamp(1.6rem,2.8vw,2.2rem);
}
.cantine-empty-choice p{
  margin:0;
  max-width:840px;
  color:#60716C;
  line-height:1.7;
  font-size:1.04rem;
}
.cantine-empty-choice__points{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
}
.cantine-order-visual{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:22px;
  align-items:start;
  padding:22px;
  background:
    radial-gradient(circle at top right, rgba(247,162,26,.12), transparent 28%),
    linear-gradient(180deg,#ffffff,#f8fbf8);
}
.cantine-order-visual__media{
  min-height:clamp(360px, 54vw, 680px);
  border-radius:28px;
  overflow:hidden;
  background:linear-gradient(180deg, rgba(255,255,255,.98), rgba(247,250,248,.98));
  box-shadow:0 24px 50px rgba(15,23,42,.10);
  position:relative;
  padding:12px;
  border:1px solid rgba(28,109,90,.10);
  display:flex;
  align-items:center;
  justify-content:center;
}
.cantine-order-visual__media img{
  position:static;
  width:100%;
  height:100%;
  max-width:100%;
  max-height:100%;
  object-fit:contain;
  display:block;
  background:#ffffff;
  border-radius:18px;
  box-shadow:0 16px 36px rgba(15,23,42,.08);
}
.cantine-order-visual__content{
  display:grid;
  gap:12px;
  max-width:920px;
}
.cantine-order-visual__content h2{
  margin:0;
  font-size:clamp(1.8rem,2.6vw,2.7rem);
  color:#18352f;
}
.cantine-order-visual__content p{
  margin:0;
  color:#60716C;
  font-size:1.08rem;
  line-height:1.8;
}
.cantine-order-table-shell{
  overflow:visible;
  max-width:100%;
}
.cantine-order-table{
  width:100%;
  min-width:1040px;
  border-collapse:separate;
  border-spacing:0;
  table-layout:fixed;
}
.cantine-order-table thead th{
  background:#F7FAF8;
  color:#435355;
  font-size:.74rem;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.cantine-order-table th,
.cantine-order-table td{
  padding:12px 10px;
  border-bottom:1px solid #E7EFEB;
  vertical-align:middle;
}
.cantine-order-table th:nth-child(1),
.cantine-order-table td:nth-child(1){width:30%;}
.cantine-order-table th:nth-child(2),
.cantine-order-table td:nth-child(2){width:15%;}
.cantine-order-table th:nth-child(3),
.cantine-order-table td:nth-child(3){width:15%;}
.cantine-order-table th:nth-child(4),
.cantine-order-table td:nth-child(4){width:15%;}
.cantine-order-table th:nth-child(5),
.cantine-order-table td:nth-child(5){width:15%;}
.cantine-order-table th:nth-child(6),
.cantine-order-table td:nth-child(6){width:10%;}
.cantine-order-row.is-valid{
  background:#FCFEFD;
}
.cantine-order-row.is-invalid{
  background:#FFF8F7;
}
.cantine-order-day{
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
  min-width:260px;
}
.cantine-order-day__quick{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:38px;
  padding:8px 11px;
  border-radius:12px;
  border:1px solid rgba(13,91,74,.16);
  background:linear-gradient(180deg,#edf7f3,#f8fbfa);
  color:#0d5b4a;
  font-weight:900;
  font-size:.7rem;
  line-height:1.1;
  cursor:pointer;
  white-space:nowrap;
}
.cantine-order-day__quick:hover{
  background:linear-gradient(180deg,#e2f1eb,#f5faf8);
}
.cantine-order-day__quick:disabled{
  opacity:.45;
  cursor:not-allowed;
}
.cantine-order-day__title{
  display:block;
  font-weight:800;
  color:#18352f;
  font-size:.9rem;
  line-height:1.15;
  white-space:nowrap;
}
.cantine-order-day__meta{
  display:block;
  margin-top:4px;
  color:#60716C;
  font-size:.72rem;
  line-height:1.25;
  overflow-wrap:normal;
  word-break:normal;
}
.cantine-order-state{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:6px 10px;
  border-radius:999px;
  font-size:.76rem;
  font-weight:800;
  background:#F4F8F6;
  border:1px solid #DCE7E2;
  color:#435355;
  white-space:normal;
  word-break:normal;
}
.cantine-order-select{
  min-width:0;
  width:100%;
}
.cantine-order-combo{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-width:0;
  min-height:44px;
  padding:8px 8px;
  border-radius:18px;
  font-weight:800;
  font-size:.74rem;
  line-height:1.25;
  text-align:center;
  background:#F4F8F6;
  color:#435355;
  word-break:break-word;
}
.cantine-order-row.is-valid .cantine-order-combo{
  background:#EDF7F3;
  color:var(--brand-900);
}
.cantine-order-row.is-invalid .cantine-order-combo{
  background:#FEF2F2;
  color:#B91C1C;
}
.cantine-order-price{
  font-weight:900;
  color:#18352f;
  white-space:nowrap;
  font-size:.95rem;
}
.cantine-order-summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  flex-wrap:wrap;
}
.cantine-order-summary__stats{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
}
.cantine-order-summary__stats span{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:10px 14px;
  border-radius:999px;
  background:#fff;
  border:1px solid #E3ECE7;
  color:#435355;
  font-weight:800;
}
.cantine-order-summary__total{
  font-size:1.8rem;
  font-weight:900;
  color:#18352f;
}
.cantine-info-modal[aria-hidden="true"]{
  display:none;
}
.cantine-info-modal[aria-hidden="false"]{
  display:block;
}
.cantine-info-modal__backdrop{
  position:fixed;
  inset:0;
  background:rgba(2,6,23,.5);
  z-index:1100;
}
.cantine-info-modal__card{
  position:fixed;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  z-index:1101;
  width:min(720px,92vw);
  max-height:82vh;
  overflow:auto;
  background:#fff;
  border-radius:24px;
  padding:22px;
  box-shadow:0 24px 60px rgba(15,23,42,.18);
}
.cantine-info-modal__top{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:16px;
  margin-bottom:14px;
}
.cantine-info-modal__title{
  margin:0;
  color:#18352f;
}
.cantine-info-modal__list{
  display:grid;
  gap:10px;
  margin:0;
  padding:0;
  list-style:none;
}
.cantine-info-modal__list li{
  padding:12px 14px;
  border-radius:16px;
  background:#F8FBFA;
  border:1px solid #E3ECE7;
  color:#435355;
}
@media (max-width: 920px){
  .cantine-order-top{
    grid-template-columns:1fr;
  }
  .cantine-context-help{
    justify-self:start;
  }
  .cantine-context-help__panel{
    left:0;
    right:auto;
  }
  .cantine-order-visual{
    gap:20px;
  }
  .cantine-order-visual__media{
    min-height:clamp(300px, 62vw, 460px);
    padding:10px;
  }
  .cantine-week-card{
    min-height:unset;
  }
  .cantine-week-card__timer{
    min-width:0;
  }
  .cantine-empty-choice{
    padding:24px 22px;
  }
  .cantine-order-table,
  .cantine-order-table thead,
  .cantine-order-table tbody,
  .cantine-order-table tr,
  .cantine-order-table th,
  .cantine-order-table td{
    display:block;
    width:100%;
  }
  .cantine-order-table thead{
    display:none;
  }
  .cantine-order-table tr{
    padding:16px;
    border-bottom:1px solid #E7EFEB;
  }
  .cantine-order-table td{
    padding:8px 0;
    border-bottom:0;
  }
  .cantine-order-table td::before{
    content:attr(data-label);
    display:block;
    margin-bottom:4px;
    color:#60716C;
    font-size:.78rem;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.06em;
  }
}
@media (max-width: 720px){
  .cantine-order-page{gap:14px}
  .cantine-order-top.section-card,
  .cantine-empty-choice,
  .cantine-order-visual,
  .cantine-order-layout > .section-card,
  .cantine-order-summary--side{
    border-radius:20px;
  }
  .cantine-order-top.section-card,
  .cantine-order-layout > .section-card,
  .cantine-order-summary--side{
    padding:18px;
  }
  .cantine-week-grid{
    grid-template-columns:1fr;
    grid-auto-flow:row;
    grid-auto-columns:auto;
    overflow:visible;
    gap:14px;
    padding-bottom:4px;
    scroll-snap-type:none;
    -webkit-overflow-scrolling:touch;
  }
  .cantine-week-card{
    scroll-snap-align:none;
    min-height:0;
    padding:18px;
    border-radius:20px;
  }
  .cantine-week-card__top{
    display:grid;
    grid-template-columns:1fr;
    gap:10px;
  }
  .cantine-week-card__badges{
    width:100%;
  }
  .cantine-week-card__chip,
  .cantine-week-card__timer{
    margin-left:0;
    width:100%;
    justify-content:center;
  }
  .cantine-week-card__title{
    font-size:1.08rem;
    line-height:1.2;
  }
  .cantine-week-card__meta,
  .cantine-week-card__note{
    font-size:.94rem;
  }
  .cantine-week-card__actions{
    width:100%;
  }
  .cantine-week-card__actions .mini-btn{
    width:100%;
    justify-content:center;
  }
  .cantine-empty-choice{
    padding:22px 18px;
  }
  .cantine-empty-choice p{
    font-size:.98rem;
  }
  .cantine-order-visual{
    gap:14px;
    padding:16px;
  }
  .cantine-order-visual__media{
    min-height:clamp(250px, 72vw, 360px);
    padding:8px;
    border-radius:22px;
  }
  .cantine-order-visual__media img{
    border-radius:14px;
  }
  .cantine-order-visual__content{
    gap:12px;
  }
  .cantine-order-visual__content h2{
    font-size:clamp(1.65rem,8vw,2.05rem);
  }
  .cantine-order-visual__content p{
    font-size:.98rem;
    line-height:1.65;
  }
  .cantine-order-table tr{
    border-radius:18px;
    background:#fff;
    box-shadow:0 10px 24px rgba(15,23,42,.05);
    margin-bottom:12px;
  }
  .cantine-order-table{
    min-width:0;
  }
  .cantine-order-day{
    align-items:flex-start;
    flex-direction:column;
    min-width:0;
  }
  .cantine-order-day__quick{
    width:100%;
  }
  .cantine-order-select{
    min-height:46px;
    width:100%;
    font-size:16px;
  }
  .cantine-order-combo,
  .cantine-order-price{
    display:inline-flex;
    align-items:center;
    min-height:40px;
  }
  .cantine-order-summary--side .cantine-order-summary__stats{
    grid-template-columns:1fr;
  }
  .cantine-order-summary--side .cantine-order-summary__total{
    flex-direction:column;
    align-items:flex-start;
    gap:8px;
  }
  .cantine-order-summary--side .portal-btn.primary{
    width:100%;
    justify-content:center;
  }
}
.cse-order-table{
  width:100%;
  border-collapse:separate;
  border-spacing:0;
  overflow:hidden;
  border:1px solid #E6ECE9;
  border-radius:18px;
  background:#fff;
}
.cse-order-table th,
.cse-order-table td{
  padding:18px 16px;
}
.cse-order-table thead th{
  font-size:.83rem;
  color:#5E726C;
  border-bottom:1px solid #E6ECE9;
  text-align:left;
  text-transform:uppercase;
  letter-spacing:.05em;
  background:#F6FAF8;
}
.cse-order-table tbody tr + tr{
  box-shadow:inset 0 1px 0 #F1F5F3;
}
.cse-order-table tbody tr:hover{
  background:#FBFDFC;
}
.cse-order-table .right{
  text-align:right;
}
.cse-order-product{
  font-size:1.02rem;
  font-weight:800;
  color:#12352E;
}
.cse-order-unit{
  color:#60716C;
  font-weight:600;
}
.cse-order-qty{
  width:132px;
  padding:10px 14px;
  border-radius:14px;
  border:1px solid #D5DFDB;
  text-align:center;
  font-weight:700;
  color:#12352E;
  background:#FCFEFD;
}
.cse-order-qty:focus{
  outline:none;
  box-shadow:0 0 0 4px rgba(var(--brand-700-rgb),.16);
  border-color:var(--brand-900);
  background:#fff;
}
.cse-order-alert{
  background:#FEF2F2;
  color:#B91C1C;
  border-radius:14px;
  padding:12px 14px;
  font-size:.9rem;
  margin-bottom:14px;
  border:1px solid #FECACA;
}
.cse-order-resume{
  margin:0 0 12px;
}
@media (max-width: 1080px){
  .cse-order-shell{
    grid-template-columns:1fr;
  }
  .cse-order-summary{
    position:static;
  }
}
@media (max-width: 860px){
  .cse-order-page.cmd-layout{
    width:100%;
    padding-inline:12px;
  }
  .cse-order-header,
  .cse-order-body,
  .cse-order-summary{
    padding:16px;
    border-radius:20px;
  }
  .cse-order-header__grid{
    grid-template-columns:1fr;
    align-items:flex-start;
  }
  .cse-order-header__actions{
    display:grid;
    grid-template-columns:1fr;
    justify-content:stretch;
    width:100%;
  }
  .cse-order-header__actions > *{
    width:100%;
    justify-content:center;
  }
  .cse-order-cover img{
    width:100%;
    max-width:220px;
    height:144px;
  }
  .cse-order-grid{
    grid-template-columns:1fr;
  }
  .cse-order-card__media{
    height:220px;
  }
  .cse-order-table thead{
    display:none;
  }
  .cse-order-table,
  .cse-order-table tbody,
  .cse-order-table tr,
  .cse-order-table td{
    display:block;
    width:100%;
  }
  .cse-order-table{
    border:none;
    background:transparent;
  }
  .cse-order-table tbody tr{
    display:grid;
    gap:0;
    margin-bottom:12px;
    padding:15px;
    border:1px solid #E6ECE9;
    border-radius:18px;
    background:#fff;
    box-shadow:0 12px 24px rgba(15,23,42,.05);
  }
  .cse-order-table tbody td{
    display:grid;
    grid-template-columns:110px minmax(0,1fr);
    gap:10px;
    align-items:center;
    padding:9px 0;
    border-bottom:1px solid #EEF3F1;
    text-align:left;
  }
  .cse-order-table tbody td::before{
    content:attr(data-label);
    font-weight:800;
    color:#60716C;
    font-size:.76rem;
    text-transform:uppercase;
    letter-spacing:.04em;
    margin-right:0;
  }
  .cse-order-table tbody td:first-child{
    grid-template-columns:1fr;
    padding-top:0;
  }
  .cse-order-table tbody td:first-child::before{
    display:none;
  }
  .cse-order-table tbody td:last-child{
    border-bottom:0;
    padding-bottom:0;
  }
  .cse-order-table .right{
    text-align:left;
  }
  .cse-order-qty{
    width:100%;
    max-width:160px;
    justify-self:end;
  }
}
@media (max-width: 430px){
  .cse-order-table tbody td{
    grid-template-columns:1fr;
    gap:5px;
  }
  .cse-order-qty{
    justify-self:stretch;
    max-width:none;
  }
}
.cantine-order-layout{
  display:grid;
  grid-template-columns:minmax(0,1fr) 320px;
  gap:18px;
  align-items:start;
}
.cantine-order-summary--side{
  position:sticky;
  top:96px;
  display:grid;
  gap:18px;
  align-content:start;
}
.cantine-order-summary--side .cantine-order-summary__stats{
  display:grid;
  gap:12px;
}
.cantine-order-summary--side .cantine-order-summary__stats span{
  justify-content:space-between;
  width:100%;
}
.cantine-order-summary--side .cantine-order-summary__total{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
}
.cantine-order-row.is-closed{
  opacity:.88;
}
.cantine-order-row.is-closed .cantine-order-select{
  cursor:not-allowed;
  background:#F3F5F4;
}
@media (max-width: 1080px){
  .cantine-order-layout{
    grid-template-columns:1fr;
  }
  .cantine-order-summary--side{
    position:static;
  }
}


/* Cantine order preview panel */
.cantine-order-layout{
  grid-template-columns:minmax(0,1fr) 360px;
  gap:20px;
}
.cantine-order-side{
  position:sticky;
  top:96px;
  display:grid;
  gap:18px;
  align-content:start;
}
.cantine-order-summary--side{
  position:static;
}
.cantine-order-preview{
  gap:16px;
  background:
    radial-gradient(circle at top right, rgba(247,162,26,.12), transparent 30%),
    linear-gradient(180deg,#ffffff,#f8fbf8);
}
.cantine-order-preview__media{
  min-height:260px;
  padding:10px;
  border-radius:22px;
  border:1px solid rgba(28,109,90,.10);
  background:linear-gradient(180deg, rgba(255,255,255,.98), rgba(247,250,248,.98));
  box-shadow:0 18px 38px rgba(15,23,42,.08);
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
}
.cantine-order-preview__media img{
  width:100%;
  max-height:360px;
  object-fit:contain;
  display:block;
  border-radius:16px;
  background:#fff;
  box-shadow:0 14px 32px rgba(15,23,42,.08);
  cursor:zoom-in;
}
.cantine-order-preview__meta{
  display:grid;
  gap:6px;
}
.cantine-order-preview__meta strong{
  color:#18352f;
  font-size:1.05rem;
}
.cantine-order-preview__meta span,
.cantine-order-preview__empty{
  color:#60716C;
}
.cantine-order-preview__empty{
  display:grid;
  gap:6px;
  text-align:center;
}
.cantine-order-preview__button{
  width:100%;
}
.cantine-order-visual.is-relocated{
  display:none !important;
}
.cantine-order-panel{
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:1350;
}
.cantine-order-panel__window{
  position:fixed;
  left:50%;
  top:10px;
  right:auto;
  bottom:auto;
  width:min(1224px, calc(100vw - 60px));
  height:min(360px, calc(100vh - 48px));
  max-height:none;
  transform:translateX(-50%);
  display:grid;
  grid-template-rows:auto minmax(0,1fr);
  border-radius:24px;
  overflow:hidden;
  border:1px solid rgba(28,109,90,.12);
  background:rgba(255,255,255,.98);
  box-shadow:0 26px 60px rgba(15,23,42,.26);
  pointer-events:auto;
  resize:both;
}
.cantine-order-panel__bar{
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:14px;
  align-items:center;
  padding:14px 16px;
  background:linear-gradient(180deg,#0F5F4D,#0C4C3E);
  color:#fff;
  cursor:move;
}
.cantine-order-panel__grip{
  width:34px;
  height:34px;
  border-radius:12px;
  background:
    radial-gradient(circle, rgba(255,255,255,.92) 1.5px, transparent 2px) 0 0/8px 8px,
    rgba(255,255,255,.12);
}
.cantine-order-panel__title{
  display:grid;
  gap:2px;
}
.cantine-order-panel__title strong{
  font-size:1rem;
}
.cantine-order-panel__title span{
  opacity:.8;
  font-size:.85rem;
}
.cantine-order-panel__actions{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.cantine-order-panel__action{
  min-width:auto;
  padding-inline:14px;
}
.cantine-order-panel__body{
  overflow:auto;
  padding:14px;
  background:#F7FAF8;
}
.cantine-order-panel__body .cantine-menu-image-stage{
  display:block;
  width:100%;
  background:#fff;
  border-radius:16px;
  cursor:zoom-in;
  transition:transform .18s ease;
  transform-origin:center center;
  --cantine-menu-scale:1;
  transform:scale(var(--cantine-menu-scale));
}
.cantine-order-panel__body .cantine-menu-image-stage.is-zoomed{
  cursor:zoom-out;
}
@media (max-width:1080px){
  .cantine-order-layout{
    grid-template-columns:1fr;
  }
  .cantine-order-side{
    position:static;
  }
  .cantine-order-visual{
    grid-template-columns:1fr;
  }
}
@media (max-width:720px){
  .cantine-order-visual__media{
    display:none;
  }
  .cantine-order-preview__media img{
    max-height:280px;
  }
  .cantine-order-panel__window{
    right:12px;
    bottom:76px;
    width:calc(100vw - 24px);
    max-height:62vh;
  }
  .cantine-order-panel__bar{
    grid-template-columns:1fr;
    justify-items:start;
  }
  .cantine-order-panel__actions{
    width:100%;
  }
}

/* Cantine order final layout overrides */
.cantine-order-visual{
  display:grid;
  grid-template-columns:minmax(240px, .8fr) minmax(520px, 1.2fr);
  gap:28px;
  align-items:stretch;
  padding:28px;
  border:1px solid rgba(28,109,90,.10);
  background:
    radial-gradient(circle at top right, rgba(247,162,26,.16), transparent 30%),
    linear-gradient(180deg,#ffffff,#f8fbf8);
}
.cantine-order-visual__content{
  display:grid;
  align-content:start;
  gap:18px;
}
.cantine-order-visual__content h2{
  margin:0;
  color:#18352f;
  font-size:clamp(2rem,3vw,3rem);
}
.cantine-order-visual__meta{
  display:grid;
  gap:8px;
  color:#4E655F;
  font-weight:700;
  font-size:1.08rem;
}
.cantine-order-visual__actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}
.cantine-order-visual__media{
  min-height:380px;
  border-radius:28px;
  padding:22px;
  cursor:pointer;
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  background:linear-gradient(180deg, rgba(255,255,255,.98), rgba(247,250,248,.98));
  box-shadow:0 18px 38px rgba(15,23,42,.08);
  border:1px solid rgba(28,109,90,.10);
}
.cantine-menu-image-stage{
  position:relative;
  width:100%;
}
.cantine-menu-image-stage img{
  width:100%;
  height:auto;
  object-fit:contain;
  display:block;
}
.cantine-order-visual__media .cantine-menu-image-stage{
  max-height:100%;
}
.cantine-order-visual__media .cantine-menu-image-stage img{
  max-height:100%;
}
.cantine-menu-image-notes{
  position:absolute;
  inset:0;
  pointer-events:none;
  display:none !important;
}
.cantine-menu-image-note{
  position:absolute;
  transform:translate(-50%,-50%);
  max-width:42%;
  padding:.18em .42em;
  border-radius:8px;
  background:rgba(255,255,255,.72);
  box-shadow:0 3px 10px rgba(15,23,42,.18);
  font-weight:900;
  line-height:1.1;
  text-align:center;
  white-space:pre-wrap;
  text-shadow:0 1px 2px rgba(255,255,255,.72);
}
.cantine-order-visual__hint{
  position:absolute;
  left:22px;
  right:22px;
  bottom:22px;
  display:inline-flex;
  justify-content:center;
  align-items:center;
  padding:14px 18px;
  border-radius:999px;
  background:rgba(13,91,74,.94);
  color:#fff;
  font-weight:800;
  font-size:1.02rem;
  box-shadow:0 18px 30px rgba(13,91,74,.20);
}
.cantine-order-layout{
  grid-template-columns:minmax(0,1fr) 280px;
  gap:16px;
}
.cantine-order-side{
  position:sticky;
  top:96px;
  display:grid;
  gap:14px;
  align-content:start;
}
.cantine-order-preview{
  gap:18px;
  border:1px solid rgba(28,109,90,.10);
}
.cantine-order-preview__media.is-empty{
  min-height:180px;
}
.cantine-order-preview__media{
  position:relative;
}
.cantine-order-preview__hint{
  position:absolute;
  right:14px;
  bottom:14px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:9px 12px;
  border-radius:999px;
  background:rgba(13,91,74,.92);
  color:#fff;
  font-size:.8rem;
  font-weight:800;
  box-shadow:0 12px 24px rgba(13,91,74,.22);
  pointer-events:none;
}
.cantine-order-table-shell{
  overflow:hidden;
  border:1px solid #E7EFEB;
  border-radius:22px;
  box-shadow:0 16px 30px rgba(15,23,42,.06);
}
.cantine-order-table{
  width:100%;
  min-width:0;
  background:#fff;
  table-layout:fixed;
}
.cantine-order-table thead th{
  position:sticky;
  top:0;
  z-index:2;
  padding:11px 8px;
  background:#F4F8F6;
  font-size:.74rem;
}
.cantine-order-table td{
  padding:12px 8px;
}
.cantine-order-table th:nth-child(1),
.cantine-order-table td:nth-child(1){width:30%;}
.cantine-order-table th:nth-child(2),
.cantine-order-table td:nth-child(2),
.cantine-order-table th:nth-child(3),
.cantine-order-table td:nth-child(3),
.cantine-order-table th:nth-child(4),
.cantine-order-table td:nth-child(4){width:14%;}
.cantine-order-table th:nth-child(5),
.cantine-order-table td:nth-child(5){width:17%;}
.cantine-order-table th:nth-child(6),
.cantine-order-table td:nth-child(6){width:11%;}
.cantine-order-table tbody tr:hover{
  background:#F2F9F5;
}
.cantine-order-table th:first-child,
.cantine-order-table td:first-child{
  position:sticky;
  left:0;
  z-index:1;
  background:inherit;
}
.cantine-order-table thead th:first-child{
  z-index:3;
  background:#F4F8F6;
}
.cantine-order-row:nth-child(even){
  background:#FBFDFC;
}
.cantine-order-row.is-valid{
  background:#F7FCF9;
}
.cantine-order-row.is-invalid{
  background:linear-gradient(180deg,#FFF3E8,#FFE8D1);
  box-shadow:inset 4px 0 0 #F59E0B;
}
.cantine-order-row.is-closed{
  background:#F5F7F6;
}
.cantine-order-day{
  align-items:flex-start;
  flex-direction:row;
  gap:8px;
}
.cantine-order-day__meta{
  display:flex;
  flex-wrap:wrap;
  gap:4px;
  max-width:132px;
  font-size:.72rem;
}
.cantine-order-day__quick{
  min-width:74px;
  padding:6px 8px;
  font-size:.66rem;
  line-height:1.15;
}
.cantine-order-select{
  width:100%;
  min-width:0;
  min-height:36px;
  padding:7px 8px;
  border-radius:12px;
  background:#fff;
  border:1px solid #D8E7E0;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.75);
  font-size:.82rem;
}
.cantine-order-combo{
  width:100%;
  justify-content:center;
  padding:6px 8px;
  font-size:.76rem;
}
.cantine-order-price{
  font-size:.82rem;
  white-space:nowrap;
}
.cantine-order-summary{
  gap:12px;
}
.cantine-order-summary__status{
  padding:11px 12px;
  border-radius:15px;
  background:linear-gradient(180deg,#F6FBF8,#ECF6F1);
  border:1px solid rgba(28,109,90,.10);
  color:#315951;
  font-weight:700;
  line-height:1.35;
  font-size:.86rem;
}
.cantine-order-summary__stats{
  display:grid;
  gap:7px;
}
.cantine-order-summary__stats span{
  justify-content:space-between;
  width:100%;
  min-height:30px;
  padding:6px 10px;
  font-size:.78rem;
}
.cantine-order-summary__days{
  display:grid;
  gap:7px;
}
.cantine-order-summary__empty{
  padding:10px 12px;
  border-radius:14px;
  background:#F7FAF8;
  border:1px solid #E3ECE7;
  color:#60716C;
  font-size:.84rem;
}
.cantine-order-summary__day{
  display:grid;
  gap:6px;
  padding:10px 12px;
  border-radius:15px;
  border:1px solid #E3ECE7;
  background:#fff;
}
.cantine-order-summary__day.is-invalid{
  background:linear-gradient(180deg,#FFF6EC,#FFE7CF);
  border-color:#F7C98C;
}
.cantine-order-summary__day.is-valid{
  background:linear-gradient(180deg,#F7FCF9,#EEF8F3);
}
.cantine-order-summary__day-head{
  display:flex;
  justify-content:space-between;
  gap:8px;
  align-items:center;
  color:#18352f;
  font-size:.84rem;
}
.cantine-order-summary__day-head span{
  font-weight:900;
  white-space:nowrap;
}
.cantine-order-summary__day-items{
  display:grid;
  gap:3px;
  color:#435355;
  font-size:.76rem;
  line-height:1.35;
}
.cantine-order-summary__day-items strong{
  margin-right:4px;
  color:#18352f;
}
.cantine-order-summary__day-formula{
  display:inline-flex;
  align-items:center;
  width:max-content;
  padding:5px 9px;
  border-radius:999px;
  background:#fff;
  border:1px solid rgba(28,109,90,.12);
  color:#315951;
  font-size:.72rem;
  font-weight:800;
}
.cantine-order-summary__total{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  font-size:.92rem;
}
.cantine-admin-cancel-panel{
  display:grid;
  gap:10px;
  margin-top:14px;
  padding:14px 16px;
  border-radius:18px;
  border:1px solid rgba(220,38,38,.12);
  background:linear-gradient(180deg,#fff,#fffafa);
}
.cantine-admin-cancel-panel .mini-actions{
  gap:8px;
}
.cantine-admin-cancel-panel .section-head{
  margin-bottom:0;
}
.cantine-admin-cancel-panel h2{
  font-size:1.05rem;
}
.cantine-admin-cancel-panel p{
  font-size:.82rem;
}
.cantine-order-mobile-menu{
  display:none;
}
@media (max-width:1080px){
  .cantine-order-layout{
    grid-template-columns:1fr;
  }
  .cantine-order-side{
    position:static;
  }
  .cantine-order-table{
    min-width:0;
  }
}
@media (max-width:720px){
  .cantine-order-page{
    gap:14px;
  }
  .cantine-admin-order-form,
  .cantine-admin-order-panel .mini-actions{
    display:grid;
    grid-template-columns:1fr;
  }
  .cantine-admin-order-panel .mini-actions > *{
    width:100%;
    justify-content:center;
  }
  .cantine-admin-user-select{
    min-height:54px;
    border-radius:16px;
    font-size:16px;
  }
  .cantine-order-table-shell{
    overflow:visible;
    border:none;
    border-radius:0;
  }
  .cantine-order-table,
  .cantine-order-table thead,
  .cantine-order-table tbody,
  .cantine-order-table tr,
  .cantine-order-table td{
    display:block;
    width:100%;
    min-width:0;
  }
  .cantine-order-table thead{
    display:none;
  }
  .cantine-order-table tr{
    margin-bottom:14px;
    padding:15px;
    border:1px solid #E6ECE9;
    border-radius:20px;
    background:#fff;
    box-shadow:0 12px 26px rgba(15,23,42,.05);
  }
  .cantine-order-table td{
    display:grid;
    grid-template-columns:1fr;
    gap:6px;
    padding:10px 0;
    border-bottom:1px solid #EEF3F1;
  }
  .cantine-order-table td::before{
    content:attr(data-label);
    display:block;
    margin-bottom:6px;
    color:#60716C;
    font-size:.78rem;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.05em;
  }
  .cantine-order-table td:first-child{
    position:static;
    padding-top:0;
  }
  .cantine-order-table td:last-child{
    border-bottom:0;
    padding-bottom:0;
  }
  .cantine-order-select{
    min-width:0;
    width:100%;
    min-height:48px;
    font-size:16px;
  }
  .cantine-order-day{
    gap:10px;
  }
  .cantine-order-day__quick{
    width:100%;
    min-height:42px;
    font-size:.78rem;
  }
  .cantine-order-day__meta{
    max-width:none;
  }
  .cantine-order-combo,
  .cantine-order-price{
    justify-content:flex-start;
    min-height:42px;
    font-size:.9rem;
  }
  .cantine-order-summary__status{
    font-size:.95rem;
  }
  .cantine-order-visual{
    padding:18px;
    gap:18px;
  }
  .cantine-order-visual__media{
    display:none !important;
    min-height:240px;
    padding:12px;
  }
  .cantine-order-visual__meta{
    font-size:1rem;
  }
  .cantine-order-preview__hint{
    left:12px;
    right:12px;
    bottom:12px;
    font-size:.84rem;
  }
  .cantine-order-mobile-menu{
    position:fixed;
    right:16px;
    bottom:16px;
    z-index:1200;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:14px 18px;
    border:0;
    border-radius:999px;
    background:var(--brand-900);
    color:#fff;
    font-weight:800;
    box-shadow:0 18px 28px rgba(13,91,74,.26);
  }
}

/* Mobile stability for the Cantine order page.
   This block intentionally comes last because this file contains older layout
   generations above. */
@media (max-width: 640px){
  .cantine-order-page,
  .cantine-order-page *{
    box-sizing:border-box;
  }
  .cantine-order-page{
    width:100%;
    max-width:100%;
    overflow-x:hidden;
    gap:12px;
  }
  .cantine-order-page > .section-card,
  .cantine-order-page .section-card{
    width:100%;
    max-width:100%;
    min-width:0;
    padding:16px;
    border-radius:18px;
  }
  .cantine-order-page .portal-stack{
    gap:12px;
  }
  .cantine-order-page .section-head{
    margin-bottom:8px;
    gap:8px;
  }
  .cantine-order-page .section-head h1,
  .cantine-order-page .section-head h2{
    line-height:1.15;
  }
  .cantine-order-top{
    display:grid;
    grid-template-columns:1fr;
    gap:12px;
  }
  .cantine-context-help{
    justify-self:start;
  }
  .cantine-context-help__panel{
    left:0;
    right:auto;
    width:min(290px, calc(100vw - 40px));
  }
  .cantine-admin-order-panel{
    gap:12px;
  }
  .cantine-admin-order-form,
  .cantine-admin-order-form .full,
  .cantine-admin-user-field{
    display:grid;
    width:100%;
    max-width:100%;
    min-width:0;
  }
  .cantine-admin-user-select{
    width:100%;
    max-width:100%;
    min-width:0;
    height:auto;
    min-height:52px;
    padding:0 42px 0 14px;
    border-radius:15px;
    font-size:16px;
  }
  .cantine-admin-order-panel .mini-actions{
    display:grid;
    grid-template-columns:1fr;
    gap:8px;
    width:100%;
  }
  .cantine-admin-order-panel .mini-actions .mini-btn{
    width:100%;
    max-width:100%;
    min-width:0;
    justify-content:flex-start;
    border-radius:14px;
    min-height:38px;
    padding:9px 12px;
    white-space:normal;
    overflow-wrap:anywhere;
    text-align:left;
  }
  .cantine-order-page .mini-btn,
  .cantine-order-page .portal-btn{
    max-width:100%;
    min-width:0;
    white-space:normal;
    overflow-wrap:anywhere;
  }
  .cantine-week-grid{
    display:grid;
    grid-template-columns:1fr;
    gap:12px;
    width:100%;
    overflow:visible;
  }
  .cantine-week-card{
    width:100%;
    max-width:100%;
    min-width:0;
    padding:14px;
    border-radius:18px;
    gap:11px;
    overflow:hidden;
  }
  .cantine-week-card__top{
    display:grid;
    grid-template-columns:1fr;
    gap:8px;
    width:100%;
  }
  .cantine-week-card__badges{
    width:100%;
    min-width:0;
    gap:6px;
  }
  .cantine-week-card__badge,
  .cantine-week-card__chip,
  .cantine-week-card__timer{
    max-width:100%;
    min-width:0;
    white-space:normal;
    text-align:center;
    line-height:1.25;
  }
  .cantine-week-card__timer{
    width:100%;
    min-height:38px;
    padding:8px 10px;
    display:flex;
  }
  .cantine-week-card__title,
  .cantine-week-card__meta{
    min-width:0;
    overflow-wrap:anywhere;
  }
  .cantine-week-card__actions{
    width:100%;
  }
  .cantine-week-card__actions .mini-btn{
    width:100%;
    max-width:100%;
    min-width:0;
    min-height:42px;
    border-radius:14px;
    padding:10px 12px;
    text-align:center;
    line-height:1.2;
    white-space:normal;
    overflow-wrap:anywhere;
  }
  .cantine-order-visual{
    grid-template-columns:1fr;
    padding:14px;
    gap:12px;
  }
  .cantine-order-visual__content h2{
    font-size:1.45rem;
  }
  .cantine-order-visual__media{
    display:none !important;
    min-height:220px;
    padding:8px;
    border-radius:16px;
  }
  .cantine-order-table-shell{
    width:100%;
    max-width:100%;
    overflow:visible;
  }
  .cantine-order-table{
    width:100%;
    min-width:0;
    max-width:100%;
    table-layout:auto;
  }
  .cantine-order-table tr{
    width:100%;
    max-width:100%;
    padding:14px;
    border-radius:18px;
  }
  .cantine-order-table td,
  .cantine-order-table th,
  .cantine-order-table td:first-child{
    position:static;
    width:100% !important;
    max-width:100%;
    min-width:0;
    box-shadow:none;
  }
  .cantine-order-day{
    width:100%;
    max-width:100%;
    min-width:0;
  }
  .cantine-order-select,
  .cantine-order-combo,
  .cantine-order-price,
  .cantine-order-state{
    width:100%;
    max-width:100%;
    min-width:0;
  }
  .cantine-order-side,
  .cantine-order-summary--side{
    position:static;
    width:100%;
    max-width:100%;
    min-width:0;
  }
  .cantine-order-summary__stats span,
  .cantine-order-summary__total,
  .cantine-order-summary__day{
    width:100%;
    max-width:100%;
    min-width:0;
  }
}

/* Mobile menu image viewer */
@media (max-width: 720px){
  .cantine-order-panel{
    pointer-events:auto;
    background:rgba(8,31,27,.72);
    backdrop-filter:blur(8px);
  }
  .cantine-order-panel__window{
    left:8px !important;
    right:8px !important;
    top:8px !important;
    bottom:calc(env(safe-area-inset-bottom, 0px) + 8px) !important;
    width:auto !important;
    height:auto !important;
    max-height:none !important;
    display:grid;
    grid-template-rows:auto minmax(0,1fr);
    border-radius:22px;
    resize:none;
    overflow:hidden;
  }
  .cantine-order-panel__bar{
    cursor:default;
    display:grid;
    grid-template-columns:1fr;
    gap:8px;
    align-items:start;
    padding:9px;
  }
  .cantine-order-panel__grip{
    display:none;
  }
  .cantine-order-panel__title{
    min-width:0;
  }
  .cantine-order-panel__title strong{
    font-size:.9rem;
    line-height:1.2;
  }
  .cantine-order-panel__title span{
    display:none;
  }
  .cantine-order-panel__actions{
    display:grid;
    grid-template-columns:minmax(72px,.8fr) minmax(112px,1.25fr) minmax(72px,.8fr);
    gap:8px;
    width:100%;
  }
  .cantine-order-panel__action{
    min-width:0;
    min-height:38px;
    padding:7px 8px;
    border-radius:13px;
    font-size:.78rem;
    line-height:1;
    color:#fff;
    border-color:rgba(255,255,255,.22);
    background:rgba(255,255,255,.12);
    box-shadow:none;
    white-space:nowrap;
  }
  .cantine-order-panel__action[data-cantine-menu-shrink]{grid-column:1;grid-row:1}
  .cantine-order-panel__action[data-cantine-menu-fit]{grid-column:2;grid-row:1}
  .cantine-order-panel__action[data-cantine-menu-grow]{grid-column:3;grid-row:1}
  .cantine-order-panel__action[data-cantine-menu-rotate]{grid-column:1;grid-row:2}
  .cantine-order-panel__action[data-cantine-menu-reset]{grid-column:2;grid-row:2}
  .cantine-order-panel__action[data-cantine-menu-close]{grid-column:3;grid-row:2}
  .cantine-order-panel__action[data-cantine-menu-close]{
    background:rgba(255,255,255,.18);
  }
  .cantine-order-panel__body{
    display:flex;
    align-items:center;
    justify-content:center;
    min-height:0;
    overflow:auto;
    padding:8px;
    background:linear-gradient(180deg,#f8fbfa,#eef6f2);
    -webkit-overflow-scrolling:touch;
  }
  .cantine-order-panel__body .cantine-menu-image-stage{
    width:100%;
    max-width:100%;
    min-height:0;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:8px;
    border-radius:18px;
    transform-origin:center center;
  }
  .cantine-order-panel__body .cantine-menu-image-stage img{
    width:100%;
    min-width:0;
    max-width:100%;
    max-height:calc(100vh - 174px);
    max-height:calc(100dvh - 174px);
    object-fit:contain;
    border-radius:14px;
  }
  .cantine-order-panel__body .cantine-menu-image-note{
    max-width:55%;
    padding:.12em .32em;
    border-radius:7px;
    font-size:clamp(11px,3.4vw,18px) !important;
    line-height:1.05;
  }
  .cantine-order-panel__body .cantine-menu-image-notes{
    display:none;
  }
  .cantine-order-panel.is-rotated .cantine-order-panel__body{
    position:relative;
    overflow:auto;
  }
  .cantine-order-panel.is-rotated .cantine-order-panel__body .cantine-menu-image-stage{
    position:absolute;
    left:50%;
    top:50%;
    width:calc(100vh - 112px);
    width:calc(100dvh - 112px);
    height:calc(100vw - 12px);
    min-width:0;
    min-height:0;
    max-width:none;
    padding:0;
    transform:translate(-50%,-50%) rotate(90deg) scale(var(--cantine-menu-scale));
    transform-origin:center center;
    background:#fff;
  }
  .cantine-order-panel.is-rotated .cantine-order-panel__body .cantine-menu-image-stage img{
    width:100%;
    height:100%;
    min-width:0;
    max-width:100%;
    max-height:none;
    object-fit:contain;
  }
  .cantine-order-panel.is-rotated .cantine-order-panel__body .cantine-menu-image-notes{
    inset:0;
  }
}

@media (max-width: 420px){
  .cantine-order-panel__window{
    left:6px !important;
    right:6px !important;
    top:6px !important;
    bottom:calc(env(safe-area-inset-bottom, 0px) + 6px) !important;
    border-radius:20px;
  }
  .cantine-order-panel__bar{
    padding:8px;
  }
  .cantine-order-panel__actions{
    grid-template-columns:minmax(68px,.8fr) minmax(104px,1.25fr) minmax(68px,.8fr);
    gap:6px;
  }
  .cantine-order-panel__action{
    min-height:34px;
    padding:6px 7px;
    font-size:.72rem;
  }
  .cantine-order-panel__body .cantine-menu-image-stage img{
    max-height:calc(100vh - 158px);
    max-height:calc(100dvh - 158px);
  }
  .cantine-order-panel.is-rotated .cantine-order-panel__body .cantine-menu-image-stage{
    width:calc(100vh - 100px);
    width:calc(100dvh - 100px);
    height:calc(100vw - 10px);
  }
}

/* Mini-wiki des codes Cantine */
.cantine-code-wiki{
  margin-top:24px;
  padding:0;
  overflow:hidden;
  border:1px solid #D8E7E0;
  background:linear-gradient(145deg,#fff 0%,#F8FCFA 100%);
}
.cantine-code-wiki__summary{
  display:flex;
  align-items:center;
  gap:14px;
  min-height:82px;
  padding:18px 20px;
  cursor:pointer;
  list-style:none;
  user-select:none;
}
.cantine-code-wiki__summary::-webkit-details-marker{display:none}
.cantine-code-wiki__summary:focus-visible{
  outline:3px solid rgba(13,91,74,.22);
  outline-offset:-3px;
}
.cantine-code-wiki__icon{
  display:grid;
  place-items:center;
  flex:0 0 44px;
  width:44px;
  height:44px;
  border-radius:14px;
  color:#fff;
  background:linear-gradient(135deg,#0D5B4A,#23806A);
  box-shadow:0 8px 20px rgba(13,91,74,.18);
  font-size:1.25rem;
  font-weight:900;
}
.cantine-code-wiki__summary-copy{
  display:flex;
  flex:1;
  min-width:0;
  flex-direction:column;
  gap:3px;
}
.cantine-code-wiki__summary-copy strong{
  color:#173C34;
  font-size:1.08rem;
}
.cantine-code-wiki__summary-copy small{
  color:#60736D;
  line-height:1.4;
}
.cantine-code-wiki__action{
  flex:0 0 auto;
  padding:9px 13px;
  border:1px solid #C9DED6;
  border-radius:999px;
  color:#0D5B4A;
  background:#F3F9F7;
  font-size:.78rem;
  font-weight:800;
}
.cantine-code-wiki__action::after{
  content:"⌄";
  display:inline-block;
  margin-left:7px;
  transition:transform .2s ease;
}
.cantine-code-wiki[open] .cantine-code-wiki__action::after{transform:rotate(180deg)}
.cantine-code-wiki__body{
  padding:22px;
  border-top:1px solid #DFEBE6;
  background:
    radial-gradient(circle at 100% 0,rgba(220,122,34,.07),transparent 34%),
    #fff;
}
.cantine-code-wiki__intro{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(240px,.42fr);
  gap:20px;
  align-items:center;
  margin-bottom:18px;
}
.cantine-code-wiki__intro h2{margin:3px 0 5px;color:#173C34}
.cantine-code-wiki__intro p{margin:0;color:#60736D}
.cantine-code-wiki__example{
  padding:13px 15px;
  border:1px solid #F1D5B5;
  border-radius:14px;
  background:#FFF8F0;
}
.cantine-code-wiki__example>span{
  display:block;
  margin-bottom:6px;
  color:#8B4E07;
  font-size:.7rem;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.cantine-code-wiki__example strong{
  display:flex;
  align-items:center;
  gap:6px;
  color:#8B4E07;
}
.cantine-code-wiki__example b{
  padding:3px 7px;
  border-radius:7px;
  color:#fff;
  background:#A65D0D;
  font-size:.8rem;
}
.cantine-code-wiki__example small{display:block;margin-top:6px;color:#735538}
.cantine-code-wiki__filters{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-bottom:16px;
}
.cantine-code-wiki__filters button{
  min-height:36px;
  padding:7px 14px;
  border:1px solid #D5E5DF;
  border-radius:999px;
  color:#49625A;
  background:#fff;
  font:inherit;
  font-size:.8rem;
  font-weight:800;
  cursor:pointer;
  transition:.18s ease;
}
.cantine-code-wiki__filters button:hover{border-color:#7BB5A5;color:#0D5B4A}
.cantine-code-wiki__filters button.is-active{
  border-color:#0D5B4A;
  color:#fff;
  background:#0D5B4A;
  box-shadow:0 5px 12px rgba(13,91,74,.16);
}
.cantine-code-wiki__groups{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
}
.cantine-code-wiki__groups:has(.cantine-code-wiki__group[hidden]){
  grid-template-columns:1fr;
}
.cantine-code-wiki__group{
  overflow:hidden;
  border:1px solid #DDE9E4;
  border-radius:16px;
  background:#FBFDFC;
}
.cantine-code-wiki__group[hidden]{display:none}
.cantine-code-wiki__group header{
  display:flex;
  flex-direction:column;
  gap:2px;
  padding:12px 14px;
  border-bottom:1px solid #DFEBE6;
  background:#F1F8F5;
}
.cantine-code-wiki__group header span{color:#173C34;font-weight:900}
.cantine-code-wiki__group header small{color:#6B7E78;font-size:.72rem}
.cantine-code-wiki__group--main header{background:#FFF6EC}
.cantine-code-wiki__group--dessert header{background:#F7F5FB}
.cantine-code-wiki__list{padding:6px 12px}
.cantine-code-wiki__item{
  display:flex;
  align-items:center;
  gap:10px;
  min-height:43px;
  padding:7px 0;
  border-bottom:1px solid #E8F0ED;
}
.cantine-code-wiki__item:last-child{border-bottom:0}
.cantine-code-wiki__item strong{
  display:grid;
  place-items:center;
  flex:0 0 40px;
  min-height:28px;
  padding:3px 5px;
  border-radius:8px;
  color:#0D5B4A;
  background:#E5F3EE;
  font-size:.78rem;
}
.cantine-code-wiki__group--main .cantine-code-wiki__item strong{color:#8B4E07;background:#FFF0DF}
.cantine-code-wiki__group--dessert .cantine-code-wiki__item strong{color:#655078;background:#F0EBF6}
.cantine-code-wiki__item span{color:#405851;font-size:.82rem;font-weight:700}
.cantine-code-wiki__formulas{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  margin-top:16px;
}
.cantine-code-wiki__formulas article{
  display:flex;
  gap:11px;
  align-items:flex-start;
  padding:13px;
  border:1px solid #DDE9E4;
  border-radius:14px;
  background:#fff;
}
.cantine-code-wiki__formula-icon{
  display:grid;
  place-items:center;
  flex:0 0 30px;
  width:30px;
  height:30px;
  border-radius:10px;
  color:#fff;
  background:#23806A;
  font-size:.76rem;
  font-weight:900;
}
.cantine-code-wiki__formulas strong{color:#173C34;font-size:.82rem}
.cantine-code-wiki__formulas p{margin:3px 0 0;color:#60736D;font-size:.76rem;line-height:1.42}
.cantine-code-wiki__note{
  margin:14px 0 0;
  padding:11px 13px;
  border-left:4px solid #DC7A22;
  border-radius:0 10px 10px 0;
  color:#68451F;
  background:#FFF6EC;
  font-size:.8rem;
}
@media (max-width: 860px){
  .cantine-code-wiki__intro{grid-template-columns:1fr}
  .cantine-code-wiki__groups,
  .cantine-code-wiki__formulas{grid-template-columns:1fr}
}
@media (max-width: 560px){
  .cantine-code-wiki__summary{align-items:flex-start;padding:16px}
  .cantine-code-wiki__icon{flex-basis:38px;width:38px;height:38px;border-radius:12px}
  .cantine-code-wiki__action{display:none}
  .cantine-code-wiki__body{padding:16px}
  .cantine-code-wiki__filters{
    display:grid;
    grid-template-columns:repeat(2,1fr);
  }
  .cantine-code-wiki__filters button{width:100%}
}
