:root{--bg: #f2f4f3;--panel: #ffffff;--ink: #18212b;--muted: #5f6b78;--line: #d7dde2;--blue: #1e5eaa;--blue-ink: #ffffff;--warn: #f2c300;--warn-ink: #2a2300;--done: #2e8b57;--card: #e8eff8;--card-line: #b9cbe5;--red: #c8442a}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg: #141a20;--panel: #1c242c;--ink: #eef2f5;--muted: #9aa7b3;--line: #2e3942;--card: #22344c;--card-line: #3c5a82;--blue: #2f6fbf;--red: #f0765a;--done: #45b07a}}:root[data-theme=dark]{color-scheme:dark;--bg: #141a20;--panel: #1c242c;--ink: #eef2f5;--muted: #9aa7b3;--line: #2e3942;--card: #22344c;--card-line: #3c5a82;--blue: #2f6fbf;--red: #f0765a;--done: #45b07a}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.35 -apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}#root{min-height:100%;display:flex;flex-direction:column}button{font:inherit;color:inherit;cursor:pointer}button:disabled{opacity:.5;cursor:default}.muted{color:var(--muted)}header{background:var(--panel);border-bottom:1px solid var(--line);padding:calc(10px + env(safe-area-inset-top,0px)) 12px 10px;position:sticky;top:0;z-index:5}.daynav{display:flex;align-items:center;justify-content:space-between}.daynav button{background:none;border:1px solid var(--line);border-radius:10px;font-size:22px;width:48px;height:44px}.daynav h1{font-size:20px;margin:0;font-weight:700;text-align:center;cursor:pointer}.daynav small{display:block;font-size:13px;color:var(--muted);font-weight:400}.tabs{display:flex;gap:2px;margin-top:10px;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs button{flex:1 0 auto;padding:0 10px;height:44px;border:none;border-bottom:3px solid transparent;background:none;color:var(--muted);font-size:15px;font-weight:600}.tabs button.on{color:var(--ink);border-color:var(--blue)}.offline{background:var(--warn);color:var(--warn-ink);margin:0 -12px;padding:6px 12px;font-size:14px;font-weight:600;text-align:center}.badge{display:inline-block;background:var(--warn);color:var(--warn-ink);border-radius:999px;font-size:12px;padding:1px 7px;margin-left:4px}main{flex:1;padding:12px 12px calc(160px + env(safe-area-inset-bottom,0px))}.empty{text-align:center;color:var(--muted);padding:40px 12px}.cols{display:grid;gap:6px;position:relative}.cols .name{font-size:13px;font-weight:700;text-align:center;padding-bottom:4px;border-bottom:3px solid}.ruler{position:relative}.ruler span{position:absolute;left:0;font-size:11px;color:var(--muted);transform:translateY(-6px)}.ruler .endline{position:absolute;left:30px;width:100vw;border-top:2px dashed var(--warn);pointer-events:none;z-index:1}.col{position:relative;border-left:1px dashed var(--line)}.job{position:absolute;left:3px;right:0;background:var(--card);border:1px solid var(--card-line);border-left:4px solid var(--blue);border-radius:8px;padding:5px 6px;overflow:hidden;font-size:12px;line-height:1.2;transition:top .35s,height .35s;cursor:pointer;z-index:2}.job b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.job .t{color:var(--muted);font-size:11px}.job.late{background:var(--warn);border-color:#d9ae00;color:var(--warn-ink)}.job.late .t{color:var(--warn-ink)}.job.done{opacity:.5}.job .g{position:absolute;right:5px;top:4px;font-size:11px}.list .job{position:relative;left:0;margin-bottom:4px;padding:12px;font-size:16px;transition:none}.list .job b{font-size:18px;white-space:normal}.list .job .t{font-size:15px}.list .job .g{top:12px;right:12px;font-size:14px}.list .job{margin-bottom:10px}.machine{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:12px;cursor:pointer}.machine h3{margin:0;font-size:17px}.machine .meta{color:var(--muted);font-size:14px;margin:2px 0 6px}.q1{border-left:6px solid var(--red)}.q2{border-left:6px solid var(--warn)}.q3{border-left:6px solid var(--line)}.tel{color:var(--blue);text-decoration:none;font-weight:600;display:inline-block;padding:8px 0 0}.machine .tel{font-size:17px}.fab{position:fixed;right:16px;bottom:calc(76px + env(safe-area-inset-bottom,0px));width:64px;height:64px;border-radius:50%;background:var(--blue);color:var(--blue-ink);font-size:36px;border:none;box-shadow:0 4px 14px #00000040;z-index:6}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:9}.sheet{position:fixed;left:0;right:0;bottom:0;background:var(--panel);border-radius:18px 18px 0 0;padding:16px 16px calc(24px + env(safe-area-inset-bottom,0px));box-shadow:0 -6px 30px #00000040;z-index:10;max-height:90%;max-height:90dvh;overflow:auto;animation:up .22s ease-out;max-width:640px;margin:0 auto}@keyframes up{0%{transform:translateY(100%)}}.sheet .close{position:absolute;right:10px;top:10px;width:44px;height:44px;border:none;background:none;font-size:20px;color:var(--muted)}.sheet h2{margin:0 44px 2px 0;font-size:20px}.sheet .meta{color:var(--muted);margin-bottom:12px}.desc{white-space:pre-wrap;margin-bottom:8px}.guide{background:var(--bg);border-radius:10px;padding:12px;white-space:pre-wrap;font-size:15px;margin:10px 0 14px}.guide.none{color:var(--muted);font-style:italic}.hint{background:var(--warn);color:var(--warn-ink);border-radius:10px;padding:10px 12px;font-size:15px;margin:10px 0}.hint button{display:block;margin-top:8px;height:44px;padding:0 14px;border-radius:10px;border:1px solid var(--warn-ink);background:none;color:var(--warn-ink);font-weight:700}.row{display:flex;gap:8px;margin-top:10px}.row button,.big{flex:1;min-height:52px;border-radius:12px;border:1px solid var(--line);background:var(--panel);font-size:16px;font-weight:600;padding:0 8px}.big{display:block;width:100%;margin-top:14px}.prim,.row button.prim{background:var(--blue);color:var(--blue-ink);border-color:var(--blue)}.row button.ok{border-color:var(--done);color:var(--done)}.row button.del{color:var(--red);border-color:var(--red)}label{display:block;font-size:14px;color:var(--muted);margin:12px 0 4px}input,textarea,select{width:100%;font:inherit;font-size:16px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink)}textarea{min-height:70px;resize:vertical}textarea.tall{min-height:120px}.row2{display:flex;gap:8px}.row2>div{flex:1;min-width:0}.pick{display:flex;gap:6px}.pick button{flex:1;min-height:48px;border-radius:10px;border:2px solid var(--line);background:var(--panel);font-weight:600}.pick button.on{border-color:var(--blue);background:var(--card)}.sched{background:var(--bg);border-radius:12px;padding:4px 12px 12px;margin-top:12px}.sched input,.sched select{background:var(--panel)}.suggest{border:1px solid var(--line);border-radius:10px;margin-top:4px;overflow:hidden}.suggest button{display:block;width:100%;text-align:left;padding:12px;border:none;border-top:1px solid var(--line);background:var(--panel);font-size:15px}.suggest button:first-child{border-top:none}.chip{display:flex;align-items:center;justify-content:space-between;margin-top:6px;color:var(--done);font-weight:600;font-size:14px}.chip button{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:6px 10px;font-size:14px}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(150px + env(safe-area-inset-bottom,0px));background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:999px;font-size:15px;z-index:20;max-width:calc(100% - 32px);text-align:center}.tag{display:inline-block;background:var(--card);border:1px solid var(--card-line);border-radius:8px;padding:4px 8px;font-size:14px;font-weight:600;margin:4px 0 8px}.place{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:4px 0 10px;font-size:16px}.place .tel{padding:0}.place button{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:8px 12px;font-size:14px;flex:none}.partrow{display:flex;justify-content:space-between;gap:8px;padding:12px 4px;border-top:1px solid var(--line);font-size:15px;cursor:pointer}.partrow.cur{font-weight:700;cursor:default}.small{font-size:14px;margin-top:8px}label.check{display:flex;align-items:center;gap:10px;color:var(--ink);font-size:16px;min-height:44px;margin:6px 0 0}label.check input{width:24px;height:24px;margin:0}.list .job .where{color:var(--muted);font-size:14px;margin-top:4px}.job.late .where{color:var(--warn-ink)}.hint.soft{background:var(--card);color:var(--ink);border:1px solid var(--card-line)}h3.section{font-size:15px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:8px 0 10px}.machine.billed{opacity:.6}.badge.soft{background:var(--card);color:var(--ink);border:1px solid var(--card-line)}.progress{height:8px;background:var(--bg);border-radius:4px;overflow:hidden;margin:6px 0 2px}.progress i{display:block;height:100%;background:var(--done)}.week{margin:0 -6px}.wrow{display:grid;gap:4px;padding:6px 0;border-top:1px solid var(--line);min-height:56px}.wrow.whead{border-top:none;padding-top:0;position:sticky;top:0}.wrow.wkend{background:color-mix(in srgb,var(--line) 35%,transparent)}.wrow.today .wday{color:var(--blue)}.wday{background:none;border:none;text-align:left;padding:2px 4px;font-weight:700;font-size:15px;text-transform:capitalize}.wday small{display:block;font-weight:400;font-size:12px;color:var(--muted)}.wcell{min-width:0;display:flex;flex-direction:column;gap:4px}.wjob{background:var(--card);border:1px solid var(--card-line);border-left:4px solid var(--blue);border-radius:6px;padding:4px 5px;font-size:12px;line-height:1.2;cursor:pointer;overflow:hidden}.wjob b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}.wjob .t{color:var(--muted);font-size:11px}.wjob.late{background:var(--warn);color:var(--warn-ink)}.wjob.late .t{color:var(--warn-ink)}.wjob.done{opacity:.5}.daybar{display:flex;gap:6px;margin:8px 0 0}.daybar button{min-height:48px;border-radius:12px;border:1px solid var(--line);background:var(--panel);font-weight:700;font-size:15px;padding:4px 10px}.daybar .go{flex:1;background:var(--done);border-color:var(--done);color:#fff;font-size:17px}.daybar .link{flex:none}.daybar .info{flex:1;text-align:left;line-height:1.15;min-width:0}.daybar .info b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.daybar .info small{color:var(--muted);font-weight:400;font-size:13px}.daybar .info.run{border-color:var(--done)}.daybar .stop,.timer .stop{background:var(--red);border-color:var(--red);color:#fff;flex:none}.daybar .end{flex:none}.timer{background:var(--bg);border-radius:12px;padding:12px;margin:10px 0}.timer-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.timer-top b{font-size:24px;display:block}.timer-top small{color:var(--muted);font-size:13px;display:block}.timer-top button{min-height:56px;padding:0 20px;border-radius:12px;border:none;font-size:17px;font-weight:700;flex:none}.timer .go{background:var(--done);color:#fff}.timer .people{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.timer .people span{border-left:4px solid;background:var(--panel);border-radius:6px;padding:3px 8px;font-size:14px}button.link{background:none;border:none;color:var(--blue);font-weight:600;padding:10px 0;font-size:15px;display:block}.trow{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 2px;border-top:1px solid var(--line);font-size:15px;cursor:pointer}.trow.ro{cursor:default}.trow .edited{display:block;color:var(--muted);font-size:12px}.trow b{white-space:nowrap}.sums{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:6px}.sums div{background:var(--bg);border-radius:10px;padding:8px}.sums b{display:block;font-size:17px}.sums small{color:var(--muted);font-size:12px}.job.run{outline:3px solid var(--done);outline-offset:-1px}.job .runner{color:var(--done);font-weight:700}.cats{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.cats button{min-height:48px;border-radius:10px;border:2px solid var(--line);background:var(--panel);font-weight:600;font-size:15px}.cats button.on{border-color:var(--blue);background:var(--card)}.daybar.col{flex-direction:column;background:var(--bg);border-radius:12px;padding:10px}.job.internal,.wjob.internal{background:repeating-linear-gradient(135deg,var(--panel) 0 8px,var(--bg) 8px 16px);border-color:var(--line);border-left-style:dashed}.kindtag{display:inline-block;font-size:12px;font-weight:700;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:1px 6px;margin-right:6px;vertical-align:middle}.bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:7;display:flex;background:var(--panel);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px)}.bottomnav button{flex:1;min-width:0;border:none;background:none;min-height:60px;font-size:12px;font-weight:600;color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.bottomnav button.on{color:var(--blue)}.bottomnav .ico{font-size:22px;position:relative;line-height:1}.bottomnav .ico .badge{position:absolute;top:-6px;left:18px;font-size:11px}.seg{display:flex;background:var(--bg);border-radius:10px;padding:3px;margin-top:10px;gap:3px}.seg button{flex:1;min-height:40px;border:none;border-radius:8px;background:none;font-weight:600;font-size:15px;color:var(--muted)}.seg button.on{background:var(--panel);color:var(--ink);box-shadow:0 1px 3px #00000026}.chips{display:flex;gap:6px;margin-top:8px;overflow-x:auto;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chips button{flex:none;min-height:36px;padding:0 14px;border-radius:999px;border:2px solid var(--line);background:var(--panel);font-weight:600;font-size:14px}.chips button.on{border-color:var(--blue);background:var(--card)}.choice{display:block;width:100%;text-align:left;margin-top:12px;padding:16px;min-height:76px;border:2px solid var(--line);border-radius:14px;background:var(--panel)}.choice b{display:block;font-size:19px}.choice span{color:var(--muted);font-size:15px}.plate{width:100%;max-height:320px;object-fit:contain;background:#000;border-radius:10px;display:block;margin-top:8px;cursor:zoom-in}.plate.mid{max-height:200px}.plate.ph{height:120px;display:flex;align-items:center;justify-content:center;color:var(--muted);background:var(--bg)}.plate-sm{width:64px;height:64px;object-fit:cover;border-radius:8px;float:right;margin-left:10px}.zoom{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#000000eb;display:flex;align-items:center;justify-content:center}.zoom img{max-width:100%;max-height:100%}.machinelink{display:block;width:100%;text-align:left;border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:10px 12px;min-height:64px;overflow:hidden}.machinelink b{display:block;font-size:16px}.machinelink span{color:var(--blue);font-size:14px;font-weight:600}.machinelink .plate-sm{width:48px;height:48px}.part{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line);font-size:16px;clear:both}.part input[type=checkbox]{width:26px;height:26px;margin:0;flex:none}.part span{flex:1;min-width:0}.part small{font-size:13px}.part.ord span{color:var(--muted);text-decoration:line-through}.part .x{background:none;border:none;color:var(--muted);font-size:24px;padding:0 8px;min-height:40px}.addpart{display:flex;gap:6px;margin-top:8px}.addpart input{flex:1;min-width:0}.addpart input.q{flex:0 0 60px;text-align:center}.addpart button{min-height:46px;padding:0 14px;border-radius:10px;border:none;background:var(--blue);color:var(--blue-ink);font-weight:700}.search{margin-bottom:12px}.hist{padding:10px 2px;border-top:1px solid var(--line);font-size:15px;cursor:pointer}.machine .badge{margin-left:6px}.machine.stock{cursor:default;border-left:6px solid var(--blue)}.grp{font-weight:700;font-size:15px;margin:14px 0 2px}.machine.bill{cursor:default}.machine.billed{opacity:.65}.bjob{border-top:1px solid var(--line);padding:10px 0}.bjob:first-of-type{border-top:none}.bhead{cursor:pointer}.bline{font-size:14px;margin-top:4px}.billrow{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}.billrow label{margin:0;color:var(--ink);font-size:15px;font-weight:600}.billrow input{width:80px;text-align:center;font-size:18px;font-weight:700;padding:8px}.billrow button{min-height:46px;border-radius:10px;border:1px solid var(--line);background:var(--panel);font-weight:700;padding:0 14px;margin-left:auto}.billrow button.prim{background:var(--blue);color:var(--blue-ink);border-color:var(--blue)}.billrow.done span{flex:1}.machine.sale{display:flex;justify-content:space-between;gap:10px;align-items:center}.machine.sale .sum{text-align:right;flex:none}.machine.sale .sum b{display:block;font-size:17px}.machine.sale .sum small{color:var(--muted)}.line{display:flex;gap:6px;align-items:center;padding:6px 0;border-top:1px solid var(--line)}.line .q{flex:0 0 56px;text-align:center;padding:8px 4px}.line .n{flex:1;min-width:0;font-size:15px}.line .pr{flex:0 0 84px;text-align:right;padding:8px}.line .x{background:none;border:none;color:var(--muted);font-size:24px;padding:0 6px}.tot{text-align:right;font-weight:700;font-size:19px;margin:12px 0 4px}.tablewrap{overflow-x:auto;margin:0 -4px}.rtable{border-collapse:collapse;width:100%;font-size:14px}.rtable th,.rtable td{padding:8px 6px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap}.rtable thead th{color:var(--muted);font-weight:600;font-size:12px;white-space:normal;vertical-align:bottom}.rtable tbody th{text-align:left;padding-left:8px}@media(min-width:900px){main{max-width:1200px;margin:0 auto;width:100%}header{padding-left:max(12px,calc((100% - 1200px)/2));padding-right:max(12px,calc((100% - 1200px)/2))}.bgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;align-items:start}.bgrid .machine{margin-bottom:0}.rtable{font-size:15px}.bottomnav{justify-content:center}.bottomnav button{flex:0 0 160px}}.picked{display:flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--panel);font-size:15px}.picked span:first-child{flex:1;min-width:0}.picked .x{background:none;border:none;color:var(--muted);font-size:24px;padding:0 4px}.breakdown{margin-top:12px;font-size:14px}.breakdown>div:not(.tot){display:flex;justify-content:space-between;gap:8px;padding:4px 0;border-top:1px solid var(--line)}.filepick{display:block;border:2px dashed var(--line);border-radius:12px;padding:18px;text-align:center;color:var(--blue);font-weight:700;font-size:16px;cursor:pointer;margin-top:8px}.filepick input{display:block;margin:0 auto 8px}.prow{border-top:1px solid var(--line)}.phead{display:flex;justify-content:space-between;gap:10px;padding:10px 2px;cursor:pointer;font-size:15px}.phead .pp{text-align:right;flex:none;display:flex;flex-direction:column}.phead .own{color:var(--done);font-weight:700}.pedit{padding:0 2px 12px}.bmats{margin-top:6px;font-size:14px;background:var(--bg);border-radius:8px;padding:6px 8px}.bmats>div{display:flex;justify-content:space-between;gap:8px;padding:3px 0}.bmats .bmtot{border-top:1px solid var(--line);margin-top:4px;padding-top:5px}.login{max-width:420px;margin:0 auto;padding:calc(40px + env(safe-area-inset-top,0px)) 20px 40px;width:100%}.login h1{font-size:24px}.login .code{font-size:28px;letter-spacing:6px;text-align:center}@media(prefers-reduced-motion:reduce){.job,.sheet{transition:none;animation:none}}.bsum{background:var(--card);border:1px solid var(--card-line);border-radius:12px;padding:10px 12px;margin-bottom:12px;font-size:16px}.bsum .hint{margin:8px 0 0;font-size:14px}.warn{color:var(--red);font-weight:700}.warnline{background:var(--warn);color:var(--warn-ink);border-radius:8px;padding:4px 8px;margin-top:4px}.reasons{margin-top:10px}.reasons .cats{margin-top:6px}.billrow button+button{margin-left:0}.bjob>.big.prim{margin-top:8px;width:100%}.mcost{display:flex;align-items:center;gap:6px;margin:-2px 0 6px;font-size:13px;color:var(--muted)}.mcost input{width:80px;padding:4px 6px;font-size:14px}.rsum{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:12px 0}.rsum div{background:var(--card);border:1px solid var(--card-line);border-radius:10px;padding:8px 10px}.rsum small{display:block;color:var(--muted);font-size:12px}.rsum b{font-size:18px}.rtable tr.totrow th,.rtable tr.totrow td{font-weight:700;border-top:2px solid var(--ink)}.kmrow{display:flex;align-items:center;gap:8px;margin:10px 0 4px;flex-wrap:wrap}.kmrow label{margin:0;color:var(--ink);font-size:15px;font-weight:600}.kmrow input{width:90px;text-align:center;font-size:17px;padding:8px}.invgroup{font-weight:700;font-size:14px;color:var(--muted);margin:10px 0 2px}.invrow{display:flex;align-items:center;gap:8px;margin:0;padding:8px 0;border-top:1px solid var(--line);color:var(--ink);font-size:15px}.invrow input[type=checkbox]{width:26px;height:26px;flex:none}.invrow .n{flex:1;min-width:0}.invrow .pr{flex:0 0 84px;text-align:right;padding:8px}.jobibtn{display:inline-block;margin-top:10px;padding:12px 18px;border-radius:10px;background:var(--blue);color:var(--blue-ink);font-weight:700;text-decoration:none;cursor:grab}
