:root{color-scheme:light;--bg:#fffaf0;--surface:#ffffff;--surface-2:#fff3cf;--text:#2e2318;--muted:#7b6a55;--border:#f0e2bf;--primary:#f6b80b;--primary-strong:#e3a300;--primary-soft:#ffe58a;--primary-text:#2e2318;--accent:#9a5400;--tomato:#c8412f;--free:#2f7d4f;--mid:#a26900;--hard:#d2581a;--extreme:#c8412f;--warn-bg:#fff4d6;--ok-bg:#eaf6ee;--err-bg:#fdeceb;--radius:14px;--shadow:0 1px 2px rgba(80,55,10,0.06),0 4px 14px rgba(80,55,10,0.06);--serif:"Noto Serif TC","Songti TC","PMingLiU",serif}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:Noto Sans TC,system-ui,-apple-system,Segoe UI,Microsoft JhengHei,sans-serif;line-height:1.65}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.container{max-width:1080px;margin:0 auto;padding:0 16px}.site-header{background:var(--primary);color:var(--primary-text)}.site-header .container{display:flex;align-items:center;justify-content:space-between;height:60px;gap:12px}.site-header:after{content:"";display:block;height:8px;background:repeating-linear-gradient(90deg,var(--tomato) 0 12px,#fff 12px 24px);opacity:.85}.brand{display:flex;align-items:center;gap:8px;font-family:var(--serif);font-weight:900;font-size:21px;color:var(--primary-text);letter-spacing:.5px}.brand:hover{text-decoration:none}.brand small{font-family:inherit;font-weight:600;font-size:13px;opacity:.75}.site-header nav a{color:var(--primary-text);font-weight:600}.site-header nav{gap:16px}.site-footer{color:var(--muted);font-size:13px;padding:32px 16px;border-top:1px dashed var(--border);margin-top:24px}main{padding:24px 16px 48px}h1{font-weight:900;font-size:28px;line-height:1.35;margin:0 0 8px}h1,h2{font-family:var(--serif)}h2{font-weight:700;font-size:20px;margin:24px 0 8px}.muted{color:var(--muted)}.small{font-size:13px}.hero{position:relative;overflow:hidden;background:var(--surface-2);border:1px solid var(--border);border-radius:20px;padding:28px 24px;margin-bottom:8px}.hero:before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(246,184,11,.28) 1.5px,transparent 0);background-size:18px 18px;pointer-events:none}.hero>*{position:relative}.hero h1{font-size:32px}.hero h1 mark{background:linear-gradient(transparent 58%,var(--primary-soft) 58%);color:inherit;padding:0 2px}.hero p{max-width:640px;margin:0}.hero-steps{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.hero-steps span{border:1px solid var(--border);border-radius:999px;padding:3px 12px;font-size:13px;font-weight:600}.card,.hero-steps span{background:var(--surface)}.card{border:1px solid var(--border);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.grid{display:grid;grid-gap:14px;gap:14px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.restaurant-card{display:flex;flex-direction:column;gap:6px;color:var(--text);border-top:4px solid var(--primary);transition:transform .12s,box-shadow .12s}.restaurant-card:hover{text-decoration:none;transform:translateY(-2px);box-shadow:0 6px 20px rgba(80,55,10,.12)}.restaurant-card .name{font-family:var(--serif);font-weight:700;font-size:17px}.row,.spread{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.spread{justify-content:space-between}.result-count{margin:4px 0 12px}.badge{display:inline-block;font-size:12px;font-weight:600;padding:1px 9px;border-radius:999px;border:1px solid;white-space:nowrap;background:var(--surface)}.badge.free{color:var(--free)}.badge.mid{color:var(--mid)}.badge.hard{color:var(--hard)}.badge.extreme{color:#fff;background:var(--extreme);border-color:var(--extreme)}.badge.neutral{color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 6px}.chip{display:inline-block;font-size:12px;padding:1px 9px;border-radius:999px;background:var(--primary-soft);color:var(--accent);white-space:nowrap}.screenshot{max-width:100%;border:1px solid var(--border,#e5dcc3);border-radius:10px;margin-top:8px}.search{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.search input[type=search]{flex:1 1 240px}label{display:block;font-size:14px;font-weight:600;margin-bottom:4px}input,select,textarea{width:100%;font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:8px 10px}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary);outline-offset:0;border-color:var(--primary-strong)}input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--primary-strong)}textarea{min-height:80px}.field{margin-bottom:14px}.fields-2{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.fields-2>*{min-width:0}.field>input,.field>select,.field>textarea{max-width:100%}select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:34px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%239a5400' stroke-width='2' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 12px center}.button,button{display:inline-block;font:inherit;font-weight:700;border:1px solid var(--primary-strong);background:var(--primary);color:var(--primary-text);border-radius:10px;padding:9px 18px;cursor:pointer}.button:hover,button:hover:not(:disabled){background:var(--primary-strong);text-decoration:none}.button.secondary,button.secondary{background:var(--surface);color:var(--text);border-color:var(--border)}.button.secondary:hover,button.secondary:hover:not(:disabled){background:var(--surface-2)}button.danger{background:var(--extreme);border-color:var(--extreme);color:#fff}button:disabled{opacity:.5;cursor:not-allowed}.notice{border-radius:10px;padding:10px 14px;margin:12px 0}.notice.warn{background:var(--warn-bg);border-left:4px solid var(--primary-strong)}.notice.ok{background:var(--ok-bg);border-left:4px solid var(--free)}.notice.err{background:var(--err-bg);border-left:4px solid var(--tomato)}.fee-box{background:var(--surface-2);border:1px dashed var(--primary-strong);border-radius:12px;padding:12px;margin:12px 0}.fee-box .fee{font-family:var(--serif);font-size:23px;font-weight:900}table{width:100%;border-collapse:collapse;font-size:14px}td,th{text-align:left;padding:8px;border-bottom:1px solid var(--border);vertical-align:top}th{color:var(--muted);font-weight:600;background:var(--surface-2)}.table-wrap{overflow-x:auto}.layout-2{display:grid;grid-gap:24px;gap:24px;grid-template-columns:minmax(0,1fr)}@media (min-width:860px){.layout-2{grid-template-columns:minmax(0,1fr) 400px}}.layout-2>aside{border-top:4px solid var(--primary);align-self:start}.tappay-field{height:40px;border:1px solid var(--border);border-radius:10px;padding:0 10px;background:#fff}.admin-nav{display:flex;gap:16px;flex-wrap:wrap}.admin-nav a{font-weight:600}.alert-pulse{animation:pulse 1.2s infinite}@keyframes pulse{50%{opacity:.55}}.gate{max-width:380px;margin:48px auto;text-align:center}.gate form{text-align:left}@media (max-width:520px){.hero h1,h1{font-size:24px}.hero{padding:20px 16px}.brand small{display:none}}.calendar{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px;margin-bottom:14px}.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;font-family:var(--serif)}.cal-nav{padding:2px 12px;font-size:18px;line-height:1.4}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:4px;gap:4px}.cal-week{text-align:center;font-size:12px;color:var(--muted);padding:2px 0}.cal-day{aspect-ratio:1;min-height:34px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:8px;font-size:14px;font-weight:600;border:1px solid transparent;background:transparent;color:var(--text)}.cal-day.past{color:#cfc4ad;font-weight:400}.cal-day.open{background:#dff3e6;border-color:#9fd3b2;color:#1d5e37}.cal-day.full{background:#f1ede6;color:#b3a893;text-decoration:line-through;opacity:1}.cal-day.released{background:#fff;border-color:var(--border)}.cal-day.proxy{background:var(--primary-soft);border-color:var(--primary)}.cal-day.ask{background:#f7f3ea;border:1px dashed #cfc4ad;color:var(--muted);font-weight:400}.cal-day:hover:not(:disabled){filter:brightness(.95)}.cal-day.selected{outline:3px solid var(--text);outline-offset:1px}.cal-legend{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:8px;color:var(--muted)}.cal-legend .dot{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:4px;vertical-align:-1px;border:1px solid var(--border)}.dot.open{background:#dff3e6;border-color:#9fd3b2}.dot.full{background:#f1ede6}.dot.released{background:#fff}.dot.proxy{background:var(--primary-soft);border-color:var(--primary)}.dot.ask{background:#f7f3ea;border:1px dashed #cfc4ad}.day-info.open,.day-info.released{background:#eef8f1}.day-info.proxy{background:var(--primary-soft)}.day-info.ask{background:#f7f3ea}.slot-group{margin-bottom:8px}.slot-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:6px;gap:6px;margin-top:4px}.slot{padding:8px 0;border-radius:8px;border:1px solid var(--border);background:var(--surface);font-weight:600;font-size:14px}.slot.selected{background:var(--primary);color:#2b1d00}.slot.selected,.slot:hover{border-color:var(--primary-strong)}.day-info{border-radius:10px;padding:10px 12px;margin:0 0 12px;background:var(--surface-2);font-size:14px}.day-info .button{margin-top:8px}.restaurant-hero{aspect-ratio:16/7;border-radius:var(--radius);border:1px solid var(--border);margin-bottom:12px}.card-thumb,.restaurant-hero{width:100%;object-fit:cover;background:var(--surface-2)}.card-thumb{aspect-ratio:16/8;border-radius:10px;margin-bottom:4px}.pager{display:flex;justify-content:center;gap:8px;margin:20px 0}