:root{font-family:DM Sans,system-ui,-apple-system,PingFang TC,Noto Sans TC,sans-serif;color:#1b1b18;background:#f4f1eb;font-synthesis:none;--ink:#1b1b18;--paper:#f4f1eb;--cream:#e9e3d9;--line:rgba(27,27,24,.14);--muted:#74736d;--green:#54695c;--red:#9a4f47}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,textarea,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}.brand{display:flex;flex-direction:column;align-items:center;letter-spacing:.15em}.brand b{font-family:Georgia,Times New Roman,serif;font-weight:400;font-size:1.25rem}.brand span{font-size:.55rem;letter-spacing:.35em;margin-top:.35rem}.brand.dark{align-items:flex-start;color:var(--ink)}.eyebrow{font-size:.66rem;letter-spacing:.2em;color:var(--muted)}.public-shell{min-height:100svh;padding:max(28px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(22px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));display:flex;flex-direction:column;align-items:center;background:radial-gradient(circle at 50% 30%,#faf8f4 0,#f4f1eb 54%,#eae4da)}.public-shell>.brand{margin:5vh 0 7vh}.public-shell footer{margin-top:auto;padding-top:5vh;font-size:.55rem;letter-spacing:.2em;color:var(--muted)}.delivery-card{width:min(100%,500px);text-align:center;padding:clamp(28px,7vw,56px);border:1px solid var(--line);background:#ffffff94;box-shadow:0 24px 80px #453b2c14;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.delivery-card h1{font-family:"Noto Serif TC",serif;font-weight:400;font-size:clamp(1.85rem,7vw,3rem);margin:1rem 0 .8rem;line-height:1.25}.ready{font-family:"Noto Serif TC",serif;font-size:1rem;margin:.4rem 0;color:#45453f}.count{color:var(--muted);font-size:.85rem;margin:.55rem 0 2rem}.primary{border:0;background:var(--ink);color:#fff;min-height:52px;padding:0 1.5rem;display:inline-flex;align-items:center;justify-content:center;gap:.65rem;letter-spacing:.04em;border-radius:2px}.primary:disabled{opacity:.6;cursor:wait}.primary svg{width:18px}.save{width:100%;font-size:1rem}.notice,.progress,.truth-note{display:flex;text-align:left;gap:.7rem;align-items:flex-start}.notice{margin-top:1rem;padding:.8rem;background:#eee8dd;font-size:.78rem;color:#5d5b54}.notice svg,.truth-note svg,.progress>svg{width:17px;min-width:17px}.progress{margin-top:1.2rem;padding:1rem;border:1px solid var(--line);background:#fff}.progress strong{display:block;font-size:.82rem;line-height:1.5}.progress small{display:block;color:var(--muted);margin-top:.25rem}.progress.danger{border-color:#d7a5a0}.text-button{border:0;background:transparent;color:inherit;display:inline-flex;gap:.4rem;align-items:center}.text-button svg{width:15px}.progress .text-button{margin-left:auto}.delivery-card blockquote{margin:2rem 0 0;padding-top:1.5rem;border-top:1px solid var(--line);font-family:"Noto Serif TC",serif;font-size:.87rem;line-height:1.8;color:#5b5a54}.truth-note{font-size:.7rem;color:var(--muted);margin:1.5rem 0 0}.fallback-list{margin-top:1rem;max-height:280px;overflow:auto;text-align:left}.fallback-list a{display:flex;align-items:center;gap:.8rem;padding:.8rem;border-bottom:1px solid var(--line);color:inherit;text-decoration:none;font-size:.78rem}.fallback-list a svg{width:16px}.fallback-list span{display:flex;flex-direction:column;min-width:0;overflow:hidden;text-overflow:ellipsis}.fallback-list small{color:var(--muted)}.state>svg{width:34px;height:34px}.state p{color:var(--muted);line-height:1.6}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(360px,560px) 1fr;background:#ede8de}.login-panel{background:#faf9f6;padding:clamp(36px,8vw,90px);display:flex;flex-direction:column;justify-content:center}.login-panel h1{font:400 clamp(2rem,4vw,3.5rem) Georgia,serif;margin:4rem 0 .6rem}.login-panel>p{color:var(--muted);line-height:1.6;margin-bottom:2rem}.login-panel form,.modal form{display:flex;flex-direction:column;gap:1rem}.login-panel label,.modal label{display:flex;flex-direction:column;gap:.45rem;font-size:.74rem;color:#55534d}.login-panel input,.modal input,.modal textarea,.modal select{width:100%;border:1px solid var(--line);background:#fff;padding:.85rem;color:var(--ink);border-radius:2px;outline:none}.login-panel input:focus,.modal input:focus,.modal textarea:focus,.modal select:focus{border-color:#66635d;box-shadow:0 0 0 3px #3c3b3614}.login-panel .setup{margin-top:1.2rem;justify-content:center;color:var(--muted)}.login-art{background:#1d1e1a;color:#ddd8ce;display:flex;flex-direction:column;justify-content:flex-end;padding:6vw;position:relative;overflow:hidden}.login-art:before{content:"";position:absolute;inset:8%;border:1px solid rgba(255,255,255,.12)}.login-art span{font:400 clamp(5rem,16vw,15rem) Georgia,serif;color:#ffffff09;position:absolute;transform:rotate(-90deg);right:-18vw;top:30%}.login-art p{font:italic 400 clamp(1.3rem,3vw,2.8rem) Georgia,serif;max-width:530px;line-height:1.3;z-index:1}.form-error{padding:.8rem;background:#f7e8e5;color:#7a3d37;font-size:.8rem}.success-banner{padding:.8rem 1rem;background:#e4ece6;color:#385343;display:flex;gap:.6rem;align-items:center;margin-bottom:1rem}.success-banner svg{width:17px}.admin-loading{min-height:100vh;display:grid;place-items:center;letter-spacing:.3em}.admin-shell{min-height:100vh;display:grid;grid-template-columns:250px 1fr;background:#f5f3ee}.admin-shell aside{border-right:1px solid var(--line);padding:2rem;display:flex;flex-direction:column;background:#eeebe4;position:sticky;top:0;height:100vh}.admin-shell nav{display:flex;flex-direction:column;gap:.4rem;margin-top:4rem}.admin-shell nav a,.admin-shell aside>button{display:flex;align-items:center;gap:.7rem;padding:.75rem;border:0;background:transparent;color:#68665f;text-decoration:none}.admin-shell nav a.active{background:#dfdbd2;color:var(--ink)}.admin-shell svg{width:18px}.admin-shell aside>button{margin-top:auto}.admin-main{padding:clamp(24px,5vw,70px);max-width:1500px;width:100%;margin:auto}.admin-main>header{display:flex;justify-content:space-between;align-items:end;margin-bottom:2rem}.admin-main h1{font:400 clamp(2rem,5vw,3.5rem) Georgia,serif;margin:.5rem 0 0}.primary.compact{min-height:44px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1rem}.stat{padding:1.4rem;background:#fff;border:1px solid var(--line);display:grid;grid-template-columns:auto 1fr;gap:.8rem;color:var(--muted)}.stat b{grid-column:1/-1;font:400 2rem Georgia,serif;color:var(--ink)}.panel{background:#fff;border:1px solid var(--line)}.panel-title{padding:1.4rem;display:flex;align-items:center;justify-content:space-between}.panel-title h2{margin:0;font:400 1.4rem Georgia,serif}.panel-title p{margin:.3rem 0 0;color:var(--muted);font-size:.78rem}.icon-button{border:0;background:transparent;color:var(--muted)}.project-table{overflow:auto}.table-head,.table-row{display:grid;grid-template-columns:minmax(220px,2fr) 1fr .8fr .8fr 40px;align-items:center;gap:1rem;padding:.9rem 1.4rem;min-width:760px}.table-head{background:#f5f3ee;color:var(--muted);font-size:.68rem;letter-spacing:.1em}.table-row{border-top:1px solid var(--line);font-size:.85rem}.project-name{border:0;background:transparent;text-align:left;color:inherit;display:flex;flex-direction:column;gap:.2rem}.project-name small{color:var(--muted)}.pill{width:max-content;padding:.3rem .55rem;font-size:.68rem;background:#eee}.pill.active{background:#e4ece6;color:#385343}.pill.disabled{background:#f2e7d5;color:#805f2e}.modal{position:fixed;inset:0;background:#1414128c;z-index:20;padding:2rem;display:grid;place-items:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);overflow:auto}.modal-card{position:relative;background:#faf9f6;width:min(100%,650px);padding:clamp(24px,5vw,50px);box-shadow:0 30px 100px #00000040}.modal-card.wide{width:min(100%,900px)}.modal-card h2{font:400 2.1rem Georgia,serif;margin:.6rem 0 1.7rem}.close{position:absolute;right:1rem;top:1rem;width:42px;height:42px;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--ink);display:grid;place-items:center;z-index:2}.close:hover{background:#eeebe4}.close:focus-visible,.link-box button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.close svg{width:20px;height:20px}.checks{display:flex;gap:1rem;flex-wrap:wrap}.checks label{flex-direction:row;align-items:center}.checks input{width:auto}.detail-grid{display:grid;grid-template-columns:260px 1fr;gap:2rem}.qr-box{display:flex;flex-direction:column;gap:.6rem}.qr-box img{width:100%;background:#fff;border:1px solid var(--line)}.secondary,.action-grid button,.action-grid a{border:1px solid var(--line);background:#fff;color:inherit;padding:.75rem;display:flex;align-items:center;justify-content:center;gap:.5rem;text-decoration:none;font-size:.78rem}.secondary svg,.action-grid svg,.link-box svg{width:16px}.detail-grid dl{margin:0;display:grid;grid-template-columns:120px 1fr;font-size:.8rem;align-content:start}.detail-grid dt,.detail-grid dd{padding:.6rem 0;border-bottom:1px solid var(--line);margin:0}.detail-grid dt{color:var(--muted)}.link-box{margin-top:1rem;border:1px solid var(--line);padding:.45rem .45rem .45rem .7rem;display:flex;align-items:center;gap:.4rem;background:#fff}.link-box span{font-size:.74rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.link-box button{border:0;background:transparent;color:var(--ink);width:40px;height:40px;min-width:40px;display:grid;place-items:center;border-radius:2px}.link-box button:hover{background:#eeebe4}.link-box .copy-link-button{border-left:1px solid var(--line);border-radius:0}.action-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.6rem;margin-top:1rem}.danger-button{color:var(--red)!important}@media(max-width:900px){.login-shell{grid-template-columns:1fr}.login-art{display:none}.admin-shell{grid-template-columns:1fr}.admin-shell aside{position:static;height:auto;flex-direction:row;align-items:center;padding:1rem}.admin-shell aside .brand span,.admin-shell nav,.admin-shell aside>button{display:none}.stat-grid{grid-template-columns:repeat(2,1fr)}.detail-grid{grid-template-columns:1fr}.qr-box{max-width:280px;margin:auto}.action-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.public-shell>.brand{margin:2vh 0 4vh}.delivery-card{padding:28px 22px}.admin-main{padding:20px 14px}.admin-main>header{align-items:start;gap:1rem}.admin-main>header .primary{font-size:0;width:46px;padding:0}.admin-main>header .primary svg{margin:0}.stat-grid{gap:.6rem}.stat{padding:1rem}.modal{padding:0}.modal-card{min-height:100svh}.action-grid{grid-template-columns:1fr}.detail-grid dl{grid-template-columns:100px 1fr}}@media(prefers-color-scheme:dark){.public-shell{background:#181916;color:#eee}.delivery-card{background:#23241fdb;border-color:#ffffff24}.ready{color:#d6d4ce}.progress,.fallback-list a{background:#22231f}.notice{background:#2d2e28}.count,.eyebrow,.truth-note,.delivery-card blockquote{color:#aaa69d}}.share-ready{margin-top:.65rem;background:#526459}button,a,input,textarea,select{transition:border-color .2s ease,background-color .2s ease,color .2s ease,opacity .2s ease,box-shadow .2s ease,transform .2s ease}button:active,.primary:active,.secondary:active{transform:translateY(1px)}.delivery-card{animation:cardEnter .55s cubic-bezier(.22,1,.36,1) both}.notice,.progress,.fallback-list{animation:contentRise .32s ease both}.admin-main>header,.stat-grid,.panel{animation:contentRise .45s cubic-bezier(.22,1,.36,1) both}.stat-grid{animation-delay:.04s}.panel{animation-delay:.08s}.admin-shell nav button,.admin-shell aside>button{display:flex;align-items:center;gap:.7rem;padding:.75rem;border:0;background:transparent;color:#68665f;text-decoration:none;text-align:left;width:100%}.admin-shell nav button.active{background:#dfdbd2;color:var(--ink)}.admin-shell nav button:hover,.admin-shell aside>button:hover{background:#1b1b180e;color:var(--ink)}.panel-tools{display:flex;align-items:center;gap:.65rem}.search-box{height:42px;min-width:min(300px,32vw);display:flex;align-items:center;gap:.5rem;border:1px solid var(--line);background:#faf9f6;padding:0 .65rem;color:var(--muted)}.search-box:focus-within{border-color:#77736c;box-shadow:0 0 0 3px #3c3b3612}.search-box>svg{width:16px;min-width:16px}.search-box input{width:100%;border:0;outline:0;background:transparent;color:var(--ink);font-size:.8rem}.search-box button{border:0;background:transparent;color:var(--muted);padding:.15rem;display:grid;place-items:center}.search-box button svg{width:15px}.sync-all-button{height:42px;padding:0 .8rem;border:1px solid var(--line);display:flex;align-items:center;gap:.45rem;white-space:nowrap;background:#fff}.sync-all-button:disabled{opacity:.45;cursor:not-allowed}.sync-all-button span{font-size:.76rem}.sync-console{margin:0 1.4rem 1.2rem;padding:1rem;border:1px solid var(--line);background:#f8f6f1;animation:contentRise .3s ease both}.sync-console.completed{background:#f2f7f3}.sync-console.paused{background:#faf4e8}.sync-console.cancelled{background:#f8eded}.sync-summary{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.sync-summary div{display:flex;flex-direction:column;gap:.25rem}.sync-summary strong{font-size:.84rem}.sync-summary span{font-size:.74rem;color:var(--muted)}.sync-summary>b{font:400 1.35rem Georgia,serif}.progress-track{height:7px;background:#dedad1;margin:.8rem 0;overflow:hidden}.progress-track i{display:block;height:100%;background:var(--green);transition:width .45s cubic-bezier(.22,1,.36,1)}.sync-meta{display:flex;align-items:center;gap:1rem;min-height:30px;font-size:.7rem;color:var(--muted)}.sync-error{color:var(--red);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sync-actions{display:flex;gap:.45rem;margin-left:auto}.sync-actions button,.trash-row button{border:1px solid var(--line);background:#fff;color:var(--ink);padding:.45rem .65rem;display:flex;align-items:center;gap:.35rem;font-size:.7rem}.sync-actions svg,.trash-row button svg{width:15px}.danger-text{color:var(--red)!important}.empty-state{padding:2.8rem 1.4rem;text-align:center;color:var(--muted);font-size:.82rem;border-top:1px solid var(--line)}.trash-list{border-top:1px solid var(--line)}.trash-row{display:grid;grid-template-columns:minmax(220px,1fr) 120px auto;gap:1rem;align-items:center;padding:1rem 1.4rem;border-bottom:1px solid var(--line)}.trash-row>div{display:flex;flex-direction:column;gap:.25rem}.trash-row b{font-size:.88rem}.trash-row small,.trash-row>span{color:var(--muted);font-size:.72rem}.trash-row button{justify-self:end}.modal{animation:modalBackdropIn .24s ease both}.modal-card{animation:modalCardIn .32s cubic-bezier(.22,1,.36,1) both;transform-origin:50% 42%}.modal.closing{animation:modalBackdropOut .22s ease both;pointer-events:none}.modal.closing .modal-card{animation:modalCardOut .22s ease both}.modal-card form>*{animation:contentRise .3s ease both}.modal-card form>*:nth-child(2){animation-delay:25ms}.modal-card form>*:nth-child(3){animation-delay:.05s}.modal-card form>*:nth-child(4){animation-delay:75ms}@keyframes modalBackdropIn{0%{opacity:0}to{opacity:1}}@keyframes modalBackdropOut{0%{opacity:1}to{opacity:0}}@keyframes modalCardIn{0%{opacity:0;transform:translateY(18px) scale(.975)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes modalCardOut{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(12px) scale(.985)}}@keyframes contentRise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes cardEnter{0%{opacity:0;transform:translateY(14px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:900px){.panel-title{align-items:flex-start;gap:1rem;flex-direction:column}.panel-tools{width:100%}.search-box{min-width:0;flex:1}.trash-row{grid-template-columns:1fr auto}.trash-row>span{grid-row:2}.trash-row button{grid-column:2;grid-row:1/3}.sync-meta{flex-wrap:wrap}.sync-actions{width:100%;margin-left:0}}@media(max-width:560px){.panel-tools{align-items:stretch;flex-direction:column}.search-box,.sync-all-button{width:100%}.sync-all-button{justify-content:center}.sync-console{margin:0 .8rem .8rem}.trash-row{grid-template-columns:1fr}.trash-row>span,.trash-row button{grid-column:1;grid-row:auto}.trash-row button{justify-self:stretch;justify-content:center}.sync-actions button{flex:1;justify-content:center}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
