:root{--coral: #d95f6e;--coral-deep: #bc4353;--coral-soft: #fae7e4;--teal: #2fa8b8;--teal-deep: #1f8291;--teal-soft: #e1f1f2;--mustard: #efa92e;--mustard-deep: #a96f0e;--mustard-soft: #fbf0d7;--green: #7fa344;--green-deep: #5c7e2c;--green-soft: #edf3df;--paper: #faf6ef;--paper-2: #f3ecdf;--card: #ffffff;--ink: #2a241e;--ink-2: #6f6355;--ink-3: #a3937f;--line: #e9dfce;--line-2: #ded1ba;--danger: #b3372c;--danger-soft: #fbeaea;--fs-cap: 12px;--fs-sm: 13px;--fs-body: 15px;--fs-sub: 17px;--fs-title: 20px;--fs-page: 24px;--fs-display: 30px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 20px;--r-pill: 999px;--sh-1: 0 1px 2px rgba(88, 60, 35, .05), 0 2px 8px rgba(88, 60, 35, .05);--sh-2: 0 2px 4px rgba(88, 60, 35, .05), 0 10px 24px rgba(88, 60, 35, .09);--sh-3: 0 4px 8px rgba(88, 60, 35, .06), 0 20px 44px rgba(88, 60, 35, .16);--ease: cubic-bezier(.22, .8, .32, 1);font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans SC,system-ui,sans-serif;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-size:var(--fs-body);line-height:1.55;-webkit-font-smoothing:antialiased}img{display:block}.num{font-variant-numeric:tabular-nums}::selection{background:var(--coral-soft)}section{margin-bottom:var(--sp-6)}h2{font-size:var(--fs-title);margin:0 0 var(--sp-3);letter-spacing:-.01em}h3{font-size:var(--fs-sub);margin:var(--sp-4) 0 var(--sp-2)}h3 .counts{font-weight:400;font-size:var(--fs-cap);color:var(--ink-3);margin-left:var(--sp-2)}a{color:var(--teal-deep)}button{font:inherit;font-size:var(--fs-sm);padding:7px 14px;border-radius:10px;border:1px solid var(--line-2);background:var(--card);color:var(--ink);cursor:pointer;transition:all .16s var(--ease)}button:hover{border-color:var(--ink-3)}button:active{transform:scale(.98)}button:disabled{opacity:.45;cursor:default;transform:none}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}button.danger-outline{color:var(--danger);border-color:#e3b3ae;background:var(--card)}button.primary{background:var(--ink);border-color:var(--ink);color:#fbf7ef}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);height:44px;padding:0 22px;border-radius:var(--r-md);font-size:var(--fs-body);font-weight:600;white-space:nowrap;border:1px solid transparent;text-decoration:none;transition:all .16s var(--ease)}.btn:active{transform:scale(.98)}.btn[disabled]{opacity:.45;pointer-events:none}.btn-primary{background:var(--coral);color:#fff;border-color:var(--coral);box-shadow:inset 0 1px #ffffff47,0 4px 14px #d95f6e52}.btn-primary:hover{background:var(--coral-deep);border-color:var(--coral-deep)}.btn-ink{background:var(--ink);color:#fbf7ef;border-color:var(--ink);box-shadow:var(--sh-1)}.btn-ink:hover{background:#3b332a}.btn-ghost{background:var(--card);border-color:var(--line-2);color:var(--ink);box-shadow:var(--sh-1)}.btn-ghost:hover{border-color:var(--ink-3)}.btn-danger{background:var(--card);border-color:#efc4c4;color:var(--danger)}.btn-danger:hover{background:var(--danger-soft)}.btn-danger-solid{background:var(--danger);border-color:var(--danger);color:#fff}.btn-sm{height:38px;padding:0 16px;font-size:var(--fs-sm);border-radius:10px}.btn-lg{height:50px;padding:0 28px;font-size:16px;border-radius:14px}input,select,textarea{font:inherit;color:inherit}.input{width:100%;height:50px;padding:0 16px;background:var(--card);border:1.5px solid var(--line-2);border-radius:var(--r-md);font-size:var(--fs-body);outline:none;transition:border-color .16s,box-shadow .16s}.input::placeholder{color:var(--ink-3)}.input:focus{border-color:var(--teal);box-shadow:0 0 0 4px #2fa8b824}textarea.input{height:auto;padding:12px 16px;line-height:1.6;resize:vertical}select.input{appearance:auto}.field label{display:block;font-size:var(--fs-sm);font-weight:600}.field label .input,.field label select,.field label textarea{margin-top:var(--sp-2)}.field .opt{color:var(--ink-3);font-weight:400;margin-left:6px}.hint{font-size:var(--fs-sm);color:var(--ink-2);margin:var(--sp-2) 0 0}.cap{font-size:var(--fs-cap);color:var(--ink-3)}.error{color:var(--danger);font-size:var(--fs-sm)}.error.banner{background:var(--danger-soft);border:1px solid #f0c6c2;border-radius:var(--r-md);padding:11px 14px}.ok{color:var(--green-deep);font-size:var(--fs-sm);font-weight:600}.notice{color:var(--green-deep);font-size:var(--fs-sm)}.chip{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-cap);font-weight:600;line-height:1.5;border-radius:var(--r-pill);padding:4px 11px;white-space:nowrap}.chip:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.chip-teal{background:var(--teal-soft);color:var(--teal-deep)}.chip-mustard{background:var(--mustard-soft);color:var(--mustard-deep)}.chip-green{background:var(--green-soft);color:var(--green-deep)}.chip-coral{background:var(--coral-soft);color:var(--coral-deep)}.chip-gray{background:var(--paper-2);color:var(--ink-2)}.switch{position:relative;width:48px;height:28px;flex:0 0 auto;display:inline-block;cursor:pointer}.switch input{opacity:0;width:100%;height:100%;position:absolute;inset:0;cursor:pointer;margin:0;z-index:1}.switch .tr{position:absolute;inset:0;background:#dcd2bf;border-radius:var(--r-pill);transition:background .2s var(--ease)}.switch .tr:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #583c234d;transition:transform .2s var(--ease)}.switch input:checked+.tr{background:var(--teal)}.switch input:checked+.tr:after{transform:translate(20px)}.switch input:focus-visible+.tr{box-shadow:0 0 0 4px #2fa8b833}.seg{display:inline-flex;background:var(--paper-2);border-radius:var(--r-pill);padding:4px;gap:2px}.seg button{padding:8px 18px;border:none;border-radius:var(--r-pill);font-size:var(--fs-sm);font-weight:600;color:var(--ink-2);background:transparent;min-height:40px;transition:all .18s var(--ease)}.seg button:hover{border:none;color:var(--ink)}.seg button.on{background:var(--card);color:var(--ink);box-shadow:var(--sh-1)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1)}.sec-title{font-size:var(--fs-sub);font-weight:700;margin:0 0 var(--sp-4);display:flex;align-items:center;gap:9px}.sec-title:before{content:"";width:4px;height:17px;border-radius:2px;background:var(--coral)}.app-shell{max-width:1200px;margin:0 auto;padding:0 16px 64px}.app-header{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-5);padding:10px 4px;margin-bottom:var(--sp-6);background:#faf6efe6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.brand-lockup{display:flex;align-items:center;gap:var(--sp-3)}.brand-lockup .logo-sm{height:42px;width:auto}.app-header h1{margin:0;font-size:var(--fs-sub);line-height:1.25;letter-spacing:-.01em}.app-header .brand{margin:1px 0 0;font-size:11px;color:var(--ink-3);letter-spacing:.14em}.app-nav{display:flex;align-items:center;gap:4px}.app-nav a{font-size:var(--fs-body);color:var(--ink-2);text-decoration:none;padding:9px 16px;border-radius:var(--r-pill);font-weight:500;transition:all .16s var(--ease)}.app-nav a:hover{color:var(--ink);background:var(--paper-2)}.app-nav a.router-link-active{color:var(--ink);font-weight:700;background:var(--card);box-shadow:var(--sh-1);border:1px solid var(--line)}.app-nav .btn{margin-left:var(--sp-2)}.page-tag{font-size:var(--fs-sm);border:1px solid var(--line-2);border-radius:var(--r-pill);padding:2px 10px}.login-page{min-height:70vh;display:flex;align-items:center;justify-content:center;padding:var(--sp-10) var(--sp-4);position:relative}.login-card{position:relative;width:400px;max-width:100%;background:var(--card);border:1px solid var(--line);border-radius:24px;box-shadow:var(--sh-3);padding:40px 38px 34px;text-align:center}.login-card:before,.login-card:after{content:"";position:absolute;border-radius:50%;z-index:-1;opacity:.45}.login-card:before{width:150px;height:150px;background:var(--coral-soft);top:-52px;left:-64px}.login-card:after{width:120px;height:120px;background:var(--teal-soft);bottom:-44px;right:-52px}.login-logo{height:92px;width:auto;margin:0 auto 4px}.login-card h2{font-size:22px;margin:var(--sp-2) 0 0}.login-sub{font-size:var(--fs-cap);color:var(--ink-3);letter-spacing:.22em;margin:6px 0 0}.login-form{margin-top:var(--sp-6);text-align:left;display:flex;flex-direction:column;gap:var(--sp-4)}.login-form .error{margin:0}.login-submit{width:100%}.login-foot{margin-top:var(--sp-5);font-size:var(--fs-cap);color:var(--ink-3)}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-4);flex-wrap:wrap}.page-head h2{margin:0;font-size:var(--fs-page)}.page-head .sub{color:var(--ink-2);font-size:var(--fs-sm);margin:4px 0 0}.list-tools{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.sound-ctl{display:inline-flex;align-items:center;gap:9px;font-size:var(--fs-sm);color:var(--ink-2);background:var(--card);border:1px solid var(--line);border-radius:var(--r-pill);padding:6px 8px 6px 16px;box-shadow:var(--sh-1);cursor:pointer}.cancelled-toggle{display:inline-flex;align-items:center;gap:7px;font-size:var(--fs-sm);color:var(--ink-2);cursor:pointer}.cancelled-toggle input{width:18px;height:18px;accent-color:var(--coral)}.status-tabs{display:flex;gap:4px;border-bottom:1.5px solid var(--line);overflow-x:auto;scrollbar-width:none;margin-bottom:var(--sp-4)}.status-tabs::-webkit-scrollbar{display:none}.status-tabs button{position:relative;padding:11px 14px;border:none;background:none;font-size:var(--fs-body);color:var(--ink-2);font-weight:500;white-space:nowrap;display:inline-flex;align-items:center;gap:7px;min-height:46px}.status-tabs button:hover{border:none;color:var(--ink)}.status-tabs button.active{color:var(--ink);font-weight:700}.status-tabs button.active:after{content:"";position:absolute;left:14px;right:14px;bottom:-1.5px;height:3px;border-radius:3px 3px 0 0;background:var(--coral)}.tab-badge{font-size:var(--fs-cap);background:var(--paper-2);color:var(--ink-2);border-radius:var(--r-pill);padding:1px 8px;font-weight:600;line-height:1.6}.tab-badge.hot{background:var(--coral);color:#fff}table.orders{width:100%;border-collapse:collapse;background:var(--card)}table.orders th{font-size:var(--fs-cap);color:var(--ink-3);font-weight:600;text-align:left;padding:14px 16px;border-bottom:1.5px solid var(--line);letter-spacing:.04em}table.orders td{padding:15px 16px;border-bottom:1px solid var(--line);font-size:var(--fs-body);vertical-align:middle}table.orders tbody tr{transition:background .14s}table.orders tbody tr:hover{background:#fdfaf4}table.orders tbody tr:last-child td{border-bottom:none}.order-list table.orders{border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1);overflow:hidden}.wx-name{font-weight:600}.paid-y{color:var(--green-deep);font-weight:600;font-size:var(--fs-sm)}.paid-n{color:var(--mustard-deep);font-weight:600;font-size:var(--fs-sm)}.row-actions{white-space:nowrap}.row-actions a{font-weight:600;font-size:var(--fs-sm);text-decoration:none}.row-actions a:hover{text-decoration:underline}.mini-cancel{border:none;background:none;padding:4px 6px;color:var(--ink-3);font-size:var(--fs-sm);margin-left:10px}.mini-cancel:hover{border:none;color:var(--danger)}.mini-cancel.danger-text{color:var(--danger);font-weight:600}.order-cards{display:none}.m-order{display:flex;flex-direction:column;gap:6px;padding:var(--sp-4);border-bottom:1px solid var(--line)}.m-order:last-child{border-bottom:none}.m-order .r1{display:flex;align-items:center;gap:10px}.m-order .r1 .chip{margin-left:auto}.m-order .r2{display:flex;align-items:center;gap:var(--sp-2);color:var(--ink-2);font-size:var(--fs-sm);flex-wrap:wrap}.m-order .r-actions{margin-left:auto;display:inline-flex;align-items:center}.m-order .r-actions a{font-weight:600;text-decoration:none}.steps{display:flex;align-items:center;margin-bottom:var(--sp-6)}.steps .st{display:flex;align-items:center;gap:10px}.steps .st .n{width:30px;height:30px;border-radius:50%;flex:0 0 auto;background:var(--paper-2);color:var(--ink-2);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--fs-sm);border:1.5px solid var(--line-2);transition:all .2s}.steps .st.on .n{background:var(--coral);border-color:var(--coral);color:#fff;box-shadow:0 3px 10px #d95f6e59}.steps .st.done .n{background:var(--green);border-color:var(--green);color:#fff}.steps .st span{font-size:var(--fs-body);font-weight:600}.steps .st:not(.on) span{color:var(--ink-3)}.steps .st.done span,.steps .st.on span{color:var(--ink)}.steps .bar{flex:0 0 56px;height:2px;background:var(--line-2);margin:0 14px;border-radius:2px}.order-create fieldset.form-card{border:1px solid var(--line);margin:0 0 var(--sp-5);padding:28px}.order-create fieldset.form-card legend{font-size:var(--fs-sub);font-weight:700;padding:0 8px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-5)}.checkline{display:flex;align-items:center;gap:var(--sp-3);background:var(--paper);border:1.5px solid var(--line);border-radius:var(--r-md);padding:14px 16px;cursor:pointer;margin-top:var(--sp-5)}.checkline input{width:20px;height:20px;accent-color:var(--coral);flex:0 0 auto}.checkline b{font-size:var(--fs-body)}.checkline small{color:var(--ink-2);display:block;font-size:var(--fs-cap)}.pick-tools{position:sticky;top:65px;z-index:30;background:#faf6efeb;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:var(--sp-3) 0 var(--sp-2)}.series-chips{display:flex;gap:var(--sp-2);overflow-x:auto;padding:2px 4px 6px;scrollbar-width:none}.series-chips::-webkit-scrollbar{display:none}.schip{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:10px 18px;border-radius:var(--r-lg);min-height:56px;background:var(--card);border:1.5px solid var(--line);box-shadow:var(--sh-1);text-align:left;transition:all .16s var(--ease)}.schip b{font-size:var(--fs-body)}.schip small{font-size:var(--fs-cap);color:var(--ink-3)}.schip.on{border-color:var(--coral);background:var(--coral-soft);box-shadow:0 4px 14px #d95f6e2e}.schip.on small{color:var(--coral-deep)}.pick-sub{display:flex;align-items:center;gap:var(--sp-3);margin-top:6px;flex-wrap:wrap}.pick-sub .hint{margin:0}.tpl-group h3{margin:var(--sp-5) 0 var(--sp-3)}.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:var(--sp-4);margin-top:var(--sp-2)}.tpl-card{position:relative;margin:0;cursor:pointer;background:var(--card);border:1.5px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-3);box-shadow:var(--sh-1);transition:all .18s var(--ease)}.tpl-card:hover{transform:translateY(-2px);box-shadow:var(--sh-2)}.tpl-card.selected{border-color:var(--coral);box-shadow:0 0 0 3px #d95f6e2e,var(--sh-2)}.tpl-card .tick{position:absolute;top:-9px;right:-9px;width:26px;height:26px;border-radius:50%;background:var(--coral);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;box-shadow:0 3px 8px #d95f6e66}.sheet{background:#fffdf8;border:1px solid var(--line);border-radius:10px;position:relative;overflow:hidden}.tpl-card .sheet{margin-bottom:11px}.sheet img{width:100%;height:100%;object-fit:contain}.tpl-meta{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}.tpl-meta b{font-size:var(--fs-body)}.badge-warn{display:inline-block;font-size:11px;font-weight:600;padding:2px 9px;border-radius:var(--r-pill);background:var(--mustard-soft);color:var(--mustard-deep);border:1px solid #f0d9a0;white-space:nowrap}.pick-foot{position:sticky;bottom:16px;z-index:30;margin-top:var(--sp-5);background:var(--ink);color:#f7f1e5;border-radius:var(--r-lg);box-shadow:var(--sh-3);padding:14px 14px 14px 22px;display:flex;align-items:center;gap:var(--sp-4);flex-wrap:wrap}.pick-foot .pf-label{display:block;color:#bfb29e;font-size:var(--fs-cap)}.pick-foot .pf-name{font-size:var(--fs-sub);flex:1;min-width:160px}.pick-foot .btn-primary{box-shadow:none}.success-panel .card{padding:var(--sp-6);margin-bottom:var(--sp-5)}.success-hero{display:flex;gap:var(--sp-4);align-items:flex-start;background:var(--green-soft);border:1px solid #d8e4bc;border-radius:var(--r-lg);padding:22px 24px;margin-bottom:var(--sp-5)}.success-hero .big-tick{width:48px;height:48px;flex:0 0 auto;border-radius:50%;background:var(--green);color:#fff;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:800;box-shadow:0 4px 12px #7fa34466}.success-hero h3{margin:0 0 6px;font-size:var(--fs-title)}.success-hero p{margin:0}.success-panel .actions{display:flex;gap:var(--sp-3);align-items:center;flex-wrap:wrap}.upload-card h3{margin-top:0}.link-card .guest-link-panel{flex-direction:row;flex-wrap:wrap;align-items:flex-start;gap:var(--sp-5)}.link-card .guest-url{flex:1 1 320px}.link-card .guest-actions{order:2}.link-card .guest-qr{order:3;margin-left:auto}.guest-link-panel{display:flex;flex-direction:column;gap:var(--sp-3)}.guest-url{background:var(--paper);border:1.5px dashed var(--line-2);border-radius:var(--r-md);padding:13px 16px;margin:0;font-size:var(--fs-sm);color:var(--ink-2);word-break:break-all}.guest-actions{display:flex;align-items:center;gap:var(--sp-3)}.copy-done{color:var(--green-deep);font-size:var(--fs-sm);font-weight:600}.guest-qr{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:10px;width:fit-content;box-shadow:var(--sh-1)}.guest-qr svg{width:148px;height:148px;display:block}.photo-uploader .upload-label{display:block;border:2px dashed var(--line-2);border-radius:var(--r-lg);padding:22px;text-align:center;background:#fffdf8;cursor:pointer;font-weight:600;transition:all .16s}.photo-uploader .upload-label:hover{border-color:var(--teal);background:var(--teal-soft)}.photo-uploader .upload-label input{margin-top:var(--sp-3)}.upload-rows{list-style:none;margin:var(--sp-4) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.upload-rows li{display:flex;align-items:center;gap:var(--sp-3);background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:10px 14px;font-size:var(--fs-sm)}.upload-rows .row-name{font-weight:600;word-break:break-all}.upload-rows .row-state{color:var(--ink-2);margin-left:auto;white-space:nowrap}.upload-rows li.row-done .row-state{color:var(--green-deep);font-weight:600}.upload-rows li.row-failed{border-color:#f0c6c2;background:var(--danger-soft)}.upload-rows li.row-failed .row-state{color:var(--danger);font-weight:600}.upload-panel,.series-block{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1);padding:var(--sp-5)}.upload-row{display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:flex-end}.upload-row label{display:flex;flex-direction:column;gap:4px;font-size:var(--fs-sm);font-weight:600}.upload-row .input{height:44px}.file-picker input{display:none}.file-picker span{display:inline-block;padding:10px 16px;border:1.5px dashed var(--ink-3);border-radius:var(--r-md);font-size:var(--fs-sm);font-weight:600;cursor:pointer;background:#fffdf8}.upload-preview img{max-width:260px;max-height:260px;border:1px solid var(--line);border-radius:var(--r-md);margin-top:var(--sp-3)}.toolbar{display:flex;align-items:center;gap:10px;font-size:var(--fs-sm);margin-bottom:var(--sp-4)}.filter-group{display:inline-flex;gap:6px}.filter-group button.active{background:var(--ink);color:#fbf7ef;border-color:var(--ink)}.group-block{margin-bottom:var(--sp-2)}.cards{display:flex;flex-wrap:wrap;gap:var(--sp-3)}.cards .card{width:212px;border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-3);background:var(--card);box-shadow:var(--sh-1);display:flex;flex-direction:column;gap:6px;transition:box-shadow .16s}.cards .card:hover{box-shadow:var(--sh-2)}.cards .card.hidden{opacity:.62}.cards .card img{width:100%;height:120px;object-fit:contain;background:#fffdf8;border:1px solid var(--line);border-radius:var(--r-sm)}.card-meta{display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-sm)}.card-meta.dim{color:var(--ink-3);font-size:var(--fs-cap)}.status{font-size:var(--fs-cap);font-weight:600;padding:2px 10px;border-radius:var(--r-pill);background:var(--green-soft);color:var(--green-deep)}.status.hidden{background:var(--paper-2);color:var(--ink-2)}.cell-badge{font-size:var(--fs-cap);font-weight:600;padding:2px 10px;border-radius:var(--r-pill);white-space:nowrap}.cell-badge.ok{background:var(--green-soft);color:var(--green-deep)}.cell-badge.warn{background:var(--mustard-soft);color:var(--mustard-deep);border:1px solid #f0d9a0}.card-actions{display:flex;gap:6px;flex-wrap:wrap}.card-actions button{font-size:var(--fs-cap);padding:5px 10px;flex:1}.empty{color:var(--ink-3);font-size:var(--fs-sm);margin:4px 0}.cells-panel{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--card);box-shadow:var(--sh-2);padding:var(--sp-5);margin-top:var(--sp-5)}.cells-preview{max-width:460px;margin:var(--sp-3) 0 var(--sp-4)}.cells-preview .sheet img{position:absolute;inset:0}.cell-rect{position:absolute;border:2px solid;border-radius:4px;pointer-events:none}.cell-tag{position:absolute;top:0;left:0;transform:translate(-50%,-50%);color:#fff;font-size:11px;font-weight:700;font-style:normal;border-radius:5px;padding:1px 6px;box-shadow:0 1px 4px #00000040;pointer-events:none;white-space:nowrap}.cell-rect.date-rect{border:2px dashed var(--mustard);background:#efa92e21}.cell-tag.date-tag{background:var(--mustard-deep)}.cell-row{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin:var(--sp-2) 0;font-size:var(--fs-sm)}.cell-row input[type=number]{width:92px;height:42px;padding:0 10px;text-align:center;border:1.5px solid var(--line-2);border-radius:var(--r-sm);background:var(--card)}.cell-row input[type=number]:focus{border-color:var(--teal);box-shadow:0 0 0 4px #2fa8b824;outline:none}.cell-title{font-weight:600;min-width:52px;display:inline-flex;align-items:center;gap:7px}.cell-row.date-row{border-top:1px dashed var(--line-2);margin-top:var(--sp-3);padding-top:var(--sp-3);background:#fffdf6}.cell-dot{width:12px;height:12px;border-radius:4px;display:inline-block}.cells-flags{display:flex;flex-wrap:wrap;gap:var(--sp-5);align-items:center;margin:var(--sp-3) 0;font-size:var(--fs-sm)}.cells-flags label.check{display:inline-flex;gap:9px;align-items:center;cursor:pointer}.cells-actions{display:flex;gap:var(--sp-2);margin-top:var(--sp-3)}.order-detail>p:first-child{margin:0 0 var(--sp-4)}.order-detail>p:first-child a{font-size:var(--fs-sm);font-weight:600;text-decoration:none}.order-detail>p:first-child a:hover{text-decoration:underline}.detail-grid{display:grid;grid-template-columns:1fr 372px;gap:var(--sp-5);align-items:start}.info-card .kv .row:last-child{border-bottom:none}.submission-info .kv{margin-top:var(--sp-2)}.review-timeline .timeline{margin-top:2px}.detail-main{display:flex;flex-direction:column;gap:var(--sp-5);min-width:0}.detail-main .card{padding:var(--sp-5)}.kv{display:grid;grid-template-columns:repeat(2,1fr);gap:2px 28px;margin:0}.kv .row{display:flex;justify-content:space-between;gap:14px;padding:11px 0;border-bottom:1px dashed var(--line)}.kv .row dt{color:var(--ink-2);font-size:var(--fs-sm)}.kv .row dd{font-weight:600;text-align:right;margin:0}.guest-link .regen-link{margin-top:var(--sp-4);display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.regen-warning,.cancel-warning{color:var(--danger);font-size:var(--fs-sm);margin:0;width:100%}.photo-list ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.photo-list li{display:flex;align-items:center;gap:var(--sp-3);font-size:var(--fs-sm)}.photo-list li img{width:54px;height:54px;object-fit:cover;border-radius:var(--r-sm);border:1px solid var(--line)}.composite-frame{margin:0 0 var(--sp-4);background:#fffdf8;border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-4);text-align:center}.composite-frame img{max-width:100%;max-height:340px;object-fit:contain;margin:0 auto;border-radius:var(--r-sm)}.composite-frame figcaption{color:var(--ink-3);font-size:var(--fs-cap);margin-top:var(--sp-2)}.submission-block{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--card);padding:var(--sp-3) var(--sp-4);margin:var(--sp-4) 0}.submission-thumb{max-width:320px;width:100%;border:1px solid var(--line);border-radius:var(--r-sm)}.submission-adjust{border-top:1px dashed var(--line);margin-top:var(--sp-4);padding-top:var(--sp-4)}.submission-adjust h4{margin:0 0 var(--sp-3);font-size:var(--fs-body)}.adj-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:var(--sp-3)}.adj-grid label{display:flex;flex-direction:column;gap:6px;font-size:var(--fs-sm);font-weight:600}.adj-select{height:44px;padding:0 12px}.adjust-date{display:inline-flex;gap:9px;align-items:center;font-size:var(--fs-sm);cursor:pointer;margin:0 var(--sp-4) var(--sp-3) 0}.submission-none{margin:0}.review-bar{position:sticky;top:84px;display:flex;flex-direction:column;gap:var(--sp-5)}.review-bar .card{padding:var(--sp-5)}.review-btns{display:flex;gap:var(--sp-2);flex-wrap:wrap}.review-btns .btn{flex:1}.return-form{margin-top:var(--sp-4)}.return-form label{display:block;font-size:var(--fs-sm);font-weight:600}.return-form textarea{margin-top:var(--sp-2)}.return-foot{display:flex;align-items:center;justify-content:space-between;margin-top:var(--sp-3)}.review-actions .error{margin:var(--sp-3) 0 0}.timeline{position:relative;list-style:none;margin:0;padding:0 0 0 22px}.timeline:before{content:"";position:absolute;left:6px;top:8px;bottom:8px;width:2px;background:var(--line-2);border-radius:2px}.timeline .ev{position:relative;padding:0 0 18px}.timeline .ev:last-child{padding-bottom:2px}.timeline .ev:before{content:"";position:absolute;left:-21px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--card);border:2.5px solid var(--ink-3)}.timeline .ev.coral:before{border-color:var(--coral)}.timeline .ev.green:before{border-color:var(--green)}.timeline .ev.teal:before{border-color:var(--teal)}.timeline .ev b{font-size:var(--fs-body)}.timeline .ev time{color:var(--ink-3);font-size:var(--fs-cap);margin-left:var(--sp-2)}.timeline .ev p{color:var(--ink-2);font-size:var(--fs-sm);margin:2px 0 0}.danger-zone .cancelled-note{color:var(--ink-2);font-size:var(--fs-sm);margin:0}.guest-page{max-width:560px;margin:0 auto}.guest-template-name{font-size:18px;margin:6px 0 10px}.guest-sticky{position:sticky;top:64px;z-index:5;background:#faf6eff0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:6px 0 10px;text-align:center}.sticky-frame{background:#fffdf8;border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:var(--sh-2);padding:8px}.guest-sticky .sticky-frame.portrait{max-width:64%;margin:0 auto}.guest-sticky img{max-width:100%;max-height:34vh;object-fit:contain;margin:0 auto;display:block}.guest-progress{margin-top:10px;text-align:left}.guest-segbar{display:flex;gap:5px}.guest-segbar i{flex:1;height:5px;border-radius:3px;background:var(--paper-2);transition:background .25s}.guest-segbar i.fill{background:var(--coral)}.guest-progress-text{display:flex;justify-content:space-between;gap:var(--sp-3);margin-top:7px;font-size:var(--fs-cap);color:var(--ink-2)}.guest-progress-text b{color:var(--coral-deep)}.consent-bar{display:flex;flex-direction:column;font-size:var(--fs-sm);background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:4px 14px;margin:var(--sp-3) 0 var(--sp-2);box-shadow:var(--sh-1)}.consent-bar label{display:flex;gap:10px;align-items:center;padding:8px 0;cursor:pointer}.consent-bar label+label{border-top:1px dashed var(--line)}.consent-bar input{accent-color:var(--coral);width:20px;height:20px;flex:0 0 auto}.consent-main small{display:block;color:var(--ink-3);font-size:11px;margin-top:1px}.guest-counter{font-size:var(--fs-sm);color:var(--ink-2)}.guest-photos{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.guest-photo{margin:0;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:8px;box-shadow:var(--sh-1)}.guest-photo.picked{border-color:var(--coral);box-shadow:0 0 0 2.5px #d95f6e38,var(--sh-1)}.guest-photo-frame{position:relative;aspect-ratio:4 / 3;background:var(--paper-2);border-radius:var(--r-md);overflow:hidden}.guest-photo img{width:100%;height:100%;object-fit:contain;display:block;cursor:zoom-in}.slot-badge{position:absolute;top:8px;left:8px;z-index:2;background:var(--coral);color:#fff;font-size:var(--fs-cap);font-weight:700;border-radius:var(--r-pill);padding:3px 10px;box-shadow:0 3px 8px #d95f6e66}.slot-buttons{display:flex;gap:6px;margin-top:8px}.slot-buttons button{flex:1;padding:7px 0;font-size:var(--fs-sm);min-height:40px}.slot-buttons button.active{background:var(--coral);color:#fff;border-color:var(--coral)}.guest-save-all{margin:var(--sp-2) 0 var(--sp-3)}.guest-save-all button{display:inline-flex;align-items:center;min-height:40px;padding:6px 14px;font-size:var(--fs-sm);font-weight:600;color:var(--coral-deep);background:var(--coral-soft);border:1px solid #F2C4BC;border-radius:var(--r-pill);cursor:pointer}.photo-save{display:flex;align-items:center;justify-content:center;min-height:40px;width:100%;margin-top:6px;font-size:var(--fs-sm);font-weight:600;color:var(--coral-deep);background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-md);cursor:pointer}.photo-adjust{display:flex;align-items:center;justify-content:center;min-height:40px;width:100%;margin-top:6px;font-size:var(--fs-sm);font-weight:600;color:var(--teal-deep);background:var(--teal-soft);border:1px solid var(--line);border-radius:var(--r-md);cursor:pointer}.adjust-view{margin:var(--sp-5) 0 var(--sp-2);padding:var(--sp-4);background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1)}.adjust-title{margin:0 0 var(--sp-1);font-size:var(--fs-sub);color:var(--ink)}.adjust-hint{margin:0 0 var(--sp-3);font-size:var(--fs-sm);color:var(--ink-2)}.adjust-stage{overflow:hidden;border-radius:var(--r-md);background:var(--paper-2);max-height:52vh;display:flex;align-items:center;justify-content:center}.adjust-img{max-width:100%;max-height:52vh;display:block;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}.adjust-scale-row{display:flex;align-items:center;gap:var(--sp-3);margin-top:var(--sp-4);font-size:var(--fs-sm);color:var(--ink-2)}.adjust-scale-row input[type=range]{flex:1;accent-color:var(--coral)}.adjust-scale-val{min-width:44px;text-align:right;font-weight:600;color:var(--ink)}.adjust-actions{display:flex;gap:var(--sp-3);margin-top:var(--sp-4)}.adjust-reset,.adjust-done{flex:1;min-height:44px;border-radius:var(--r-md);font-size:var(--fs-body);font-weight:600;cursor:pointer}.adjust-reset{color:var(--ink);background:var(--paper-2);border:1px solid var(--line-2)}.mode-toggle{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:var(--paper-2);border-radius:var(--r-lg);padding:5px;margin:var(--sp-5) 0 var(--sp-2)}.mode-toggle button{border-radius:var(--r-md);padding:10px 6px;min-height:52px;text-align:center;background:transparent;border:none}.mode-toggle button b{display:block;font-size:var(--fs-body)}.mode-toggle button small{display:block;color:var(--ink-3);font-size:11px;margin-top:2px}.mode-toggle button.active{background:var(--card);box-shadow:var(--sh-2)}.mode-toggle button.active small{color:var(--ink-2)}.return-module{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--card);padding:var(--sp-3);box-shadow:var(--sh-1)}.return-row{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin:var(--sp-2) 0;font-size:var(--fs-sm)}.return-row.done{border-radius:var(--r-md)}.return-row.blocked{background:#fff9f8;border:1px solid #f0c6c2;border-radius:var(--r-md);padding:6px 8px}.return-slot{font-weight:600;min-width:36px}.return-state{flex:1 1 180px}.return-state.ok{color:var(--green-deep)}.return-state.err{color:var(--coral-deep)}.return-state.pending{color:var(--ink-3)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);opacity:0;border:0;white-space:nowrap}.return-pick{flex:1 1 100%;display:flex;align-items:center;justify-content:center;min-height:56px;padding:10px 12px;cursor:pointer;text-align:center;border:1.5px dashed var(--line-2);border-radius:var(--r-md);background:var(--paper);color:var(--coral-deep);font-size:var(--fs-body);font-weight:600;transition:all .18s var(--ease)}.return-pick.done{border-style:solid;border-color:var(--green);background:var(--green-soft);color:var(--green-deep)}.return-pick.blocked{border-style:solid;border-color:#f0c6c2;background:#fff9f8;color:var(--coral-deep)}.return-pick.busy{opacity:.55;cursor:default}.return-banner{background:var(--mustard-soft);border:1px solid #f0d9a0;border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);margin:var(--sp-3) 0}.guest-action{position:sticky;bottom:0;z-index:5;margin-top:var(--sp-4);background:#faf6eff0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--line);padding:10px 0 calc(10px + env(safe-area-inset-bottom))}.guest-action-hint{text-align:center;font-size:var(--fs-cap);color:var(--ink-2);margin:0 0 8px}.guest-next{width:100%;padding:11px 0;font-size:var(--fs-body);min-height:48px}.confirm-card{background:#fffdf8;border:1px solid var(--line-2);border-radius:var(--r-xl);box-shadow:var(--sh-2);padding:12px}.guest-confirm .confirm-img{width:100%;display:block;border-radius:var(--r-md)}.guest-confirm label{display:flex;gap:var(--sp-2);align-items:center;font-size:var(--fs-sm);margin:10px 0}.guest-confirm .date-toggle{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);padding:10px 12px;cursor:pointer;justify-content:space-between}.date-toggle-label{flex:1}.extra-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:12px 14px;margin:10px 0;box-shadow:var(--sh-1);font-size:var(--fs-sm)}.extra-info b{display:block;font-size:var(--fs-body)}.extra-info small{display:block;color:var(--ink-2);font-size:var(--fs-cap);margin-top:2px}.extra-controls{display:flex;align-items:center;gap:var(--sp-2)}.stepper{display:flex;align-items:center;gap:4px}.stepper button{width:40px;height:40px;border-radius:50%;background:var(--paper);border:1.5px solid var(--line-2);font-size:18px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0}.stepper button:disabled{opacity:.4}.stepper-val{min-width:36px;text-align:center;font-weight:700;font-size:var(--fs-sub)}.extra-input{width:64px}.price-lines{margin-top:2px}.price-line{display:flex;justify-content:space-between;align-items:baseline;padding:8px 4px 0;margin:0;font-size:var(--fs-sm);color:var(--ink-2)}.price-line b{color:var(--ink);font-size:var(--fs-sub)}.confirm-actions{display:flex;gap:var(--sp-2);margin-top:var(--sp-3)}.confirm-actions button{flex:1;padding:10px 0}.guest-status{position:relative}.guest-state,.guest-done{text-align:center;padding:36px 12px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1)}.guest-status-ic{display:inline-flex;width:64px;height:64px;border-radius:50%;align-items:center;justify-content:center;font-size:28px;margin-bottom:var(--sp-3)}.guest-status-ic.green{background:var(--green-soft);color:var(--green-deep)}.guest-status-ic.teal{background:var(--teal-soft);color:var(--teal-deep)}.guest-status-ic.gray{background:var(--paper-2);color:var(--ink-2)}.guest-done-img{max-width:100%;border-radius:var(--r-md);border:1px solid var(--line)}.guest-zoom{position:fixed;inset:0;z-index:60;background:#1e1912e0;display:flex;align-items:center;justify-content:center;padding:16px;cursor:zoom-out}.guest-zoom img{max-width:100%;max-height:92vh;object-fit:contain;border-radius:var(--r-md)}.submitted-save{margin-top:var(--sp-4);border-top:1px dashed var(--line);padding-top:var(--sp-3)}.submitted-save h3{margin:0 0 var(--sp-2);font-size:var(--fs-sub)}.submitted-save .guest-save-all{margin-top:0}.submitted-photos{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;text-align:left}.submitted-photo{margin:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:8px;box-shadow:var(--sh-1)}.submitted-photo img{width:100%;aspect-ratio:4 / 3;object-fit:contain;display:block;background:var(--paper-2);border-radius:var(--r-md)}.photo-save-guide,.photo-save-stepper{position:fixed;inset:0;z-index:61;background:#1e1912e0;display:flex;align-items:center;justify-content:center;padding:16px}.photo-save-card{background:var(--paper);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:var(--sh-2);width:100%;max-width:380px;padding:18px 18px 14px;text-align:center}.photo-save-card img{max-width:100%;max-height:56vh;object-fit:contain;display:block;margin:0 auto;border-radius:var(--r-md)}.photo-save-count{margin:0 0 10px;font-weight:700;font-size:var(--fs-sub);color:var(--ink)}.photo-save-tip{margin:12px 0 14px;font-size:var(--fs-body);line-height:1.7;color:var(--ink)}.photo-save-card>button.primary{min-width:132px}.photo-save-nav{display:flex;gap:var(--sp-2);justify-content:center}.photo-save-nav button{flex:1;max-width:160px;min-height:44px}.photo-save-exit{margin-top:10px;background:none;border:none;color:var(--ink-2);font-size:var(--fs-sm);cursor:pointer;padding:6px 10px}.save-error{position:fixed;left:50%;transform:translate(-50%);bottom:calc(20px + env(safe-area-inset-bottom));z-index:62;margin:0;padding:10px 18px;background:#fff5f4;color:var(--danger);border:1px solid #f0c6c2;border-radius:var(--r-pill);box-shadow:var(--sh-2);font-size:var(--fs-sm);font-weight:600;white-space:nowrap}@media(max-width:980px){.detail-grid{grid-template-columns:1fr}.review-bar{position:static}}@media(max-width:860px){.app-header{flex-wrap:wrap}.app-nav a{padding:8px 10px;font-size:var(--fs-sm)}.brand-lockup .logo-sm{height:34px}}@media(max-width:820px){.order-list table.orders{display:none}.order-cards{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1);overflow:hidden}}@media(max-width:760px){.form-grid,.kv{grid-template-columns:1fr}.order-create fieldset.form-card{padding:var(--sp-5)}.pick-tools{top:57px}.steps .bar{flex-basis:24px;margin:0 8px}.steps .st span{font-size:var(--fs-sm)}}
