@layer components{.tfp-board{container-type:inline-size;margin:8px;padding:24px 16px;background:var(--surface);border:4px double #161616;outline:1.5px solid #161616;outline-offset:5px;transition:opacity .2s}.tfp-board.is-planning{opacity:.45}@media (min-width:600px){.tfp-board{padding:32px}}@media (prefers-reduced-motion:reduce){.tfp-board{transition:none}}.tfp-board__head{text-align:center;margin-bottom:12px}.tfp-board__title{margin:0;font-family:var(--font-display),Georgia,serif;font-size:var(--text-heading);font-weight:400;color:var(--accent)}.tfp-board__sub{margin:4px 0 0;font-size:14px;font-weight:700;text-transform:uppercase;color:var(--muted)}.tfp-board__empty{margin:0 auto 16px;max-width:320px;padding:16px;background:var(--accent);color:var(--on-accent);text-align:center;transform:rotate(-3deg)}.tfp-board__empty p{margin:0 0 10px;font-family:var(--font-display),Georgia,serif;font-size:22px}.tfp-board__example{min-height:44px;padding:0 20px;border:2px solid #161616;border-radius:999px;background:var(--surface);color:var(--ink);font:inherit;font-weight:700;cursor:pointer;touch-action:manipulation}.tfp-meals{display:grid;gap:20px}.tfp-meals[data-dim=true]{opacity:.3}@container (min-width: 560px){.tfp-meals{grid-template-columns:1fr 1fr;gap:24px 32px}}.tfp-meal__title{display:flex;align-items:center;gap:12px;margin:0 0 8px;font-family:var(--font-display),Georgia,serif;font-size:20px;font-weight:400;text-align:center}.tfp-meal__title:after,.tfp-meal__title:before{content:"";flex:1 1 auto;height:1px;background:var(--line)}.tfp-meal__empty{margin:0}.tfp-meal__empty,.tfp-meal__kcal{font-style:italic;color:var(--muted);font-size:16px}.tfp-meal__kcal{margin:6px 0 0}.tfp-rows{margin:0;padding:0;list-style:none}.tfp-row{padding:4px 0}.tfp-row__main{display:flex;align-items:baseline;gap:8px;min-height:44px}.tfp-row__name{flex:0 1 auto;min-width:min-content;overflow-wrap:break-word}.tfp-row__held{margin-inline-start:8px;font-size:12px;font-weight:700;text-transform:uppercase;color:var(--accent)}.tfp-row__leader{flex:1 1 24px;min-width:12px;border-bottom:2.5px dotted var(--leader);transform:translateY(-5px)}.tfp-row__grams{flex:0 0 auto;display:inline-flex;align-items:center;gap:2px}.tfp-row__hint{display:block;margin-top:-6px;font-size:14px;font-style:italic;color:var(--muted)}.tfp-row__error{display:block;font-size:14px;color:var(--accent)}.tfp-grams{min-width:44px;min-height:44px;padding:0 4px;border:0;background:transparent;color:var(--ink);font:inherit;font-weight:700;cursor:pointer;touch-action:manipulation}.tfp-grams:focus-visible,.tfp-grams:hover{text-decoration:underline;text-underline-offset:3px}.tfp-grams.is-invalid,.tfp-grams__input.is-invalid{outline:2px solid var(--accent)}.tfp-grams__input{width:5ch;min-width:5ch;min-height:44px;padding:0 4px;border:2px solid var(--ink);background:var(--paper);color:var(--ink);font:inherit;font-weight:700;text-align:right}.tfp-lock{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;border:0;background:transparent;color:var(--accent);cursor:pointer;touch-action:manipulation}.tfp-board__example:focus-visible,.tfp-grams:focus-visible,.tfp-grams__input:focus-visible,.tfp-lock:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.tfp-board__hint{margin:16px 0 0;font-size:14px;color:var(--muted)}.tfp-board__actions{margin-top:12px;text-align:center}.tfp-tally{margin:8px;padding:16px;background:var(--paper);border:1px solid var(--line)}.tfp-tally__head{margin:0 0 8px;font-family:var(--font-display),Georgia,serif;font-size:20px;font-weight:400}.tfp-tally__rows{margin:0;padding:0;list-style:none}.tfp-tally__row{display:flex;align-items:baseline;gap:8px;min-height:36px}.tfp-tally__label{display:inline-flex;align-items:center;gap:8px}.tfp-tally__dot{width:9px;height:9px;border-radius:50%}.tfp-tally__leader{flex:1 1 16px;border-bottom:2.5px dotted var(--leader);transform:translateY(-5px)}.tfp-tally__num{font-weight:700}.tfp-tally__gap{min-width:7ch;text-align:right;font-size:14px;font-weight:700;text-transform:uppercase;color:var(--accent)}.tfp-tally__gap.is-ok{color:var(--muted)}.tfp-verdict{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-top:14px}.tfp-stamp{display:inline-block;padding:6px 12px;border:3px solid var(--accent);color:var(--accent);font-size:14px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;transform:rotate(-6deg)}.tfp-stamp.is-not-yet{border:3px dashed var(--control);color:var(--muted);transform:rotate(-2deg)}@media (prefers-reduced-motion:reduce){.tfp-stamp,.tfp-stamp.is-not-yet{transform:none}}.tfp-status{flex:1 1 220px;margin:0}.tfp-status p{margin:0 0 6px}.tfp-fix{display:inline-flex;align-items:center;min-height:44px;padding:0;border:0;background:transparent;color:var(--accent);font:inherit;font-weight:700;text-decoration:underline;text-underline-offset:3px;cursor:pointer;touch-action:manipulation}.tfp-fix:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.tfp-minibar{position:sticky;bottom:8px;z-index:3;display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;margin:8px;padding:8px 12px;border-radius:8px;background:var(--accent);color:var(--on-accent);box-shadow:3px 3px 0 #161616;transition:opacity .2s}.tfp-minibar.is-hidden{opacity:0;pointer-events:none}@media (min-width:880px){.tfp-minibar{display:none}}@media (prefers-reduced-motion:reduce){.tfp-minibar{transition:none}}.tfp-minibar__word{font-size:13px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.tfp-minibar__macro{display:inline-flex;align-items:center;gap:5px;font-size:14px;font-weight:700}.tfp-minibar__dot{width:9px;height:9px;border-radius:50%;border:1.5px solid #ffffff}.tfp-minibar__link{display:none;align-items:center;min-height:44px;margin-inline-start:auto;color:var(--on-accent);font-weight:700}@media (min-width:440px){.tfp-minibar__link{display:inline-flex}}.tfp-state{margin:8px;padding:20px;border:3px dashed #161616;border-radius:18px;background:var(--surface)}.tfp-state h3{margin:0 0 6px;font-family:var(--font-display),Georgia,serif;font-size:22px;font-weight:400;color:var(--accent)}.tfp-state p{margin:0 0 8px}.tfp-state__retry{min-height:44px;padding:0 20px;border:2px solid #161616;border-radius:999px;background:var(--accent);color:var(--on-accent);font:inherit;font-weight:700;cursor:pointer;touch-action:manipulation}.tfp-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:clip;clip-path:inset(50%);white-space:nowrap}.tfp-tool{display:grid;gap:32px;overflow:clip}.tfp-tool__result{min-width:0}.tfp-tool__result .sk-result{margin-top:12px}@media (min-width:880px){.tfp-tool{grid-template-columns:340px 1fr}}.tfp-ticket{margin:32px 0;padding:24px;border:3px dashed #161616;border-radius:18px;background:var(--surface);display:grid;gap:14px}.tfp-ticket__tag{margin:0;font-size:14px;font-weight:700;text-transform:uppercase;color:var(--muted)}.tfp-ticket h2{margin:0;font-family:var(--font-display),Georgia,serif;font-size:var(--text-heading);font-weight:400}.tfp-ticket p{margin:0}.tfp-ticket__slip{padding:12px 16px;background:var(--paper);border:1px solid var(--line)}.tfp-ticket__slip-head{font-size:14px;font-weight:700;text-transform:uppercase;color:var(--muted)}.tfp-ticket__row{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.tfp-ticket__btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 24px;border-radius:999px;background:var(--accent);color:var(--on-accent);font-weight:700;text-decoration:none}.tfp-ticket__btn[aria-disabled=true]{opacity:.45;cursor:not-allowed}.tfp-ticket__btn:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.tfp-ticket__fine{font-size:14px;color:var(--muted)}@media print{.sk-banner,.sk-footer,.sk-header,.sk-hero,.sk-result .sk-btn,.tfp-board__actions,.tfp-board__hint,.tfp-check,.tfp-doc,.tfp-minibar,.tfp-ticket,[class*=sk-share]{display:none!important}.tfp-board,.tfp-tally{opacity:1!important;break-inside:avoid}.tfp-tool{display:block}}.tfp-board__example[aria-busy=true],.tfp-board__planning{cursor:progress;animation:tfp-busy 1.2s ease-in-out infinite}.tfp-board__note{margin:10px 0 0;font-size:14px}@keyframes tfp-busy{50%{opacity:.4}}@media (prefers-reduced-motion:reduce){.tfp-board__example[aria-busy=true],.tfp-board__planning{animation:none}}}