:root{--paper:#f6f1e4;--paper-2:#fbf8f0;--ink:#2b2620;--ink-2:#6b6152;--ink-3:#9a8f7e;--rule:#d9cfb9;--red:#a3342a;--red-soft:#f3dcd6;--green:#3f6b4a;--amber:#9a6b12;--amber-soft:#f5e7c6;--radius:10px;--serif:"Noto Serif TC", "Source Han Serif TC", "Songti TC", "PMingLiU", serif;--sans:-apple-system, "PingFang TC", "Noto Sans TC", "Microsoft JhengHei", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--sans);margin:0;font-size:16px;line-height:1.5}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:1px solid var(--rule);background:var(--paper-2);border-radius:8px;min-height:40px;padding:.45rem .8rem}button:hover:not(:disabled){border-color:var(--ink-3)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--red);border-color:var(--red);color:#fff}button.danger{color:var(--red);border-color:var(--red);background:#fff}input,select,textarea{width:100%;accent-color:var(--red);border:1px solid var(--rule);background:#fff;border-radius:8px;min-height:42px;padding:.5rem .65rem}input:not([type=checkbox]):not([type=radio]),select{height:44px;min-height:44px}select{padding-block:0}input[type=checkbox],input[type=radio]{accent-color:var(--red)}input:focus,select:focus,textarea:focus,button:focus-visible{outline:2px solid var(--red);outline-offset:1px}.error{color:var(--red);background:var(--red-soft);border-radius:8px;margin:.5rem 0;padding:.5rem .75rem}.meta{color:var(--ink-2);margin:.25rem 0;font-size:.9rem}.warn-text{color:var(--amber)}.loading{text-align:center;color:var(--ink-2);padding:3rem}.demo-banner{background:var(--amber-soft);color:var(--amber);text-align:center;padding:.35rem 1rem;font-size:.85rem}.login{place-items:center;min-height:100vh;padding:16px;display:grid}.login-card{background:var(--paper-2);border:1px solid var(--rule);border-radius:var(--radius);gap:.9rem;width:100%;max-width:360px;padding:2rem 1.5rem;display:grid}.login-card h1{font-family:var(--serif);text-align:center;letter-spacing:.3em;color:var(--red);margin:0}.login-sub{text-align:center;color:var(--ink-2);margin:-.5rem 0 .5rem}.login-card label{color:var(--ink-2);gap:.25rem;font-size:.9rem;display:grid}.hint{text-align:center;color:var(--ink-2);margin:0;font-size:.85rem}.app{margin:0 auto;padding-bottom:3rem}.topbar{z-index:5;background:var(--paper);border-bottom:1px solid var(--rule);justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem 16px;display:flex;position:sticky;top:0}.brand{min-height:40px;font-family:var(--serif);color:var(--red);white-space:nowrap;background:0 0;border:none;align-items:center;gap:.4rem;padding:0;font-size:1.15rem;font-weight:700;display:flex}.brand small{color:var(--ink-2);font-size:.8rem;font-weight:400}.topbar nav{gap:.3rem;display:flex}.topbar nav button{padding:.35rem .6rem;font-size:.9rem}.topbar nav button.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}main{padding:0 16px}.page-head{border-bottom:3px double var(--rule);grid-template-columns:auto 1fr auto;align-items:center;gap:.5rem;padding:1.1rem 0 .8rem;display:grid}.nav-btn{justify-content:center;align-items:center;gap:.3rem;min-width:48px;font-size:1.4rem;line-height:1;display:flex}.nav-btn span{font-size:.9rem}.date-block{text-align:center;font-family:var(--serif)}.gregorian{font-size:1.5rem;font-weight:700}.weekday{color:var(--red);margin-left:.6rem}.lunar{color:var(--ink-2);margin-top:.15rem}.roc{color:var(--ink-3);margin-left:.6rem;font-size:.85rem}.toolbar{align-items:center;gap:.5rem;padding:.75rem 0;display:flex}.toolbar input[type=date]{flex:1;width:auto;max-width:200px}.toolbar-right{gap:.5rem;margin-left:auto;display:flex}.summary{color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:.5rem 1rem;padding-bottom:.5rem;font-size:.95rem;display:flex}.summary b{color:var(--ink)}.badge{border-radius:999px;padding:.1rem .6rem;font-size:.85rem;font-weight:600}.badge.warn{background:var(--amber-soft);color:var(--amber)}.badge.closed{background:var(--red-soft);color:var(--red)}.override-note{color:var(--ink)}.toggle{cursor:pointer;align-items:center;gap:.3rem;margin-left:auto;display:flex}.toggle input{width:auto;min-height:0}.ledger{background:var(--paper-2);border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden}.ledger-head,.row-main{grid-template-columns:7.5rem minmax(6rem,1fr) 9.5rem minmax(6rem,1.5fr);align-items:center;gap:.75rem;display:grid}.ledger-head{color:var(--ink-2);border-bottom:1px solid var(--rule);font-size:.85rem;font-family:var(--serif);padding:.5rem 5.5rem .5rem 1rem}.period{font-family:var(--serif);color:var(--red);letter-spacing:.4em;background:var(--paper);border-bottom:1px solid var(--rule);padding:.35rem 1rem .15rem;font-size:.8rem}.row{border-bottom:1px solid var(--rule);align-items:stretch;min-height:52px;display:flex}.slot-group:last-child .row:last-child{border-bottom:none}.row-main,.row.empty{text-align:left;background:0 0;border:none;border-radius:0;flex:1;min-height:52px;padding:.55rem 1rem}.row.empty{border-bottom:1px solid var(--rule);align-items:center;gap:.75rem;width:100%;display:flex}.row.empty .time{width:7.5rem}.row-main:hover,.row.empty:hover{background:#fff}.row.empty:hover{border-color:#0000;border-bottom-color:var(--rule)}.row-main{cursor:pointer}.row-main:focus-visible{outline:2px solid var(--red);outline-offset:-2px}.phone-link{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--rule);text-decoration-color:var(--rule);text-underline-offset:3px}.time{font-family:var(--serif);font-variant-numeric:tabular-nums;font-weight:700}.time s{color:var(--ink-3);margin-right:.2rem;font-weight:400}.empty-label{color:var(--ink-3)}.row.empty:hover .empty-label{color:var(--red)}.name{flex-wrap:wrap;align-items:center;gap:.3rem;font-weight:600;display:flex}.phone{font-variant-numeric:tabular-nums;color:var(--ink)}.note{color:var(--ink-2);white-space:pre-wrap;overflow-wrap:anywhere;font-size:.92rem}.tag{background:var(--amber-soft);color:var(--amber);border-radius:4px;padding:0 .4rem;font-size:.72rem;font-style:normal;font-weight:600}.tag.online{color:var(--green);background:#dde9df}.tag.cancel{background:var(--red-soft);color:var(--red)}.row.extra .time:before{content:"　"}.row.cancelled{background:repeating-linear-gradient(135deg,#0000 0 8px,#00000006 8px 16px)}.row.cancelled .time,.row.cancelled .name,.row.cancelled .phone,.row.cancelled .note{color:var(--ink-3)}.row.cancelled .name{text-decoration:line-through}.slot-closed .row.empty .time{color:var(--ink-3);font-weight:400}.slot-closed .row.empty{background:repeating-linear-gradient(135deg,#0000 0 6px,#00000008 6px 12px)}.icon-btn{border:none;border-left:1px solid var(--rule);min-width:52px;color:var(--ink-2);white-space:nowrap;background:0 0;border-radius:0;place-items:center;padding:0 .6rem;font-size:.85rem;text-decoration:none;display:grid}.icon-btn:hover{color:var(--red);background:#fff}a.icon-btn{font-size:1.15rem}.icon-btn.placeholder{pointer-events:none;border-left-color:#0000}.icon-btn.add-extra{min-width:4.5rem}.modal-backdrop{z-index:20;background:#2b262073;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--paper-2);border-radius:var(--radius);width:100%;max-width:520px;max-height:calc(100vh - 32px);padding:1rem 1.25rem 1.25rem;overflow-y:auto;box-shadow:0 10px 40px #00000040}.modal-head{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.modal-head h2{font-family:var(--serif);margin:0;font-size:1.2rem}.close{background:0 0;border:none;padding:0 .4rem;font-size:1.6rem;line-height:1}.form{gap:.8rem;display:grid}.form label{color:var(--ink-2);gap:.25rem;font-size:.9rem;display:grid}.form label small{color:var(--ink-3);font-size:.8rem}.label-line{align-items:baseline;gap:.5rem;display:flex}.label-line em{color:var(--red);font-style:normal}.form-row.two{grid-template-columns:1fr 1fr;align-items:end;gap:.8rem;display:grid}.form .checkbox,.form .radio{color:var(--ink);cursor:pointer;align-items:center;gap:.5rem;font-size:1rem;display:flex}.form .checkbox input,.form .radio input{width:1.2rem;height:1.2rem;min-height:0;margin:0}.actions{align-items:center;gap:.5rem;margin-top:.3rem;display:flex}.spacer{flex:1}.slot-picker{border:1px dashed var(--rule);border-radius:8px;gap:.5rem;padding:.75rem;display:grid}.slot-picker-row{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.period-btn{min-width:3.5rem;font-family:var(--serif);color:var(--red)}.form .chip{border:1px solid var(--rule);color:var(--ink-2);cursor:pointer;font-variant-numeric:tabular-nums;background:#fff;border-radius:999px;align-items:center;padding:.3rem .75rem;display:inline-flex}.form .chip input{opacity:0;pointer-events:none;width:0;position:absolute}.form .chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.search-bar{gap:.5rem;padding:1rem 0;display:flex}.search-bar input{flex:1;min-width:0}.search-bar input::placeholder{font-size:.9em}.search-bar button,.lookup button{white-space:nowrap;flex-shrink:0;min-width:4.5rem;height:44px}.results h3{font-family:var(--serif);color:var(--ink-2);margin:1rem 0 .4rem;font-size:1rem}.result{text-align:left;border:none;border-bottom:1px solid var(--rule);background:var(--paper-2);border-radius:0;grid-template-columns:13rem 10rem 1fr;gap:.2rem .75rem;width:100%;padding:.6rem .9rem;display:grid}.result:first-of-type{border-radius:var(--radius) var(--radius) 0 0}.result:last-child{border-radius:0 0 var(--radius) var(--radius);border-bottom:none}.result .note{grid-column:1/-1}.result-date{font-variant-numeric:tabular-nums}.result.cancelled .name{color:var(--ink-3);text-decoration:line-through}@media (width<=680px){.brand small{display:none}.topbar nav button{padding:.3rem .5rem}.nav-btn span{display:none}.gregorian{font-size:1.25rem}.weekday{margin:0;font-size:1rem;display:block}.roc{display:none}.toolbar{flex-wrap:wrap}.toolbar-right{width:100%}.toolbar-right button{flex:1}.ledger-head{display:none}.row-main{grid-template-columns:4.2rem 1fr;grid-template-areas:"time name""time phone""time note";align-items:start;gap:.05rem .75rem}.row-main .time{grid-area:time;padding-top:.1rem}.row-main .name{grid-area:name}.row-main .phone{color:var(--ink-2);grid-area:phone;font-size:.92rem}.row-main .note{grid-area:note}.row-main .note:empty{display:none}.row.empty .time{width:4.2rem}.icon-btn{min-width:44px;padding:0 .3rem}.icon-btn.add-extra{min-width:3.4rem;font-size:.75rem}.icon-btn.placeholder{display:none}.form-row.two,.result{grid-template-columns:1fr}}.confirm-backdrop{z-index:30}.confirm-box{max-width:380px;padding:1.25rem}.confirm-text{white-space:pre-line;margin:0 0 1rem;line-height:1.7}.vacation-preview{color:var(--ink-2);font-size:.92rem}.vacation-days{flex-wrap:wrap;gap:.3rem;margin-top:.35rem;display:flex}.vacation-days span{background:var(--red-soft);color:var(--red);font-variant-numeric:tabular-nums;border-radius:6px;padding:.1rem .45rem;font-size:.85rem}.vacation-warn{background:var(--amber-soft);color:var(--amber);border-radius:8px;padding:.6rem .75rem;font-size:.92rem}.vacation-warn ul{color:var(--ink);margin:.35rem 0 0;padding-left:1.2rem}.vacation-list{border-top:1px solid var(--rule);padding-top:.6rem}.vacation-list h3{font-family:var(--serif);margin:0 0 .4rem;font-size:1rem}.vacation-list ul{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.vacation-list li{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.vacation-list small{color:var(--ink-2)}@media (width>=900px){.topbar{padding:.6rem 32px}main{padding:0 32px}.ledger-head,.row-main{grid-template-columns:8rem minmax(8rem,1fr) 11rem minmax(10rem,2.2fr);gap:1.25rem}.row.empty .time{width:8rem}.row-main,.row.empty{padding-left:1.5rem;padding-right:1.5rem}.ledger-head,.period{padding-left:1.5rem}.gregorian{font-size:1.7rem}.result{grid-template-columns:15rem 12rem 12rem 1fr}.result .note{grid-column:auto}}
