:root{--green: #00a276;--green-light: #e6f7f3;--yellow: #f5a623;--red: #d0021b;--text: #1a1a1a;--text-muted: #666;--border: #e0e0e0;--card-bg: #fff;--page-bg: #f5f5f5;--radius: 8px;--shadow: 0 1px 4px rgba(0, 0, 0, .08);font-family:system-ui,-apple-system,sans-serif;color:var(--text);background:var(--page-bg)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}.app{max-width:800px;margin:0 auto;padding:0 1rem 3rem}.app-header{background:var(--green);color:#fff;padding:1.5rem 1rem 1.25rem;margin:0 -1rem 1.5rem;text-align:center}.app-header h1{font-size:1.6rem;font-weight:700;letter-spacing:-.01em}.app-header__sub{font-size:.9rem;opacity:.85;margin-top:.2rem}.app-main{display:flex;flex-direction:column;gap:1.5rem}.app-footer{text-align:center;font-size:.8rem;color:var(--text-muted);margin-top:2.5rem}.app-footer a{color:var(--green)}.canteen-nav{display:flex;gap:.5rem;flex-wrap:wrap}.canteen-nav__btn{flex:1;min-width:0;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem .75rem;font-size:.85rem;font-weight:600;color:var(--text-muted);cursor:pointer;transition:background .15s,color .15s,border-color .15s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.canteen-nav__btn:hover{border-color:var(--green);color:var(--green)}.canteen-nav__btn--active{background:var(--green);border-color:var(--green);color:#fff}.day-nav{display:flex;align-items:center;justify-content:space-between;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem .75rem;box-shadow:var(--shadow)}.day-nav__arrow{background:none;border:none;font-size:1.8rem;line-height:1;color:var(--green);cursor:pointer;padding:0 .5rem}.day-nav__arrow:disabled{color:var(--border);cursor:default}.day-nav__label{display:flex;align-items:center;gap:.5rem}.day-nav__date{font-weight:600;font-size:1rem}.day-nav__badge{background:var(--green);color:#fff;font-size:.7rem;font-weight:600;padding:.15rem .5rem;border-radius:999px;text-transform:uppercase;letter-spacing:.04em}.day-nav__badge--none{background:var(--text-muted)}.message{text-align:center;color:var(--text-muted);padding:2rem}.message--error{color:var(--red)}.menu-group__title{font-size:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:.75rem}.menu-group__items{display:flex;flex-direction:column;gap:.75rem}.meal-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;box-shadow:var(--shadow)}.meal-card__header{display:flex;flex-direction:column;gap:.4rem;margin-bottom:.5rem}.meal-card__name{font-size:1rem;font-weight:600;line-height:1.3}.meal-card__meta{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.meal-card__price{font-size:.85rem;font-weight:600;color:var(--text-muted)}.meal-card__tl{font-size:.75rem;font-weight:600;padding:.15rem .5rem;border-radius:999px}.tl--green{background:#d4f5e9;color:#007a56}.tl--yellow{background:#fef3d0;color:#9a6400}.tl--red{background:#fde8e8;color:#b00020}.badge{font-size:.72rem;font-weight:600;padding:.15rem .45rem;border-radius:999px;letter-spacing:.02em}.badge--vegan{background:#c8f5e6;color:#064}.badge--veg{background:#e2f5c8;color:#3a6600}.badge--klima{background:#c8e8f5;color:#046}.meal-card__name-btn{background:none;border:none;padding:0;font:inherit;font-size:1rem;font-weight:600;line-height:1.3;color:var(--text);cursor:pointer;text-align:left;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:2px;transition:text-decoration-color .15s}.meal-card__name-btn:hover{text-decoration-color:var(--green);color:var(--green)}.meal-card__review-preview{display:flex;align-items:flex-start;gap:.4rem;background:var(--green-light);border-left:3px solid var(--green);border-radius:0 var(--radius) var(--radius) 0;padding:.5rem .65rem;margin-top:.65rem;font-style:normal}.meal-card__review-text{font-size:.82rem;color:var(--text);line-height:1.4;word-break:break-word}.review-stars{display:inline-flex;flex-shrink:0;gap:0}.meal-card__allergens{font-size:.75rem;color:var(--text-muted);margin-bottom:.75rem}.meal-card__ratings{border-top:1px solid var(--border);padding-top:.75rem;margin-top:.25rem}.meal-card__ratings-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.meal-card__rating-info{display:flex;flex-direction:column;gap:.2rem}.meal-card__rating-line{display:flex;align-items:center;gap:.4rem;font-size:.82rem}.meal-card__rating-label{color:var(--text-muted);min-width:3.5rem}.meal-card__avg-display{display:flex;align-items:center;gap:.25rem}.meal-card__avg-text{color:var(--text-muted);font-size:.78rem}.meal-card__no-ratings{font-style:italic;color:var(--text-muted)}.meal-card__rate-btn{flex-shrink:0;background:var(--green);color:#fff;border:none;border-radius:var(--radius);padding:.4rem .9rem;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .15s}.meal-card__rate-btn:hover:not(:disabled){background:#008562}.meal-card__rate-btn--done,.meal-card__rate-btn:disabled{background:var(--green-light);color:var(--green);cursor:default}.star{background:none;border:none;line-height:1;color:var(--border);padding:0;transition:color .1s,transform .1s}.star--filled{color:var(--yellow)}.star--sm{font-size:1rem;cursor:default}.star--lg{font-size:2.2rem;cursor:pointer}.star--lg:hover{color:var(--yellow);transform:scale(1.15)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal{background:var(--card-bg);border-radius:var(--radius);box-shadow:0 8px 32px #0000002e;padding:1.75rem 1.5rem 1.5rem;width:100%;max-width:360px;position:relative}.modal__close{position:absolute;top:.75rem;right:.9rem;background:none;border:none;font-size:1.5rem;line-height:1;color:var(--text-muted);cursor:pointer}.modal__close:hover{color:var(--text)}.modal__title{font-size:1.1rem;font-weight:700;margin-bottom:.4rem}.modal__meal-name{font-size:.9rem;color:var(--text-muted);margin-bottom:1.25rem;line-height:1.4}.modal__stars{display:flex;justify-content:center;gap:.25rem;margin-bottom:1rem}.modal__review-field{position:relative;margin-bottom:1.25rem}.modal__textarea{width:100%;padding:.6rem .75rem;border:1px solid var(--border);border-radius:var(--radius);font:inherit;font-size:.88rem;resize:vertical;line-height:1.5;color:var(--text);background:var(--page-bg)}.modal__textarea:focus{outline:none;border-color:var(--green)}.modal__char-count{position:absolute;bottom:.4rem;right:.5rem;font-size:.72rem;color:var(--text-muted);pointer-events:none}.modal__char-count--warn{color:var(--red)}.modal--reviews{max-width:480px;max-height:80vh;overflow-y:auto}.reviews-empty{color:var(--text-muted);font-style:italic;text-align:center;padding:1rem 0}.reviews-list{list-style:none;display:flex;flex-direction:column;gap:.75rem;margin-top:.5rem}.review-item{border:1px solid var(--border);border-radius:var(--radius);padding:.75rem}.review-item__header{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem}.review-item__date{font-size:.75rem;color:var(--text-muted)}.review-item__text{font-size:.88rem;line-height:1.5;word-break:break-word}.modal__actions{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.modal__actions-right{display:flex;gap:.5rem}.modal__btn{border:none;border-radius:var(--radius);padding:.5rem 1.1rem;font-size:.9rem;font-weight:600;cursor:pointer}.modal__btn--cancel{background:var(--border);color:var(--text)}.modal__btn--cancel:hover{background:#ccc}.modal__btn--submit{background:var(--green);color:#fff}.modal__btn--submit:hover:not(:disabled){background:#008562}.modal__btn--submit:disabled{opacity:.45;cursor:default}.modal__btn--delete{background:none;color:var(--red);border:1px solid var(--red)}.modal__btn--delete:hover:not(:disabled){background:#fde8e8}.modal__thanks{text-align:center;font-size:1rem;font-weight:600;color:var(--green);padding:1rem 0}.modal__thanks--deleted{color:var(--text-muted)}@media (min-width: 600px){.meal-card__header{flex-direction:row;justify-content:space-between;align-items:flex-start}.meal-card__name{flex:1}.meal-card__meta{justify-content:flex-end;text-align:right;max-width:200px}}
