:root{--brand:#0f766e;--bg:#f6f5f2;--card:#fff;--ink:#1c1917;--muted:#78716c;--line:#e7e5e4;--ok:#16a34a;--warn:#d97706;--bad:#dc2626;--radius:14px;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang TC","Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif;color:var(--ink);}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);-webkit-tap-highlight-color:transparent}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none}
a{color:var(--brand)}
.btn{white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;border-radius:10px;background:var(--brand);color:#fff;font-weight:600;text-decoration:none}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn.sm{padding:6px 10px;font-size:14px;border-radius:8px}
.btn.danger{background:var(--bad)}
.btn.line{background:#06c755}
.btn.block{width:100%}
.input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff}
label.f{display:block;font-size:13px;color:var(--muted);margin:10px 0 4px}
.card{background:var(--card);border-radius:var(--radius);border:1px solid var(--line)}
.muted{color:var(--muted)}
.row{display:flex;gap:8px;align-items:center}
.grow{flex:1}
.chip{display:inline-flex;align-items:center;padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:#fff;font-size:14px;margin:0 6px 6px 0}
.chip.on{background:var(--brand);border-color:var(--brand);color:#fff}
.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;background:#e7e5e4}
.badge.new{background:#dbeafe;color:#1d4ed8}.badge.making{background:#fef3c7;color:#b45309}.badge.ready{background:#dcfce7;color:#15803d}
.badge.done{background:#f5f5f4;color:#78716c}.badge.cancelled{background:#fee2e2;color:#b91c1c}.badge.unpaid{background:#fae8ff;color:#a21caf}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#1c1917;color:#fff;padding:10px 18px;border-radius:20px;z-index:999;font-size:14px;max-width:90vw;white-space:pre-line;text-align:center;line-height:1.5}
.sheet-bg{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:50;display:flex;align-items:flex-end;justify-content:center}
.sheet{background:#fff;width:100%;max-width:560px;max-height:90vh;overflow:auto;border-radius:18px 18px 0 0;padding:20px}
@media(min-width:700px){.sheet-bg{align-items:center}.sheet{border-radius:18px}}
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{padding:8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{color:var(--muted);font-weight:500;font-size:13px}
.hidden{display:none!important}
.ph{position:relative;overflow:hidden;display:block}
.ph>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.ph.art>svg{position:absolute;left:8%;top:6%;width:84%;height:88%}
/* ---------- 表單一致化：輸入框、下拉選單、日期欄位一樣高（iPhone 的日期欄位原本會比較高） ---------- */
.input{min-height:44px;line-height:1.3}
textarea.input{min-height:0;line-height:1.5}
select.input{-webkit-appearance:none;appearance:none;padding-right:34px;text-overflow:ellipsis;
  background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%2378716c' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 12px center/12px 8px}
select.input:disabled,input.input:disabled{background-color:#f5f5f4;color:var(--muted)}
input.input[type=date],input.input[type=time],input.input[type=month],input.input[type=datetime-local]{-webkit-appearance:none;appearance:none;display:block;text-align:left;min-width:0}
.input::-webkit-date-and-time-value{text-align:left}
.btn:not(.sm){min-height:44px}
.hint{font-size:12px;color:var(--muted);margin-top:6px;line-height:1.7}
/* 欄位網格：自動排成多欄（手機約 2 欄），每格標籤在上、輸入框在下，同一列底部對齊；按鈕與輸入框等高 */
.fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(var(--fw,130px),100%),1fr));gap:0 12px;align-items:end}
.fields .wide{grid-column:1/-1}
.fields .span2{grid-column:span 2}
@media(max-width:400px){.fields .span2{grid-column:1/-1}}
.fields>.btn,.fields>.actions{margin-top:10px}
.fields .btn{min-height:44px}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.fields .check{display:flex;align-items:center;gap:8px;min-height:44px}
td .input{min-height:38px;padding:6px 8px}
td select.input{padding-right:28px!important;background-position:right 9px center}
th{white-space:nowrap}
.scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch}
.input{font-size:16px}
td .input{font-size:14px}
/* 勾選項目：框與文字對齊，字級與一般內文一致 */
label.chk{display:flex;gap:10px;align-items:flex-start;margin-top:12px;font-size:15px;line-height:1.5;cursor:pointer}
label.chk input{width:18px;height:18px;margin:2px 0 0;flex:none;accent-color:var(--brand)}
td .btn.sm{min-height:38px}
tr:has(.input)>td{vertical-align:middle}
/* 圖片裁切框 */
.crop-box{position:relative;margin:0 auto;overflow:hidden;background:repeating-conic-gradient(#eee 0 25%,#fff 0 50%) 0 0/16px 16px;border-radius:8px;touch-action:none;cursor:grab;outline:1px solid var(--line)}
.crop-box img{position:absolute;left:0;top:0;transform-origin:0 0;max-width:none;user-select:none;-webkit-user-drag:none;pointer-events:none}
.crop-ring{position:absolute;inset:0;border-radius:50%;box-shadow:0 0 0 999px rgba(0,0,0,.35);border:2px dashed rgba(255,255,255,.9);pointer-events:none}
.crop-ring.sq{border-radius:14%}
