: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{--admin-brown:#54392b;--admin-green:#315f37;--admin-green-light:#e8f3e9;--admin-cream:#f8f2e9;--admin-border:#ded3c8;--admin-danger:#9a302d}.admin-login-page,.admin-layout{min-height:100vh;color:var(--admin-brown);background:var(--admin-cream)}.admin-login-page{padding:max(24px, env(safe-area-inset-top)) 20px max(24px, env(safe-area-inset-bottom));place-items:center;display:grid}.admin-login-card{border:1px solid var(--admin-border);background:#fff;border-radius:18px;width:min(100%,440px);padding:28px;box-shadow:0 14px 36px #54392b1f}.admin-login-card h1,.admin-header h1,.admin-content h2,.admin-content h3{color:var(--admin-brown);margin-top:6px}.admin-eyebrow{color:var(--admin-green);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:13px;font-weight:800}.admin-primary-button,.admin-logout-button,.admin-secondary-link,.admin-customer-link{touch-action:manipulation;border-radius:10px;justify-content:center;align-items:center;min-height:46px;font-size:16px;font-weight:750;text-decoration:none}.admin-primary-button{color:#14361f;background:#06c755;border:0;width:100%;margin-top:20px;display:flex}.admin-customer-link{color:var(--admin-green);margin-top:12px;display:flex}.admin-status{align-items:center;gap:8px;display:flex}.admin-layout{padding-bottom:max(28px, env(safe-area-inset-bottom))}.admin-header{padding:max(20px, env(safe-area-inset-top)) clamp(18px, 4vw, 48px) 20px;border-bottom:1px solid var(--admin-border);background:#fff;justify-content:space-between;align-items:center;gap:20px;display:flex}.admin-header h1{margin-bottom:3px;font-size:clamp(24px,4vw,32px)}.admin-account{color:#725f52;margin:0;font-size:14px}.admin-logout-button{border:1px solid var(--admin-border);color:var(--admin-brown);background:#fff;flex:none;padding:9px 18px}.admin-navigation{border-bottom:1px solid var(--admin-border);scrollbar-width:thin;background:#fff;gap:8px;padding:12px clamp(18px,4vw,48px);display:flex;overflow-x:auto}.admin-navigation a{color:#675347;border-radius:10px;flex:none;align-items:center;min-height:44px;padding:9px 14px;font-size:15px;font-weight:700;text-decoration:none;display:flex}.admin-navigation a.active{background:var(--admin-green-light);color:var(--admin-green)}.admin-content,.admin-layout>.admin-alert{width:min(1120px,100% - 36px);margin-left:auto;margin-right:auto}.admin-content{padding-top:28px}.admin-page-heading{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.admin-page-heading h2{margin-bottom:0;font-size:clamp(24px,4vw,34px)}.admin-page-description{color:#725f52;max-width:720px;margin:12px 0 24px}.admin-phase-badge{background:var(--admin-green-light);min-height:28px;color:var(--admin-green);border-radius:999px;align-items:center;padding:4px 9px;font-size:12px;font-weight:800;display:inline-flex}.admin-dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.admin-dashboard-card{border:1px solid var(--admin-border);min-height:180px;color:inherit;background:#fff;border-radius:16px;padding:20px;text-decoration:none;transition:border-color .16s,transform .16s}.admin-dashboard-card:hover{border-color:#83ad88;transform:translateY(-2px)}.admin-dashboard-card p{color:#725f52}.admin-card-action{color:var(--admin-green);font-weight:800}.admin-placeholder{border:1px solid var(--admin-border);background:#fff;border-radius:16px;max-width:720px;padding:24px}.admin-alert{border-radius:10px;margin-top:16px;padding:12px 14px}.admin-alert.error{color:var(--admin-danger);background:#fff1f0;border:1px solid #e2aaa8}.admin-alert.warning{color:#765716;background:#fff7df;border:1px solid #e3c381}.admin-alert.info{background:var(--admin-green-light);color:var(--admin-green);border:1px solid #aac5ae}.admin-alert.success{color:#28572e;background:#edf8ef;border:1px solid #91bf98}.admin-secondary-link{border:1px solid var(--admin-border);color:var(--admin-green);margin-top:18px;padding:9px 16px;display:inline-flex}.admin-primary-button:focus-visible,.admin-primary-action:focus-visible,.admin-secondary-button:focus-visible,.admin-danger-button:focus-visible,.admin-remove-size-button:focus-visible,.admin-logout-button:focus-visible,.admin-navigation a:focus-visible,.admin-dashboard-card:focus-visible,.admin-secondary-link:focus-visible,.admin-customer-link:focus-visible{outline-offset:2px;outline:3px solid #d7a56c}.admin-product-toolbar,.admin-product-card-actions,.admin-form-actions,.admin-confirm-panel>div{flex-wrap:wrap;gap:10px;display:flex}.admin-product-toolbar{margin-bottom:16px}.admin-primary-action,.admin-secondary-button,.admin-danger-button,.admin-remove-size-button{touch-action:manipulation;border-radius:10px;min-height:44px;padding:9px 15px;font-size:16px;font-weight:750}.admin-primary-action{border:1px solid var(--admin-green);background:var(--admin-green);color:#fff}.admin-secondary-button{border:1px solid var(--admin-border);color:var(--admin-green);background:#fff}.admin-danger-button,.admin-remove-size-button{color:var(--admin-danger);background:#fff5f4;border:1px solid #d49b98}.admin-primary-action:disabled,.admin-secondary-button:disabled,.admin-danger-button:disabled,.admin-remove-size-button:disabled{cursor:not-allowed;opacity:.55}.admin-feedback:empty{display:none}.admin-confirm-panel{background:#fff9e9;border:1px solid #e3c381;border-radius:12px;margin:16px 0;padding:16px}.admin-confirm-panel p{margin-top:0;font-weight:700}.admin-products-layout{grid-template-columns:minmax(280px,.8fr) minmax(420px,1.5fr);align-items:start;gap:18px;display:grid}.admin-product-list,.admin-product-editor,.admin-product-empty-editor{border:1px solid var(--admin-border);background:#fff;border-radius:16px}.admin-product-editor-slot{min-width:0;scroll-margin-top:16px}.admin-product-list{gap:12px;max-height:calc(100vh - 240px);padding:14px;display:grid;overflow-y:auto}.admin-product-list-heading,.admin-product-card-heading,.admin-product-editor-heading,.admin-editor-section-heading{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.admin-product-list-heading h3,.admin-product-editor-heading h3,.admin-editor-section h4{margin:0}.admin-product-list-heading>span,.admin-order-label{color:#725f52;font-size:13px}.admin-product-card{background:#fbf8f4;border:2px solid #0000;border-radius:12px;padding:15px}.admin-product-card.selected{background:#f2f8f3;border-color:#6f9d75}.admin-product-card h4{margin:10px 0 2px;font-size:18px}.admin-status-badge,.admin-unsaved-badge{border-radius:999px;align-items:center;min-height:28px;margin-right:6px;padding:4px 9px;font-size:12px;font-weight:800;display:inline-flex}.admin-status-badge.active{color:#28572e;background:#e1f2e4}.admin-status-badge.inactive{color:#66584f;background:#eee9e4}.admin-status-badge.campaign,.admin-unsaved-badge{color:#78570f;background:#fff0cf}.admin-product-id,.admin-product-meta,.admin-product-sizes{color:#725f52;font-size:14px}.admin-product-id{margin:0;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.admin-product-card-actions{margin-top:12px}.admin-product-empty-editor,.admin-loading-panel{padding:28px}.admin-product-editor{padding:clamp(18px,3vw,28px)}.admin-product-editor-heading{margin-bottom:20px}.admin-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.admin-field,.admin-size-row label{color:var(--admin-brown);align-content:start;gap:7px;font-weight:750;display:grid}.admin-field.wide{grid-column:1/-1}.admin-field input,.admin-field textarea,.admin-field select,.admin-size-row input{box-sizing:border-box;color:#3f3028;width:100%;min-height:46px;font:inherit;background:#fff;border:1px solid #cbbbaf;border-radius:10px;font-size:16px}.admin-field input,.admin-field select,.admin-size-row input{padding:9px 11px}.admin-field textarea{resize:vertical;min-height:96px;padding:11px}.admin-field input:focus-visible,.admin-field textarea:focus-visible,.admin-field select:focus-visible,.admin-size-row input:focus-visible,.admin-checkbox-row input:focus-visible{outline-offset:2px;outline:3px solid #d7a56c}.admin-field small,.admin-checkbox-row small{color:#725f52;font-size:13px;font-weight:500}.admin-field-error{margin:4px 0;font-size:14px;color:var(--admin-danger)!important;font-weight:700!important}.admin-checkbox-row{border:1px solid var(--admin-border);background:#fbf8f4;border-radius:12px;align-items:flex-start;gap:12px;margin-top:20px;padding:14px;display:flex}.admin-checkbox-row.compact{margin-top:0}.admin-checkbox-row input{flex:none;width:22px;height:22px;margin:1px 0 0}.admin-checkbox-row span{gap:4px;display:grid}.admin-editor-section{border-top:1px solid var(--admin-border);margin-top:22px;padding-top:20px}.admin-editor-section-heading p{color:#725f52;margin:4px 0 0;font-size:14px}.admin-size-list{gap:10px;margin-top:14px;display:grid}.admin-size-row{background:#f7f3ee;border-radius:12px;grid-template-columns:minmax(120px,1fr) minmax(120px,.8fr) auto;align-items:end;gap:10px;padding:12px;display:grid}.admin-form-actions{z-index:2;border-top:1px solid var(--admin-border);background:#fffffff5;margin:24px -8px -8px;padding:12px 8px 8px;position:sticky;bottom:0}.flavor-fields{margin-top:16px}@media (width<=640px){.admin-header{align-items:flex-start}.admin-dashboard-grid{grid-template-columns:1fr}.admin-login-card,.admin-placeholder{padding:20px}.admin-products-layout,.admin-form-grid{grid-template-columns:1fr}.admin-product-list{max-height:none}.admin-field.wide{grid-column:auto}.admin-size-row{grid-template-columns:1fr 1fr}.admin-remove-size-button{grid-column:1/-1}}@media (width>=641px) and (width<=900px){.admin-products-layout{grid-template-columns:1fr}.admin-product-list{max-height:none}}@media (prefers-reduced-motion:reduce){.admin-dashboard-card{transition:none}}#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}}
