:root{color:#4a3526;font-synthesis:none;text-rendering:optimizelegibility;background:#f8f3eb;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,Arial,sans-serif}*{box-sizing:border-box}html{background:#f8f3eb;min-width:320px}body{background:linear-gradient(#fbf7f1 0%,#f6efe6 100%);min-width:320px;min-height:100dvh;margin:0}body,button,input,select,textarea{font-family:inherit}button{color:#fff;cursor:pointer;touch-action:manipulation;background:#8b5e3c;border:none;border-radius:12px;min-height:46px;padding:12px 20px;font-size:16px}@media (hover:hover){button:hover:not(:disabled){filter:brightness(.94)}}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #d7a56c}button:disabled{cursor:not-allowed;opacity:.58}input,select,textarea{color:#3f2d22;background:#fff;border:1px solid #cfc1b5;border-radius:11px;width:100%;min-height:48px;padding:12px 13px;font-size:16px;display:block}textarea{resize:vertical;min-height:110px}::placeholder{color:#a49386}p{line-height:1.65}#root{width:100%}.app-shell{max-width:640px;padding:24px 24px calc(48px + env(safe-area-inset-bottom));margin:0 auto}.app-header{justify-content:center;align-items:center;gap:14px;margin:6px 0 24px;display:flex}.app-header h1{letter-spacing:.04em;margin:0;font-size:clamp(28px,8vw,38px);line-height:1.15}.brand-mark{color:#fff;letter-spacing:.08em;background:#7a4b2f;border-radius:18px;flex:0 0 58px;place-items:center;width:58px;height:58px;margin:0;font-family:Georgia,serif;font-size:22px;font-weight:700;display:grid;box-shadow:0 8px 18px #5e36202e}.app-subtitle{color:#806858;letter-spacing:.2em;margin:4px 0 0;font-size:15px}h2{margin:28px 0 16px;font-size:24px;line-height:1.3}h3{margin:18px 0 8px}hr{border:none;border-top:1px solid #dfd5ca;margin:28px 0}.network-banner,.inline-alert,.success-notice{border-radius:14px;padding:14px 16px}.network-banner{color:#684712;background:#fff5df;border:1px solid #d69637;margin-bottom:16px}.install-button{color:#6b4029;background:0 0;border:1px solid #7a4b2f;width:100%;margin:0 0 16px}.order-progress{background:#ffffffb8;border-radius:18px;grid-template-columns:repeat(4,1fr);gap:4px;margin:0 0 20px;padding:14px 8px;display:grid;box-shadow:0 3px 14px #4a35260f}.progress-step{color:#9a8a7e;text-align:center;justify-items:center;gap:5px;font-size:12px;font-weight:700;display:grid}.progress-number{background:#eee7df;border-radius:50%;place-items:center;width:28px;height:28px;display:grid}.progress-step.current{color:#5f3823}.progress-step.current .progress-number,.progress-step.completed .progress-number{color:#fff;background:#7a4b2f}.progress-step.completed{color:#6e8b63}.cake-card,.summary-card,.success-card,.line-identity-card{background:#fff;border:1px solid #7a4b2f14;border-radius:20px;margin:18px 0;padding:22px;box-shadow:0 5px 18px #4a352614}.cake-card h3{font-size:19px}.cake-category{color:#7d6a5d;margin-top:0}.cake-card-unavailable{background:#fffcf7}.cake-option-title{margin:18px 0 8px;font-weight:700}.cake-option-hint,.cake-order-notice{color:#7a6658;margin:8px 4px}.cake-flavor-options,.cake-size-options{flex-wrap:wrap;gap:10px;display:flex}.cake-flavor-button,.cake-size-button{flex:126px;justify-content:center;align-items:center;gap:8px;margin:0;display:inline-flex}.cake-flavor-button.selected,.cake-size-button.selected{outline-offset:2px;background:#633b25;outline:3px solid #d8a56c}.campaign-label{color:#fff;background:#7a4b2f;border-radius:999px;padding:3px 9px;font-size:13px;font-weight:700;display:inline-block}.campaign-warning{color:#9b4d2e;font-weight:700}.campaign-available{color:#477044;font-weight:700}.line-identity-card{text-align:center}.line-entry-card h2{margin-top:8px}.line-entry-eyebrow{color:#477044;letter-spacing:.12em;margin:0;font-size:14px;font-weight:800}.line-action-link{touch-action:manipulation;border-radius:12px;justify-content:center;align-items:center;width:100%;min-height:48px;margin-top:12px;padding:12px 20px;font-size:16px;font-weight:800;text-decoration:none;display:flex}.line-action-link.primary{color:#11391f;background:#06c755}.line-action-link.secondary{color:#315f37;background:#fff;border:1px solid #79bf91}.line-action-link:focus-visible{outline-offset:2px;outline:3px solid #d7a56c}.line-entry-hint{color:#725b4b;margin-bottom:0;font-size:14px}.line-entry-qr{display:none}.line-identity-confirmed{color:#315f37;text-align:center;background:#e8f4e6;border-radius:12px;margin:14px 0;padding:10px 14px}.loading-state{color:#725b4b;justify-content:center;align-items:center;gap:12px;min-height:110px;display:flex}.spinner{border:3px solid #dccabd;border-top-color:#7a4b2f;border-radius:50%;flex:none;width:24px;height:24px;animation:.8s linear infinite spin;display:inline-block}.spinner.small{vertical-align:-3px;border-width:2px;width:16px;height:16px;margin-right:8px}@keyframes spin{to{transform:rotate(360deg)}}.form-field{margin-bottom:18px}.form-field label{margin-bottom:6px;font-weight:700;display:block}.field-message{margin:-8px 0 16px;font-size:14px}.field-message.error,.error-message{color:#8e3025}.field-message.success{color:#3b6c3c}.field-message.status{color:#725b4b}.inline-alert.error-message{background:#fff1ef;border:1px solid #e3a39b;margin:14px 0}.inline-alert p{margin-top:0}.button-row{grid-template-columns:1fr 1.35fr;gap:10px;margin-top:22px;display:grid}.button-row button{margin:0}.primary-button{background:#6f432a;font-weight:700}.full-width{width:100%;margin:8px 0 0}.submitting-note{color:#725b4b;text-align:center}.success-card{text-align:center}.success-icon{color:#fff;background:#4f7f51;border-radius:50%;place-items:center;width:68px;height:68px;margin:4px auto 14px;font-size:36px;font-weight:800;display:grid}.success-lead{color:#6f5b4c}.order-id{letter-spacing:.03em;overflow-wrap:anywhere;background:#f4eee8;border-radius:10px;margin:8px 0 18px;padding:10px;font-size:19px;font-weight:800}.success-notice{text-align:left;background:#f7f1e8;margin:22px 0}.success-notice p{margin-bottom:0}@media (width<=480px){.app-shell{padding:18px 18px calc(36px + env(safe-area-inset-bottom))}.app-header{justify-content:flex-start}.brand-mark{border-radius:16px;flex-basis:52px;width:52px;height:52px}.app-header h1{white-space:nowrap;font-size:clamp(26px,8.2vw,32px)}.cake-card,.summary-card,.success-card,.line-identity-card{padding:19px}}@media (width>=600px){.line-entry-qr{border-top:1px solid #dfd5ca;margin-top:22px;padding-top:20px;display:block}.line-entry-qr img{background:#fff;border:1px solid #dfd5ca;border-radius:14px;width:184px;height:184px;padding:8px}.line-entry-qr p{color:#725b4b;margin:8px 0 0;font-size:14px}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:1.8s}}
