:root{--color-primary:#f5b800;--color-primary-strong:#8a5f00;--color-primary-soft:#fff0b8;--color-bg:#fffcf0;--color-surface:#fff;--color-border:#ebdca0;--color-ink:#2b2208;--color-ink-muted:#6b5a2e;--color-danger:#b3261e;--wheel-1:#f5b800;--wheel-2:#ffe27a;--wheel-3:#f29a2e;--wheel-4:#fff0b8;--wheel-5:#e6a800;--wheel-6:#ffd04d;--wheel-7:#f7b267;--wheel-8:#ffeda0;--color-primary-deep:#d99a00;--color-cream:#fff7d9;--color-danger-soft:#fdecea;--color-overlay:#2b220880;--gradient-page:linear-gradient(180deg, #fff3c4 0%, #fffcf0 360px);--gradient-header:linear-gradient(135deg, #f5b800 0%, #ffd04d 100%);--gradient-card:linear-gradient(180deg, #fff 0%, #fffdf5 100%);--shadow-card:0 1px 2px #6b5a2e14, 0 6px 20px #8a5f001a;--shadow-hover:0 2px 4px #6b5a2e1a, 0 14px 30px #8a5f002e;--shadow-pointer:0 3px 3px #2b220859;--shadow-modal:0 20px 60px #2b220859;--radius-sm:.7rem;--radius-md:1.1rem;--radius-lg:1.6rem;--radius-pill:999px;--ease-out:cubic-bezier(.2, .8, .2, 1);font-synthesis:none;text-rendering:optimizelegibility;word-break:keep-all;color:var(--color-ink);background:var(--color-bg);font-family:system-ui,sans-serif;line-height:1.55}body{background:var(--color-bg) var(--gradient-page) no-repeat;min-width:320px;min-height:100vh;margin:0}h1,h2,h3{letter-spacing:-.01em}button{font:inherit}:focus-visible{outline:3px solid var(--color-primary-strong);outline-offset:2px}.primary-button,.secondary-button,.danger-button,.danger-outline-button{border-radius:var(--radius-pill);min-height:2.75rem;color:var(--color-ink);cursor:pointer;transition:transform .15s var(--ease-out), box-shadow .15s var(--ease-out), background-color .15s, border-color .15s;border:1px solid #0000;padding:.65rem 1.25rem;font-weight:700}.primary-button{background:var(--color-primary);box-shadow:0 3px 0 var(--color-primary-deep)}.secondary-button{border-color:var(--color-border);background:var(--color-surface);flex:none}.danger-button{border-color:var(--color-danger);background:var(--color-danger);color:var(--color-surface)}.danger-outline-button{border-color:var(--color-danger);background:var(--color-surface);color:var(--color-danger)}.danger-outline-button:hover:not(:disabled){background:var(--color-danger-soft)}.primary-button:hover:not(:disabled){box-shadow:0 4px 0 var(--color-primary-deep);transform:translateY(-1px)}.primary-button:active:not(:disabled){box-shadow:0 1px 0 var(--color-primary-deep);transform:translateY(2px)}.secondary-button:hover:not(:disabled){border-color:var(--color-primary-strong);background:var(--color-cream)}button:disabled{cursor:not-allowed;opacity:.6}a{color:var(--color-primary-strong)}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.rise-in{animation:rise-in .35s var(--ease-out) both}@media (prefers-reduced-motion:reduce){.rise-in{animation:none}.primary-button,.secondary-button,.danger-button,.danger-outline-button,.restaurant-card,.filter-chip,.tag-option{transition:none}.primary-button:hover:not(:disabled),.primary-button:active:not(:disabled),.restaurant-card:hover{transform:none}}.auth-card{box-sizing:border-box;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--gradient-card);width:min(100%,26rem);box-shadow:var(--shadow-card);animation:rise-in .35s var(--ease-out) both;margin:1rem auto 0;padding:2rem 1.75rem}.auth-emoji{background:var(--color-primary-soft);border-radius:50%;place-items:center;width:3.5rem;height:3.5rem;margin:0 auto .75rem;font-size:1.9rem;display:grid}.auth-card h1{text-align:center;margin:0;font-size:1.6rem}.auth-description{text-align:center;color:var(--color-ink-muted);margin:.4rem 0 0}.auth-form{gap:.75rem;margin-top:1.5rem;display:grid}.auth-field{gap:.4rem;font-weight:600;display:grid}.auth-field input{box-sizing:border-box;border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;min-height:2.75rem;color:var(--color-ink);font:inherit;padding:.65rem .75rem;font-weight:400}.auth-field input:hover{border-color:var(--color-primary-strong)}.auth-hint{color:var(--color-ink-muted);margin:-.35rem 0 0;font-size:.875rem}.auth-error{color:var(--color-danger);margin:0}.auth-form .primary-button{margin-top:.5rem}.auth-switch{color:var(--color-ink-muted);text-align:center;margin:1.25rem 0 0}.auth-switch-button{color:var(--color-primary-strong);cursor:pointer;background:0 0;border:0;padding:0;font-weight:700;text-decoration:underline}@media (prefers-reduced-motion:reduce){.auth-card{animation:none}}@media (width<=480px){.auth-card{padding:1.25rem 1rem}}.confirm-dialog{border-radius:var(--radius-lg);background:var(--color-surface);width:min(100% - 2rem,24rem);box-shadow:var(--shadow-modal);color:var(--color-ink);border:0;padding:1.5rem}.confirm-dialog[open]{animation:modal-in .25s var(--ease-out) both}.confirm-dialog::backdrop{background:var(--color-overlay)}.confirm-dialog h2{margin:0;font-size:1.25rem}.confirm-dialog p{margin:.75rem 0 0}.confirm-dialog-error{color:var(--color-danger)}.confirm-dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}@media (prefers-reduced-motion:reduce){.confirm-dialog[open]{animation:none}}.modal{box-sizing:border-box;border-radius:var(--radius-lg);background:var(--color-surface);width:min(100% - 2rem,34rem);max-height:calc(100dvh - 2rem);box-shadow:var(--shadow-modal);color:var(--color-ink);border:0;padding:0}.modal[open]{animation:modal-in .25s var(--ease-out) both}.modal-small{width:min(100% - 2rem,26rem)}.modal::backdrop{background:var(--color-overlay)}.modal-header{z-index:2;border-bottom:1px solid var(--color-border);background:var(--color-primary-soft);justify-content:space-between;align-items:center;gap:.75rem;padding:1rem 1.25rem;display:flex;position:sticky;top:0}.modal-header h2{overflow-wrap:anywhere;margin:0;font-size:1.3rem}.modal-close{border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);min-height:2.25rem;color:var(--color-ink);cursor:pointer;flex:none;padding:.3rem .85rem;font-weight:600}.modal-close:hover:not(:disabled){border-color:var(--color-primary-strong)}.modal-body{padding:1.25rem}@keyframes modal-in{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:none}}@media (width<=480px){.modal{width:calc(100% - 1rem)}.modal-body{padding:1rem}}@media (prefers-reduced-motion:reduce){.modal[open]{animation:none}}.filter-group{border:0;min-width:0;margin:0;padding:0}.filter-group legend{margin-bottom:.6rem;padding:0;font-weight:800}.filter-group-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.6rem;display:flex}.filter-group-title{font-weight:800}.filter-chips{flex-wrap:wrap;gap:.5rem;display:flex}.filter-chip{border:1.5px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);min-height:2.4rem;color:var(--color-ink);cursor:pointer;transition:background-color .15s, border-color .15s, transform .15s var(--ease-out);align-items:center;gap:.4rem;padding:.3rem .9rem;display:inline-flex}.filter-chip:hover{border-color:var(--color-primary-strong);background:var(--color-cream)}.filter-chip:has(input:checked){border-color:var(--color-primary-strong);background:var(--color-primary-soft);font-weight:700}.filter-chip:has(input:focus-visible){outline:3px solid var(--color-primary-strong);outline-offset:2px}.filter-chip input:focus-visible{outline:none}.filter-chip input{width:1.05rem;height:1.05rem;accent-color:var(--color-primary-strong);margin:0}.filter-hint{color:var(--color-ink-muted);margin:.5rem 0 0;font-size:.9rem}.restaurant-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,16rem),1fr));gap:1rem;margin:0;padding:0;list-style:none;display:grid}@media (width>=960px){.restaurant-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.restaurant-grid>li{min-width:0;animation:rise-in .35s var(--ease-out) both;display:flex}.restaurant-grid>li:nth-child(3n+2){animation-delay:50ms}.restaurant-grid>li:nth-child(3n+3){animation-delay:.1s}.restaurant-card{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--gradient-card);width:100%;box-shadow:inset 0 5px 0 var(--color-primary-soft), var(--shadow-card);color:var(--color-ink);text-align:left;cursor:pointer;transition:transform .2s var(--ease-out), box-shadow .2s var(--ease-out), border-color .2s;flex-direction:column;gap:.65rem;padding:1.1rem 1.1rem 1rem;display:flex}.restaurant-card:hover{border-color:var(--color-primary-strong);box-shadow:inset 0 5px 0 var(--color-primary), var(--shadow-hover);transform:translateY(-3px)}.restaurant-card-header{justify-content:space-between;align-items:flex-start;gap:.5rem;padding-top:.25rem;display:flex}.restaurant-card-name{overflow-wrap:anywhere;font-size:1.15rem;font-weight:800}.visit-badge{border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-ink-muted);flex:none;padding:.1rem .6rem;font-size:.8rem;font-weight:600}.visit-badge.visited{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-ink)}.restaurant-tags{flex-wrap:wrap;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.restaurant-tags>*{border-radius:var(--radius-pill);background:var(--color-primary-soft);color:var(--color-ink);padding:.1rem .65rem;font-size:.85rem;font-weight:600}.restaurant-card-meta{overflow-wrap:anywhere;gap:.25rem;font-size:.95rem;display:grid}.meta-label{color:var(--color-ink-muted);margin-right:.25rem;font-weight:600}.restaurant-card-memo{border-radius:var(--radius-sm);background:var(--color-cream);color:var(--color-ink-muted);overflow-wrap:anywhere;padding:.55rem .75rem;font-size:.9rem}@media (prefers-reduced-motion:reduce){.restaurant-grid>li{animation:none}}.restaurant-detail{gap:1.1rem;display:grid}.detail-list{gap:.7rem;margin:0;display:grid}.detail-list div{grid-template-columns:4rem minmax(0,1fr);gap:.5rem;display:grid}.detail-list dt{color:var(--color-ink-muted);font-weight:600}.detail-list dd{overflow-wrap:anywhere;white-space:pre-wrap;margin:0}.detail-memo dd{border-radius:var(--radius-sm);background:var(--color-cream);padding:.7rem .9rem}.detail-actions{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;display:flex}.restaurant-form{gap:1.1rem;display:grid}.memo-count{color:var(--color-ink-muted);justify-self:end;font-size:.85rem;font-weight:400}.form-field{gap:.45rem;font-weight:600;display:grid}.required-label{color:var(--color-ink-muted);font-size:.8rem;font-weight:400}.restaurant-form input:not([type=checkbox]),.restaurant-form textarea,.restaurant-form select{box-sizing:border-box;border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;min-height:2.75rem;color:var(--color-ink);font:inherit;padding:.65rem .85rem;transition:border-color .15s}.restaurant-form input:not([type=checkbox]):hover,.restaurant-form textarea:hover,.restaurant-form select:hover{border-color:var(--color-primary-strong)}.restaurant-form textarea{resize:vertical}.restaurant-form input[type=checkbox]{width:1.1rem;height:1.1rem;accent-color:var(--color-primary-strong)}.tag-field{border:0;min-width:0;margin:0;padding:0}.tag-field legend,.custom-tag-field>label{margin-bottom:.55rem;font-weight:600}.tag-options{flex-wrap:wrap;gap:.55rem;display:flex}.tag-option{border:1.5px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-ink);cursor:pointer;align-items:center;gap:.4rem;padding:.45rem .85rem;transition:background-color .15s,border-color .15s;display:inline-flex}.tag-option:hover{border-color:var(--color-primary-strong);background:var(--color-cream)}.tag-option:has(input:checked){border-color:var(--color-primary-strong);background:var(--color-primary-soft);font-weight:700}.tag-option:has(input:focus-visible){outline:3px solid var(--color-primary-strong);outline-offset:2px}.tag-chip{align-items:center;gap:.25rem;display:inline-flex}.tag-add-button,.tag-edit-toggle,.tag-delete-button{border-radius:var(--radius-pill);background:var(--color-surface);cursor:pointer;min-height:2.25rem;padding:.35rem .7rem}.tag-add-button{border:1.5px dashed var(--color-primary-strong);color:var(--color-primary-strong);font-weight:700}.tag-add-button:hover{background:var(--color-primary-soft)}.tag-edit-toggle{border:1px solid var(--color-border);color:var(--color-ink);margin-bottom:.55rem;font-size:.9rem}.tag-edit-toggle[aria-pressed=true]{border-color:var(--color-primary-strong);background:var(--color-primary-soft);font-weight:700}.tag-edit-hint{color:var(--color-ink-muted);margin:0 0 .55rem;font-size:.9rem}.tag-delete-button{border:1px solid var(--color-danger);color:var(--color-danger);font-size:.85rem;font-weight:700}.tag-delete-button:hover{background:var(--color-danger-soft)}.tag-add-controls{flex:14rem;gap:.5rem;min-width:0;display:inline-flex}.restaurant-form .tag-add-controls input{flex:auto;width:auto;min-width:0;min-height:2.25rem;padding:.35rem .7rem}.tag-add-controls .secondary-button{min-height:2.25rem;padding:.35rem .8rem}.checkbox-field{align-items:center;gap:.5rem;display:flex}.form-message{margin:0}.error-message{color:var(--color-danger)}.success-message{border-radius:var(--radius-sm);background:var(--color-primary-soft);color:var(--color-ink);padding:.5rem .8rem;font-weight:600}.form-actions{flex-wrap:wrap;gap:.5rem;display:flex}.form-actions .primary-button{flex:12rem}.tag-option input:focus-visible{outline:none}.restaurants-page{gap:1.5rem;display:grid}.list-filters{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--gradient-card);box-shadow:var(--shadow-card);animation:rise-in .35s var(--ease-out) both;gap:1.25rem;padding:1.25rem 1.5rem;display:grid}@media (width>=720px){.list-filters{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}}.section-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.section-heading h1{align-items:baseline;gap:.5rem;margin:0;font-size:1.45rem;display:flex}.count-label{border-radius:var(--radius-pill);background:var(--color-primary-soft);color:var(--color-ink);padding:.05rem .65rem;font-size:.95rem;font-weight:700}.page-notice{border-radius:var(--radius-sm);background:var(--color-primary-soft);color:var(--color-ink);margin:0 0 1rem;padding:.7rem 1rem;font-weight:600}.empty-state{border:2px dashed var(--color-border);border-radius:var(--radius-md);background:var(--color-cream);color:var(--color-ink-muted);text-align:center;padding:2rem 1rem}.empty-state-icon{margin-bottom:.25rem;font-size:2.2rem;display:block}.empty-state p{margin:.25rem 0}.empty-state button{margin-top:.75rem}@media (prefers-reduced-motion:reduce){.list-filters{animation:none}}.wheel{width:min(100%,22rem);margin:0 auto;padding-top:1.1rem;position:relative}.wheel-disc{width:100%;height:auto;box-shadow:0 0 0 4px var(--color-ink), 0 0 0 9px var(--color-primary), var(--shadow-hover);border-radius:50%;transition-property:transform;transition-timing-function:cubic-bezier(.12,.7,.18,1);display:block}.wheel-slice{stroke:var(--color-surface);stroke-width:1.5px}.wheel-label{fill:var(--color-ink);text-anchor:middle;dominant-baseline:central;font-weight:700}.wheel-hub{fill:var(--color-surface);stroke:var(--color-ink);stroke-width:3px}.wheel-pointer{z-index:1;width:2.5rem;filter:drop-shadow(var(--shadow-pointer));position:absolute;top:0;left:50%;transform:translate(-50%)}.wheel-pointer path{fill:var(--color-primary);stroke:var(--color-ink);stroke-width:3px;stroke-linejoin:round}.tag-roulette{text-align:center;gap:1rem;display:grid}.tag-roulette-description{color:var(--color-ink-muted);margin:0;font-size:.95rem}.tag-roulette-wheel{width:min(100%,18rem);margin:0 auto}.tag-roulette-wheel .wheel{width:100%}.tag-roulette-status{color:var(--color-ink-muted);margin:0}.tag-roulette-result{border-radius:var(--radius-md);background:var(--color-primary-soft);color:var(--color-ink);margin:0;padding:.75rem 1rem;font-size:1.1rem}.tag-roulette-note{color:var(--color-ink-muted);margin-top:.25rem;font-size:.875rem;display:block}.tag-roulette-actions{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.tag-random-button:hover{background:var(--color-primary)}.tag-random-button{border:1.5px solid var(--color-primary-strong);border-radius:var(--radius-pill);background:var(--color-primary-soft);min-height:2.25rem;color:var(--color-ink);cursor:pointer;padding:.3rem .85rem;font-weight:700}.roulette-page{gap:1.5rem;display:grid}.roulette-conditions,.roulette-stage{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--gradient-card);box-shadow:var(--shadow-card);animation:rise-in .35s var(--ease-out) both;padding:1.75rem}.roulette-stage{text-align:center;justify-items:center;gap:1.1rem;animation-delay:80ms;display:grid}.roulette-stage h2{justify-self:start;margin:0;font-size:1.35rem}.roulette-conditions h1{margin:0;font-size:1.55rem}.heading-icon{margin-right:.35rem}.section-description{color:var(--color-ink-muted);margin:.35rem 0 0}.condition-fields{border:0;gap:1.5rem;min-width:0;margin-top:1.25rem;padding:0;display:grid}.condition-fields:disabled{opacity:.6}.error-text{color:var(--color-danger)}@media (width>=720px){.condition-fields{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);align-items:start}}@media (width<=480px){.roulette-conditions,.roulette-stage{padding:1.1rem}}.spin-button{width:min(100%,22rem);min-height:3.25rem;font-size:1.15rem}.roulette-result{width:100%}.result-card{border:2px solid var(--color-primary);border-radius:var(--radius-md);background:var(--color-primary-soft);box-shadow:var(--shadow-card);color:var(--color-ink);animation:result-pop .45s var(--ease-out) both;padding:1.25rem 1rem}.result-card.confirmed{border-color:var(--color-ink);background:var(--color-primary)}.result-eyebrow{margin:0;font-weight:700}.result-card h3{overflow-wrap:anywhere;margin:.25rem 0;font-size:1.8rem}.result-meta,.result-memo{margin:.25rem 0 0}.result-memo{border-radius:var(--radius-sm);background:var(--color-surface);padding:.35rem .8rem;display:inline-block}@keyframes result-pop{0%{opacity:0;transform:scale(.92)}60%{transform:scale(1.03)}to{opacity:1;transform:none}}.spin-actions{flex-wrap:wrap;justify-content:center;gap:.6rem;width:100%;display:flex}.spin-hint{color:var(--color-ink-muted);margin:0;font-size:.9rem}.roulette-stage .empty-state{box-sizing:border-box;border:2px dashed var(--color-border);border-radius:var(--radius-md);background:var(--color-cream);width:100%;color:var(--color-ink-muted);padding:1.5rem 1rem}.roulette-stage .empty-state p{margin:.25rem 0}.roulette-stage .empty-state .primary-button,.roulette-stage .empty-state .secondary-button{margin-top:.75rem}.link-button{box-sizing:border-box;align-items:center;text-decoration:none;display:inline-flex}.last-candidate{color:var(--color-ink);font-weight:600}@media (prefers-reduced-motion:reduce){.roulette-conditions,.roulette-stage,.result-card{animation:none}}.app-header{border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg);background:var(--gradient-header);box-shadow:var(--shadow-card);color:var(--color-ink)}.app-header-inner,.app-shell{width:min(100% - 2rem,72rem);margin:0 auto}.app-header-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:1rem 0;display:flex}.app-name{color:var(--color-ink);letter-spacing:-.02em;align-items:center;gap:.5rem;margin:0;font-size:1.4rem;font-weight:800;display:flex}.app-name-icon{background:var(--color-surface);width:2.4rem;height:2.4rem;box-shadow:var(--shadow-card);border-radius:50%;place-items:center;font-size:1.35rem;display:grid}.app-shell{padding:1.75rem 0 3.5rem}.app-header-actions{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;display:flex}.app-nav{border-radius:var(--radius-pill);background:var(--color-primary-soft);gap:.25rem;padding:.25rem;display:flex}.app-nav-link{border-radius:var(--radius-pill);color:var(--color-ink);border:1px solid #0000;padding:.45rem 1rem;font-weight:600;text-decoration:none;transition:background-color .15s}.app-nav-link:hover{background:var(--color-cream)}.app-nav-link[aria-current=page]{background:var(--color-surface);box-shadow:var(--shadow-card);font-weight:800}.app-user{align-items:center;gap:.5rem;display:flex}.app-username{color:var(--color-ink);font-weight:600}.app-logout{border:1px solid var(--color-ink);border-radius:var(--radius-pill);min-height:2.25rem;color:var(--color-ink);cursor:pointer;background:0 0;padding:.3rem .9rem;font-weight:600;transition:background-color .15s}.app-logout:hover:not(:disabled){background:var(--color-surface)}.app-header :focus-visible{outline-color:var(--color-ink)}.app-error{width:min(100%,26rem);color:var(--color-danger);margin:0 auto}@media (prefers-reduced-motion:reduce){.app-nav-link,.app-logout{transition:none}}
