/* Zurich menu tile: Alfred's Kitchen, Quai Zurich Campus.
 *
 * Deliberately looks like the ETH menu tile (tiles/dailymenu) so the two read
 * as a pair. Scoped under .zurichmenu because it is a page inside the shared shell.
 */
.zurichmenu { --bg:#fff; --card:#fff; --card2:#f0f0f0; --txt:#333; --muted:#777;
        --accent:#42f5b6; --accent-hover:#4ffecc; --accent-text:#149d6e; --line:#ddd; }
.zurichmenu * { box-sizing:border-box; }
.zurichmenu { background:var(--bg); color:var(--txt);
       font:15px/1.45 'Segoe UI',Tahoma,Geneva,Verdana,sans-serif; }
.zurichmenu header { position:sticky; top:0; z-index:5; background:rgba(255,255,255,.95); backdrop-filter:blur(6px);
         border-bottom:1px solid var(--line); padding:12px 16px; display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.zurichmenu button { font:inherit; color:var(--txt); background:var(--card2);
         border:1px solid var(--line); border-radius:8px; padding:7px 11px; cursor:pointer; }
.zurichmenu button:hover { border-color:var(--accent); }
/* Day bar: every listed day, scrolling sideways when it does not fit. */
.daybar { display:flex; gap:4px; width:100%; overflow-x:auto; scrollbar-width:none;
          background:var(--card2); border:1px solid var(--line); border-radius:11px; padding:4px; }
.daybar::-webkit-scrollbar { display:none; }
.zurichmenu .day-btn { display:flex; flex-direction:column; align-items:center; gap:1px; flex:1 0 auto;
           border:none; background:none; border-radius:8px; padding:5px 10px; line-height:1.25; min-width:58px;
           transition:background .12s; }
.zurichmenu .day-btn.new-week { margin-left:10px; }
.zurichmenu .day-btn:hover { background:rgba(0,0,0,.05); border:none; }
.zurichmenu .day-btn.active { background:var(--accent); }
.zurichmenu .day-btn.active:hover { background:var(--accent-hover); }
.day-btn .d-label { font-weight:700; font-size:14px; color:var(--txt); }
.day-btn .d-date { font-size:11px; color:var(--muted); }
.day-btn.past .d-label { color:var(--muted); font-weight:600; }
.day-btn.today { box-shadow:inset 0 0 0 2px var(--accent); }
.day-btn.today .d-label { color:var(--accent-text); }
.day-btn.active .d-label { color:var(--txt); }
.day-btn.active .d-date { color:var(--accent-text); }
.controls { display:flex; flex-wrap:wrap; gap:10px; align-items:center; width:100%; }
.dietseg { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.zurichmenu .diet-btn { border-radius:999px; padding:5px 14px; font-size:13px; }
.zurichmenu .diet-btn.active { background:var(--accent); border-color:var(--accent); color:#333; font-weight:600; }
#status { color:var(--muted); margin-left:auto; font-size:13px; }
.zurichmenu main { padding:16px; display:flex; flex-direction:column; gap:10px; max-width:780px; margin:0 auto; }
.mensa { background:var(--card); border:1px solid var(--line); border-radius:12px; overflow:hidden;
         box-shadow:0 2px 5px rgba(0,0,0,0.08); }
.mensa > summary { margin:0; padding:12px 14px; font-size:15px; font-weight:600; cursor:pointer; list-style:none;
                   display:flex; justify-content:space-between; align-items:center; gap:8px; background:var(--card2); }
.mensa > summary::-webkit-details-marker { display:none; }
.mensa > summary::before { content:'▸'; color:var(--muted); transition:transform .15s; flex:none; }
.mensa[open] > summary::before { transform:rotate(90deg); }
.mensa > summary .title { flex:1; min-width:0; }
.mensa > summary .region { color:var(--muted); font-weight:400; font-size:12px; }
.mensa[open] > summary { border-bottom:1px solid var(--line); }
.meal { display:flex; gap:10px; padding:12px 14px; border-top:1px solid var(--line); }
.meal:first-of-type { border-top:none; }
.meal .body { min-width:0; flex:1; }
/* Rating star: grey outline when unrated, gold with the score inside when rated. */
.zurichmenu .rate { position:relative; flex:none; align-self:flex-start; width:36px; height:36px; padding:0;
       border:none; background:none; display:grid; place-items:center; }
.zurichmenu .rate:hover { border:none; }
.rate svg { position:absolute; inset:0; width:100%; height:100%; fill:none; stroke:#bbb; stroke-width:1.6;
            stroke-linejoin:round; }
.rate:hover svg { stroke:#f5c542; }
.rate.on svg { fill:#f5c542; stroke:#e0ac1f; }
.rate span { position:relative; top:1px; font-size:12px; font-weight:800; color:#5a4300; }
.cheap-section { border-color:var(--accent); }
.cheap-section > summary { background:#e6fbf3; }
.meal .line { font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--accent-text); font-weight:700;
              display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
.meal .tag { text-transform:none; letter-spacing:0; font-weight:600; font-size:10.5px; padding:1px 7px;
             border-radius:999px; background:var(--card2); color:var(--muted); }
.meal .tag-vegan, .meal .tag-vegetarian { background:#e6fbf3; color:var(--accent-text); }
.meal .tag-fish { background:#e8f1fb; color:#2f6fb0; }
.meal .name { font-weight:600; margin:1px 0 2px; }
.meal .desc { color:var(--muted); font-size:13px; }
.meal .note { color:var(--accent-text); font-size:12.5px; margin-top:3px; }
.meal .origin { color:var(--muted); font-size:12px; font-style:italic; margin-top:3px; }
.meal .price { margin-top:5px; font-size:12.5px; color:var(--txt); }
.meal .facts { margin-top:3px; font-size:12px; color:var(--muted); }
.meal .facts .sep { margin:0 6px; }
.meal .facts abbr { text-decoration:none; cursor:help; }
.times { padding:8px 14px; font-size:12.5px; color:var(--muted); border-bottom:1px solid var(--line); }
.times b { color:var(--txt); font-weight:600; margin-right:4px; }
.closed, .empty { padding:14px; color:var(--muted); font-size:13px; }
.source { text-align:center; font-size:12px; color:var(--muted); margin:4px 0 0; }
.source a { color:inherit; }
.err { color:#e53935; }
/* Rating dialog */
#rate-dialog { border:none; border-radius:14px; padding:18px; width:min(340px, calc(100vw - 32px));
               box-shadow:0 10px 40px rgba(0,0,0,.3); color:var(--txt); }
#rate-dialog::backdrop { background:rgba(0,0,0,.45); }
.rate-title { font-weight:700; font-size:16px; }
.rate-sub { color:var(--muted); font-size:13px; margin:2px 0 14px; }
.rate-grid { display:grid; grid-template-columns:repeat(5, 1fr); gap:8px; }
.zurichmenu .rate-num { padding:10px 0; font-weight:700; font-size:16px; }
.zurichmenu .rate-num.current { background:#f5c542; border-color:#e0ac1f; }
.rate-actions { display:flex; justify-content:space-between; gap:8px; margin-top:14px; }
.zurichmenu .rate-clear { color:#e53935; }
.zurichmenu .rate-clear:disabled { color:var(--muted); cursor:default; opacity:.6; }

/* Dark mode: the palette is all variables, so most of it is one redefinition. */
[data-theme="dark"] .zurichmenu { --bg:#1a1a1a; --card:#1f1f1f; --card2:#2a2a2a; --txt:#e2e2e2; --muted:#9a9a9a;
        --accent-text:#42f5b6; --line:#3a3a3a; }
[data-theme="dark"] .zurichmenu header { background:rgba(26,26,26,.95); }
[data-theme="dark"] .zurichmenu .day-btn:hover { background:rgba(255,255,255,.06); }
[data-theme="dark"] .zurichmenu .day-btn.active .d-label { color:#333; }
[data-theme="dark"] .zurichmenu .day-btn.active .d-date { color:#14684a; }
[data-theme="dark"] .zurichmenu .cheap-section > summary { background:#173a2e; }
[data-theme="dark"] .zurichmenu .meal .tag-vegan, [data-theme="dark"] .zurichmenu .meal .tag-vegetarian { background:#173a2e; }
[data-theme="dark"] .zurichmenu .meal .tag-fish { background:#1d2c3d; color:#7fb2e5; }
[data-theme="dark"] .zurichmenu .rate svg { stroke:#666; }
[data-theme="dark"] .zurichmenu .rate.on svg { fill:#f5c542; stroke:#e0ac1f; }
[data-theme="dark"] #rate-dialog { background:#1f1f1f; }
[data-theme="dark"] .zurichmenu .rate-num.current { background:#f5c542; border-color:#e0ac1f; color:#333; }
