@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+Thai:wght@400;500;600;700&family=Nunito:wght@500;600;700;800;900&display=swap');
:root{--cream:#fbf8f2;--paper:#fffefa;--brown:#4b2b22;--ink:#342b27;--muted:#94877e;--line:#eae4db;--coral:#f17e69;--coral-light:#fff0e9;--green:#508a71;--green-light:#edf5ec;--yellow:#e6b84f;--blue:#709faa;--radius:18px;--shadow:0 6px 24px #4b2b2204;font-family:'IBM Plex Sans Thai',Tahoma,sans-serif;color:var(--ink);font-size:14px;background:var(--cream)}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #d69452;outline-offset:3px}button{color:inherit}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.app-shell{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:100vh}.sidebar{overflow-y:auto;background:#fffdf8;border-right:1px solid var(--line);padding:28px 20px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;width:230px;z-index:20}.brand{display:flex;gap:10px;align-items:center;margin-bottom:34px}.brand img{width:52px;height:52px;object-fit:contain;border-radius:50%}.brand span{font-family:Nunito,sans-serif;font-weight:900;font-size:19px;letter-spacing:-.7px;color:var(--brown)}.brand small{display:block;font-size:8px;letter-spacing:2.1px;margin-top:2px;font-weight:800}.branch{padding:12px 10px;border:1px solid var(--line);border-radius:12px;display:flex;align-items:center;gap:10px;background:var(--cream)}.branch strong{font-size:12px}.branch small{display:block;font-size:10px;color:var(--muted)}.branch-icon{font-family:Nunito;font-size:16px;font-weight:800;width:32px;height:34px;display:grid;place-items:center;background:white;border-radius:8px}.live-dot{width:7px;height:7px;background:var(--green);border-radius:50%;margin-left:auto;flex-shrink:0}.nav-label{margin:28px 12px 12px;font-size:10px;letter-spacing:1px;color:#a3978c}nav{display:grid;gap:7px}.nav-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:11px;font-size:13px;color:#84766c;transition:.18s}.nav-item:hover{background:#f6f1e8;color:var(--brown)}.nav-item.active{background:var(--coral-light);color:#b75542;font-weight:600}.nav-item.active:before{content:'';height:18px;width:3px;background:var(--coral);position:absolute;left:20px;border-radius:2px}.nav-count{font:800 10px Nunito;margin-left:auto;background:#f5ded2;color:#b75542;border-radius:5px;padding:2px 6px}.sidebar-bottom{margin-top:auto;padding-top:35px}.sidebar-bottom>.little-flower{font-size:29px;color:var(--coral);margin:0 12px 7px}.sidebar-bottom>strong{font-size:12px;margin-left:12px}.sidebar-bottom>p{color:var(--muted);font-size:10px;margin:4px 12px 20px}.owner{border-top:1px solid var(--line);padding-top:18px;display:flex;gap:10px;align-items:center}.avatar{width:34px;height:34px;display:grid;place-items:center;background:#eee4d7;color:var(--brown);border-radius:50%;font:800 14px Nunito}.owner strong{font-size:11px}.owner small{display:block;font-size:10px;color:var(--muted)}.workspace{grid-column:2;min-width:0}.topbar{height:76px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 34px;background:#fffefa9c}.breadcrumb{font-size:12px;color:var(--muted)}.breadcrumb span{padding:0 14px;color:#cbbfb1}.breadcrumb strong{font-weight:500;color:var(--brown)}.top-actions{display:flex;align-items:center;gap:18px}.today{font-size:11px;color:var(--muted)}.sample-badge{background:#f1eadb;color:#8b754f;border-radius:6px;padding:4px 8px;font-size:10px}.icon-button{display:grid;place-items:center;background:none;border:1px solid var(--line);border-radius:50%;width:29px;height:29px;color:#8b7a6a}.small-avatar{width:31px;height:31px;font-size:12px}.mobile-menu{display:none}#main{max-width:1600px;margin:auto;padding:32px 34px 20px;min-height:calc(100vh - 130px)}.page-title{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:25px}.eyebrow{font:800 10px Nunito;letter-spacing:2px;color:#a58c78;margin-bottom:7px}.page-title h1{font-size:26px;line-height:1.4;font-weight:600;letter-spacing:-.8px;margin:0;color:var(--brown)}.page-title p{margin:6px 0 0;font-size:12px;color:var(--muted)}.title-buttons{display:flex;gap:10px}.btn{border:1px solid var(--line);background:var(--paper);border-radius:9px;padding:10px 15px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:12px;font-weight:500;white-space:nowrap}.btn svg{width:16px;height:16px}.btn.primary{background:var(--brown);border-color:var(--brown);color:white;box-shadow:0 3px 5px #4b2b2210}.btn.primary:hover{background:#684032}.btn.light-coral{background:var(--coral-light);border-color:#f1d9cd;color:#b85b44}.btn.small{padding:7px 10px;font-size:11px}.btn.ghost{border:none;background:none;padding:6px 0;color:var(--muted)}.welcome{position:relative;background:#f3e9db;border:1px solid #ede0cd;border-radius:var(--radius);padding:23px 28px;margin-bottom:23px;display:flex;align-items:center;justify-content:space-between;overflow:hidden;min-height:148px}.welcome:after{content:'';width:170px;height:170px;border-radius:50%;border:1px solid #e3cfb6;position:absolute;right:125px;top:-81px;pointer-events:none}.welcome .welcome-kicker{color:#a18465;font-size:10px;letter-spacing:1.3px;font-weight:600}.welcome h2{font-size:23px;font-weight:600;margin:8px 0;color:var(--brown)}.welcome p{font-size:12px;color:#937c68;margin:0;line-height:1.9}.welcome-art{display:flex;align-items:center;gap:19px;margin-right:15px;z-index:1}.welcome-logo{width:116px;height:116px;object-fit:contain;border-radius:50%;mix-blend-mode:multiply;transform:rotate(5deg)}.art-note{font-size:11px;color:#9c7e60;line-height:1.7;transform:rotate(-5deg)}.art-note b{display:block;font-family:Nunito;font-size:17px;color:#b57658}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:25px}.metric{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:18px 20px;box-shadow:var(--shadow)}.metric-top{display:flex;justify-content:space-between;align-items:center;color:#8c7e72;font-size:11px}.metric-icon{width:30px;height:30px;display:grid;place-items:center;border-radius:9px;background:var(--coral-light);color:#c27360}.metric:nth-child(2) .metric-icon{background:#eef3ed;color:#6d8d69}.metric:nth-child(3) .metric-icon{background:#fff4da;color:#b79442}.metric:nth-child(4) .metric-icon{background:#edf3f5;color:#79a0a8}.metric-number{font-family:Nunito,'IBM Plex Sans Thai';font-weight:800;color:var(--brown);font-size:31px;line-height:1.5;margin-top:7px}.metric-number span{font-family:'IBM Plex Sans Thai';font-size:12px;font-weight:400;margin-left:6px;color:var(--muted)}.metric-foot{font-size:10px;color:#9c8d80;margin-top:4px}.metric-foot .green{color:var(--green)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 14px}.section-heading h2{margin:0;font-size:15px;font-weight:600;color:var(--brown)}.section-heading h2 span{font-size:10px;font-weight:400;color:var(--muted);margin-left:10px}.legend{display:flex;gap:15px;color:var(--muted);font-size:10px}.legend i{display:inline-block;height:6px;width:6px;margin-right:5px;border-radius:50%;background:var(--green)}.legend .busy{background:var(--coral)}.legend .off{background:#b9b0a5}.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.machines-panel{margin-bottom:24px}.machine-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}.machine{position:relative;background:#f8f8f1;border:1px solid #e1e8db;border-radius:12px;padding:13px 10px;text-align:center;min-width:0;transition:transform .15s}.machine:hover{transform:translateY(-3px)}.machine.running{background:#fff5ef;border-color:#f1dace}.machine.maintenance{background:#f2f0ed;border-color:#e3dfd9}.machine-head{display:flex;align-items:center;justify-content:space-between;font:800 12px Nunito;color:var(--brown)}.machine-type{font:400 9px 'IBM Plex Sans Thai';color:var(--muted)}.washer{width:47px;height:53px;border:1.6px solid #8b9c83;border-radius:7px;position:relative;margin:15px auto 10px;background:#fff9}.washer:before{content:'';width:29px;height:29px;border-radius:50%;border:1.6px solid #8b9c83;position:absolute;left:7px;bottom:6px;background:#dfe6d740;box-shadow:inset 0 0 0 4px #fff8}.washer:after{content:'••';font:12px Nunito;position:absolute;left:5px;top:-2px;letter-spacing:1px;color:#8b9c83}.running .washer,.running .washer:before{border-color:#cc9277}.running .washer:after{color:#cc9277}.running .washer:before{background:#f4cfb94d}.maintenance .washer,.maintenance .washer:before{border-color:#b7ada3}.machine-status{font-size:10px;color:var(--green);min-height:17px}.running .machine-status{color:#bd795f}.maintenance .machine-status{color:#968b80}.machine-detail{font-size:9px;color:#a7998c;margin-top:3px;white-space:nowrap}.dashboard-lower{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:20px}.panel-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:17px}.panel-heading h2{font-size:14px;font-weight:600;margin:0;color:var(--brown)}.count-pill{font:800 10px Nunito;background:#f1e9dc;color:#9a8064;padding:3px 7px;border-radius:6px;margin-left:7px}.text-link{font-size:10px;color:#a28063;display:flex;align-items:center;gap:5px;background:none;border:none}.text-link svg{width:12px;height:12px}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:11px;text-align:left;white-space:nowrap}th{font-size:10px;color:#a29385;font-weight:400;border-bottom:1px solid var(--line);padding:0 12px 12px}td{padding:14px 12px;border-bottom:1px solid #f1ece5}tr:last-child td{border-bottom:none}th:first-child,td:first-child{padding-left:0}th:last-child,td:last-child{padding-right:0}.clickable-row{cursor:pointer}.clickable-row:hover{background:#fcf8f1}.order-code{font:800 11px Nunito;color:var(--brown)}.person{display:flex;align-items:center;gap:8px}.person-avatar{width:29px;height:29px;border-radius:9px;display:grid;place-items:center;color:#997b66;background:#f2e9dd;font-size:11px}.person small{display:block;color:#b4a497;font-size:9px;margin-top:2px}.member-mark{font-size:8px;color:var(--green);margin-left:3px;background:var(--green-light);padding:1px 4px;border-radius:3px}.status{font-size:10px;display:inline-flex;align-items:center;gap:5px;border-radius:6px;padding:4px 8px;background:#f4eee4;color:#a38b6c}.status:before{content:'';height:5px;width:5px;border-radius:50%;background:currentColor}.status.washing{background:#edf3f5;color:#7597a2}.status.drying{background:#fff1e5;color:#bf8d62}.status.folding{background:#f2ecf7;color:#9e86ae}.status.ready{background:#edf4e9;color:#739060}.status.completed{background:#f1f0eb;color:#a49c8f}.mini-note{border-top:1px solid var(--line);margin-top:10px;padding-top:11px;font-size:10px;color:var(--muted);display:flex;gap:7px;align-items:center}.mini-note svg{width:13px;height:13px}.task-list{display:grid;gap:14px}.task{display:flex;align-items:flex-start;gap:10px;cursor:pointer;font-size:11px;line-height:1.5}.task input{appearance:none;width:16px;height:16px;flex-shrink:0;border:1px solid #d8cdbd;border-radius:5px;margin:0}.task input:checked{background:var(--green);border-color:var(--green)}.task input:checked:after{content:'✓';display:block;text-align:center;color:white;font-size:11px;line-height:14px}.task:has(input:checked) span{color:#a7a493;text-decoration:line-through}.task small{display:block;font-size:9px;color:#baa995;margin-top:2px}.check-progress{height:5px;background:#f2eee4;border-radius:5px;margin:15px 0 18px;overflow:hidden}.check-progress i{display:block;height:100%;background:#97b388}.task-summary{font-size:10px;color:#9a8a79}.notice{background:#fff4e9;border:1px solid #f2e0c7;padding:13px;border-radius:10px;margin-top:19px;font-size:10px;color:#a18464;line-height:1.8}.notice strong{display:block;font-size:11px;font-weight:500}.app-footer{padding:15px 34px 22px;display:flex;justify-content:space-between;color:#b3a393;font-size:9px}.footer-dot{padding:0 5px}.toolbar{display:flex;justify-content:space-between;gap:12px;margin-bottom:18px;flex-wrap:wrap}.tabs{display:flex;gap:6px;flex-wrap:wrap}.tab{border:1px solid transparent;background:none;color:#948375;padding:8px 12px;font-size:11px;border-radius:8px}.tab.active{background:#f0e4d5;color:var(--brown);border-color:#e5d7c3}.search{background:var(--paper);border:1px solid var(--line);border-radius:9px;padding:9px 12px;width:240px;font-size:11px;color:var(--brown)}.empty{padding:36px 20px;text-align:center;color:var(--muted);line-height:1.9}.grid-two{display:grid;grid-template-columns:1fr 1fr;gap:20px}.grid-three{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.member-card{padding:22px}.member-card .person-avatar{width:43px;height:43px;font-size:16px}.member-card h3{font-size:15px;margin:0 0 3px;color:var(--brown)}.member-meta{margin:21px 0;display:flex;justify-content:space-between;align-items:center}.points{font:800 28px Nunito;color:var(--brown)}.points small{font:400 11px 'IBM Plex Sans Thai';color:var(--muted);margin-left:5px}.line-tag{font-size:9px;border-radius:5px;padding:4px 7px;background:#eef6ea;color:#68935c}.line-tag.unlinked{color:#a48e73;background:#f5efe5}.package-strip{padding:10px 12px;background:#f8f3e9;border-radius:8px;color:#aa8966;font-size:10px;margin-bottom:14px}.package-strip strong{display:block;color:var(--brown);font-size:11px;font-weight:500}.card-actions{display:flex;justify-content:space-between;gap:6px}.callout{padding:15px 18px;border:1px dashed #dfc8ac;border-radius:12px;color:#977e60;background:#fbf1e4;font-size:11px;line-height:1.9;margin-bottom:22px}.callout strong{color:var(--brown)}.package-card{padding:26px;position:relative;overflow:hidden}.package-card .eyebrow{color:var(--green)}.package-card h2{font-family:Nunito;font-size:29px;line-height:1.2;margin:12px 0 3px;color:var(--brown)}.package-card p{font-size:12px;color:var(--muted)}.package-card ul{padding:0;list-style:none;margin:24px 0;color:#8c7969;font-size:12px;line-height:2.7}.package-card li:before{content:'✓';color:var(--green);margin-right:9px}.package-stamp{position:absolute;right:20px;top:19px;padding:4px 8px;border:1px solid #e8dbc8;border-radius:20px;font-size:9px;color:#a18465}.price-placeholder{border-top:1px solid var(--line);padding-top:16px;color:#b48c66;font-size:12px}.price-placeholder strong{display:block;font-size:18px;color:var(--brown);margin-bottom:4px}.settings-row{display:flex;justify-content:space-between;padding:16px 0;border-bottom:1px solid var(--line);font-size:12px;gap:15px}.settings-row:last-child{border:0}.settings-row span{color:var(--muted)}.status-list{display:flex;flex-direction:column;gap:12px}.activity{display:flex;gap:10px;color:#887464;font-size:11px;line-height:1.8;padding-bottom:12px;border-bottom:1px solid var(--line)}.activity time{font:700 11px Nunito;color:#baa58e;min-width:35px}.large-machine .machine-grid{grid-template-columns:repeat(4,1fr)}.large-machine .machine{padding:20px}.large-machine .washer{width:68px;height:76px;margin:20px auto}.large-machine .washer:before{width:42px;height:42px;left:11px;bottom:9px}.large-machine .machine-status{font-size:12px}.large-machine .machine-detail{font-size:10px}.large-machine .machine-head{font-size:16px}.machine-actions{display:flex;justify-content:center;gap:7px;margin-top:14px}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.modal-header h2{font-size:20px;color:var(--brown);margin:0}.modal-header p{font-size:11px;color:var(--muted);margin:4px 0 0}dialog{border:1px solid #e2d5c3;border-radius:20px;padding:28px;width:min(640px,calc(100vw - 28px));max-height:90vh;overflow:auto;background:var(--paper);color:var(--ink);box-shadow:0 30px 100px #3e261b35}dialog::backdrop{background:#2d211b66;backdrop-filter:blur(3px)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-field{display:flex;flex-direction:column;gap:6px;font-size:11px;color:#8b7562}.form-field.full{grid-column:1/-1}.form-field input,.form-field select,.form-field textarea{border:1px solid #e0d4c4;background:#fffdf8;border-radius:8px;padding:10px 11px;color:var(--brown);width:100%;min-width:0}.form-field textarea{resize:vertical;min-height:65px}.form-field input:read-only{background:#f2ede5}.form-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:23px}.field-hint{font-size:10px;color:#ac9277;line-height:1.7}.detail-pair{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:20px 0;font-size:12px}.detail-pair span{display:block;color:var(--muted);font-size:10px;margin-bottom:5px}.detail-pair strong{font-weight:500}.detail-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px}.receipt-frame{display:block;width:100%;height:470px;border:1px solid var(--line);background:white;border-radius:8px}.receipt-mode{font-size:11px;color:var(--muted);padding:0 0 14px;line-height:1.8}#toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%,15px);padding:12px 20px;border-radius:10px;background:var(--brown);color:white;box-shadow:0 5px 25px #0002;font-size:12px;opacity:0;pointer-events:none;transition:.2s;z-index:100;max-width:90vw}#toast.visible{opacity:1;transform:translate(-50%,0)}.fade-in{animation:reveal .35s ease both}@keyframes reveal{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@media(min-width:1450px){#main{padding:36px 46px}.dashboard-lower{grid-template-columns:minmax(0,1fr) 315px}.metric-grid{gap:20px}.machine-grid{gap:14px}.machine{padding:17px 13px}}
@media(max-width:1150px){.app-shell{grid-template-columns:200px minmax(0,1fr)}.sidebar{width:200px;padding:24px 15px}.brand{gap:6px}.brand img{width:42px;height:42px}.brand span{font-size:17px}.topbar{padding:0 22px}#main{padding:25px 22px}.dashboard-lower{grid-template-columns:minmax(0,1fr)}.dashboard-lower>.panel:last-child .task-list{grid-template-columns:1fr 1fr}.machine-grid{gap:7px}.machine{padding:12px 6px}.metric{padding:15px}.metric-top{font-size:10px}.welcome-art{margin:0}.grid-three{grid-template-columns:repeat(2,1fr)}}
@media(max-width:800px){.app-shell{display:block}.sidebar{transform:translateX(-100%);transition:transform .2s;width:230px;box-shadow:10px 0 50px #0001}.sidebar.open{transform:none}.workspace{display:block}.mobile-menu{display:grid}.topbar{height:62px;padding:0 16px;gap:10px}.breadcrumb{margin-right:auto;font-size:11px}.breadcrumb span{padding:0 6px}.top-actions{gap:10px}.today,.small-avatar{display:none}#main{padding:22px 16px}.page-title h1{font-size:23px}.page-title{align-items:flex-start}.page-title p{font-size:11px}.title-buttons .btn:not(.primary){display:none}.title-buttons .btn{font-size:11px;padding:9px 11px}.welcome{padding:20px;min-height:140px}.welcome h2{font-size:19px}.welcome p{font-size:11px}.welcome-logo{width:88px;height:88px}.art-note{display:none}.metric-grid{grid-template-columns:1fr 1fr;gap:10px}.metric{padding:15px}.machine-grid{grid-template-columns:repeat(4,1fr)}.machine{padding:13px 8px}.section-heading{align-items:flex-start}.section-heading h2 span{display:block;margin:4px 0 0}.legend{gap:8px;font-size:9px;padding-top:3px}.panel{padding:17px}.grid-two{grid-template-columns:1fr}.large-machine .machine-grid{grid-template-columns:repeat(3,1fr)}.app-footer{padding:12px 16px;line-height:1.8;gap:15px}.app-footer>span:last-child{max-width:130px;text-align:right}.grid-three{gap:12px}.member-card{padding:18px}.search{width:100%}.toolbar{display:block}.tabs{margin-bottom:12px}dialog{padding:22px}.form-grid{gap:12px}}
@media(max-width:480px){.welcome-art{display:none}.welcome{min-height:130px}.page-title h1{font-size:21px}.metric-number{font-size:28px}.metric-icon{width:25px;height:25px}.metric-icon svg{width:16px}.grid-three{grid-template-columns:1fr}.large-machine .machine-grid{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}.form-field.full{grid-column:1}.dashboard-lower>.panel:last-child .task-list{grid-template-columns:1fr}.welcome h2{font-size:21px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Member machine view / LINE reminder demo */
.card-actions{flex-wrap:wrap}.member-status-banner{display:flex;align-items:center;gap:12px;background:#edf5ec;border:1px solid #d8e7d4;padding:14px 16px;border-radius:12px;color:#52794f}.member-status-banner>svg{width:27px;height:27px}.member-status-banner strong{display:block;font-size:13px}.member-status-banner span{display:block;font-size:10px;margin-top:3px}.member-run{padding:22px;border:1px solid #e4dacb;border-radius:16px;background:#f8f2e8;margin:16px 0}.member-run-top{display:flex;align-items:center;justify-content:space-between}.member-run-kicker{font-size:10px;color:#a0866b}.member-run h3{margin:6px 0;font:800 21px Nunito;color:var(--brown)}.member-run h3 small{font:400 12px 'IBM Plex Sans Thai';color:#987e65}.member-run-icon{display:grid;place-items:center;width:46px;height:46px;background:#fff9;border-radius:13px;color:#ba8d6d}.member-run-icon svg{width:27px;height:27px}.countdown{font:800 54px Nunito;color:var(--brown);margin-top:10px;line-height:1.3}.countdown span{font:400 14px 'IBM Plex Sans Thai';margin-left:8px;color:#a58b71}.member-run p{font-size:10px;color:#a28b74;margin:3px 0 17px}.run-progress{height:6px;border-radius:5px;background:#eadecb;overflow:hidden}.run-progress i{display:block;height:100%;border-radius:5px;background:var(--coral)}.run-foot{display:flex;justify-content:space-between;gap:10px;font-size:9px;color:#a08a72;margin-top:11px}.member-run.finished{background:#eef4e9;border-color:#dce7d4}.member-run.finished .countdown{font-family:'IBM Plex Sans Thai';font-size:28px}.member-run.finished .run-progress i{background:var(--green)}.reminder-preview{background:#f5f6f0;padding:16px;border-radius:13px;margin-top:16px}.reminder-preview .panel-heading h2{display:flex;align-items:center;gap:7px;font-size:12px}.line-bubble{background:#dbeccf;border-radius:12px 12px 12px 3px;padding:13px 15px;margin-top:10px;max-width:95%;font-size:11px;line-height:1.8}.line-bubble strong{font-size:10px;color:#527746}.line-bubble p{margin:5px 0 0;color:#50604a}.member-empty{padding:16px;background:#fbf8f2;border:1px dashed var(--line);border-radius:10px;margin-top:14px;font-size:11px}

/* Future member booking configuration */
.booking-config-panel .panel-heading h2{display:flex;align-items:center;gap:8px}.booking-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;background:#f8f3ea;border-radius:12px;padding:17px;margin-top:17px}.booking-summary span{display:block;font-size:10px;color:var(--muted);margin-bottom:7px}.booking-summary strong{font-size:12px;font-weight:500;color:var(--brown)}.machine-select{margin:0;padding:14px;border:1px solid var(--line);border-radius:10px;display:flex;gap:22px;flex-wrap:wrap}.machine-select legend{font-size:11px;color:#947b65;padding:0 5px}.machine-select label{display:flex;align-items:center;gap:6px;font:800 13px Nunito}.machine-select input{accent-color:var(--brown)}@media(max-width:800px){.booking-summary{grid-template-columns:1fr 1fr}.booking-config-panel .panel-heading{align-items:flex-start}.booking-config-panel .panel-heading h2{font-size:12px}.booking-config-panel .sample-badge{font-size:8px}}

/* Member booking prototype */
.booking-demo-banner{display:flex;align-items:flex-start;gap:14px;padding:18px 21px;background:#f2e9d9;border:1px solid #e9dbc5;border-radius:14px;margin-bottom:20px}.booking-demo-banner strong{font-size:13px;color:var(--brown)}.booking-demo-banner p{font-size:11px;color:#9c8368;line-height:1.9;margin:5px 0 0}.booking-demo-banner>.sample-badge{margin-left:auto;white-space:nowrap;background:#e9dcc5}.demo-icon{width:35px;height:35px;display:grid;place-items:center;background:#fff8;border-radius:10px;color:#a58564;flex-shrink:0}.booking-member-selector{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:22px}.booking-member-selector label{font-size:11px;color:#9a8067}.booking-member-selector select{font:inherit;font-size:12px;padding:9px 12px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--brown)}.booking-member-selector>.field-hint{margin-left:auto;font-size:9px}.booking-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px;align-items:start}.booking-selection{padding:26px}.booking-step{display:flex;align-items:center;gap:9px;margin-bottom:14px}.booking-step>span{font:800 11px Nunito;color:#c08e6a;background:#f8ede1;width:25px;height:25px;border-radius:8px;display:grid;place-items:center}.booking-step h2{font-size:14px;margin:0;color:var(--brown);font-weight:600}.booking-step small{font-size:10px;margin-left:auto;color:var(--muted)}.booking-dates{display:flex;gap:10px;margin-bottom:28px}.booking-date{background:var(--cream);border:1px solid var(--line);border-radius:10px;padding:13px 23px;font-size:12px;color:#a18a72}.booking-date.selected{border-color:var(--brown);background:var(--brown);color:white}.booking-machine-options{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:28px}.booking-machine-option{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:17px 9px;display:flex;flex-direction:column;align-items:center;gap:9px}.booking-machine-option svg{width:29px;height:29px;color:#b49a81}.booking-machine-option strong{font:800 16px Nunito;color:var(--brown)}.booking-machine-option small{font-size:10px;color:#9d8973}.booking-machine-option.selected{border-color:var(--coral);background:var(--coral-light);box-shadow:inset 0 0 0 1px var(--coral)}.booking-machine-option.unavailable{background:#f0eeea;opacity:.6}.booking-slots{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.booking-slot{display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;min-height:66px;background:#f7faf3;border:1px solid #dde7d6;border-radius:9px;padding:11px 6px;color:#6e8561}.booking-slot strong{font:800 13px Nunito}.booking-slot small{font-size:9px}.booking-slot:disabled{opacity:1;background:#f2efea;border-color:#e9e2d8;color:#b4a698}.booking-slot.selected{border-color:var(--green);background:#e8f1e0;box-shadow:inset 0 0 0 1px var(--green);color:#4d7841}.booking-aside{position:sticky;top:20px}.booking-selection-summary{padding:23px}.booking-selection-summary .panel-heading>svg{color:var(--green)}.booking-summary-person{display:flex;gap:10px;align-items:center;border-bottom:1px dashed var(--line);padding:0 0 19px;margin-top:21px}.booking-summary-person>.person-avatar{width:39px;height:39px}.booking-summary-person strong{font-size:13px}.booking-summary-person small{display:block;font-size:10px;color:var(--muted);margin-top:3px}.booking-selection-summary .settings-row{font-size:11px}.booking-selection-summary .settings-row strong{font-weight:500;text-align:right}.booking-limit{display:flex;justify-content:space-between;font-size:11px;padding:13px;background:#f5efe5;border-radius:9px;margin:18px 0}.booking-limit strong{font:800 14px Nunito;color:var(--brown)}.booking-confirm{width:100%}.booking-hint{padding:18px 6px;color:#a38b74;font-size:11px;line-height:1.9}.booking-hint strong{color:#977657;font-weight:500}.booking-hint p{font-size:10px}.booking-history{margin-top:24px}.booking-confirm-card{background:#f5eee2;border:1px solid #eadbc4;border-radius:13px;padding:24px;text-align:center;color:var(--brown)}.booking-confirm-card>span{font-size:11px;color:#a18465}.booking-confirm-card h3{font:800 38px Nunito;margin:8px 0}.booking-confirm-card strong{font-size:14px;font-weight:500}
@media(max-width:1150px){.booking-layout{grid-template-columns:minmax(0,1fr) 270px}.booking-selection{padding:20px}.booking-slots{grid-template-columns:repeat(2,1fr)}.booking-date{padding:12px 16px}.booking-member-selector>.field-hint{width:100%;margin:0}.booking-selection-summary{padding:19px}}
@media(max-width:800px){.booking-layout{grid-template-columns:1fr}.booking-aside{position:static}.booking-selection-summary{padding:21px}.booking-demo-banner>.sample-badge{display:none}.booking-step small{font-size:9px}.booking-dates{gap:8px}.booking-date{flex:1;padding:12px 8px;font-size:11px}.booking-slots{grid-template-columns:repeat(3,1fr)}.booking-history{padding:17px}.booking-summary-person{margin-top:15px}.booking-hint{padding:12px 4px}.booking-machine-option{padding:14px 6px}}
@media(max-width:480px){.booking-slots{grid-template-columns:repeat(2,1fr)}.booking-machine-options{gap:7px}.booking-machine-option small{font-size:9px}.booking-step small{max-width:130px;text-align:right}.booking-member-selector select{max-width:100%}.booking-demo-banner{padding:15px;gap:10px}.booking-demo-banner p{font-size:10px}.booking-member-selector{gap:8px}}

/* Admin reservation visibility */
.machine.has-reservation{border-color:#dfa977;box-shadow:inset 0 3px 0 #dfa977}.machine-reservation{margin-top:12px;padding:9px 4px 7px;border-top:1px dashed #e0c39f;color:#9c673d;min-height:66px}.machine-reservation>span{font-size:9px;display:flex;align-items:center;justify-content:center;gap:4px}.machine-reservation svg{width:11px;height:11px}.machine-reservation strong{display:block;font:800 13px Nunito;margin-top:5px;color:#8d5831}.machine-reservation small{display:block;font-size:8px;color:#af8761;margin-top:3px}.reservation-overview{margin-bottom:20px;border-color:#e4c8a4;background:#fffbf3}.reservation-overview-heading{display:flex;align-items:center;gap:12px;margin-bottom:17px}.reservation-banner-icon{width:36px;height:36px;flex-shrink:0;display:grid;place-items:center;background:#f6e8cf;border-radius:10px;color:#b17b41}.reservation-overview-heading h2{font-size:14px;color:var(--brown);margin:0}.reservation-overview-heading p,.empty-reservations p{font-size:10px;color:#a08461;line-height:1.8;margin:4px 0 0}.reservation-overview-heading>.text-link,.empty-reservations>.text-link{margin-left:auto;white-space:nowrap}.reservation-machine-id{font:800 12px Nunito;color:#966333;border:1px solid #e4cead;padding:5px 9px;border-radius:6px;background:#f8eddc}.reservation-footnote{font-size:9px;color:#b19a80;border-top:1px dashed #ead9c2;padding-top:11px;margin-top:7px;line-height:1.8}.empty-reservations{display:flex;align-items:center;gap:12px;border:1px dashed #e5d6bf;border-radius:12px;padding:13px 18px;background:#fbf7ee}.empty-reservations strong{font-size:11px;font-weight:500;color:#9c8469}.empty-reservations .reservation-banner-icon{width:30px;height:30px;background:#f2eadd}.empty-reservations .reservation-banner-icon svg{width:17px;height:17px}.machine-detail-reservations{margin-bottom:20px;padding:14px;background:#fff7e9;border:1px solid #e9d0ac;border-radius:11px}.machine-detail-reservations h3{font-size:12px;color:#956d41;margin:0 0 15px}.large-machine .machine-actions{flex-wrap:wrap}@media(max-width:800px){.reservation-overview-heading{align-items:flex-start}.reservation-overview-heading p{font-size:9px}.reservation-overview-heading>.text-link{font-size:9px}.reservation-overview-heading h2{font-size:12px}.machine-reservation strong{font-size:12px}.machine-reservation>span{font-size:8px}.empty-reservations{padding:12px}.empty-reservations p{font-size:9px}.empty-reservations strong{font-size:10px}.empty-reservations>.text-link{font-size:9px}.machine-detail-reservations{padding:12px}}
.machine.has-reservation .machine-detail{white-space:normal;line-height:1.6}@media(max-width:480px){.machines-panel .machine-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.machine-reservation strong{font-size:11px;letter-spacing:-.2px}.machine-reservation small{font-size:8px}}
.machine{display:flex;flex-direction:column;justify-content:flex-start}

/* Shared member/drop-off queue and assignment guard */
.queue-source{display:inline-block;padding:3px 7px;border-radius:5px;font-size:9px;background:#f5e5cd;color:#aa7139}.queue-source.dropoff{background:#e7eeea;color:#6d8d7c}.machine-reservation.dropoff-badge{border-top-color:#c6d6cc;color:#6c8c77}.machine-reservation.dropoff-badge strong{color:#63856d}.order-plan-list{padding:14px;border:1px solid #d7e2d9;border-radius:11px;background:#f5f8f2;margin:17px 0}.order-plan-list h3{font-size:12px;color:var(--green);margin:0 0 9px}.order-plan-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px dashed #dce6d9}.order-plan-row:last-child{border-bottom:0}.order-plan-row strong{font-size:12px;font-weight:500}.order-plan-row small{display:block;font-size:9px;color:#9aab94;margin-top:3px}.dropoff-slot-heading{font-size:12px;color:var(--brown);font-weight:500;margin:22px 0 11px}.dropoff-slots{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.dropoff-slot{background:#f3f8ee;border:1px solid #dce7d4;color:#759164;border-radius:8px;padding:10px 5px;display:flex;flex-direction:column;align-items:center;gap:6px}.dropoff-slot strong{font:800 12px Nunito}.dropoff-slot small{font-size:9px}.dropoff-slot.conflict{background:#f3efea;border-color:#e8dfd4;color:#ad9d8e}.dropoff-slot.selected{outline:2px solid var(--green);outline-offset:1px}.dropoff-slot.selected.conflict{outline-color:#d29070;background:#fff1e9;color:#b87856}.dropoff-plan-ok,.dropoff-conflict{margin-top:14px;padding:14px 16px;border-radius:10px;background:#eef6e9;border:1px solid #d8e6d0;font-size:11px;color:#6f8d5f}.dropoff-conflict{background:#fff0e7;border-color:#e8bea8;color:#b36d48}.dropoff-plan-ok p,.dropoff-conflict p{font-size:10px;margin:5px 0 0;line-height:1.8}@media(max-width:480px){.dropoff-slots{grid-template-columns:1fr 1fr}.order-plan-row{align-items:flex-start}.order-plan-row .btn{font-size:10px;padding:6px 8px}}

/* Service prices, capacity selection and payment declaration */
.pricing-panel .panel-heading h2{display:flex;align-items:center;gap:9px}.price-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:17px 0}.price-tile{padding:17px;background:#f7f0e6;border:1px solid #eadfce;border-radius:11px}.price-tile>span{display:block;font-size:11px;color:#a08465}.price-tile strong{display:block;font-size:18px;color:var(--brown);margin-top:8px;font-weight:600}.price-tile strong small{font-size:10px;font-weight:400;color:var(--muted)}.service-picker,.payment-choice{border:1px solid #e6d9c7;border-radius:12px;padding:16px;margin:20px 0}.service-picker legend,.payment-choice legend{font-size:12px;color:var(--brown);padding:0 6px}.service-picker-row{display:grid;grid-template-columns:90px minmax(0,1fr) 80px;gap:12px;align-items:center;margin-bottom:15px}.service-toggle{display:flex;align-items:center;gap:7px;color:var(--brown);font-size:13px}.service-toggle svg{width:18px;height:18px}.service-toggle input,.payment-choice input{accent-color:var(--brown);width:16px;height:16px;flex-shrink:0}.payment-choice>label{display:flex;gap:8px;align-items:center;font-size:12px;margin:9px 0;color:var(--brown)}.order-quote{padding:17px 18px;border:1px solid #d7e2d3;background:#f3f7ee;border-radius:12px}.quote-lines>div{display:flex;justify-content:space-between;gap:10px;font-size:11px;color:#7a8f68;margin-bottom:11px}.quote-lines small{display:block;font-size:9px;color:#a0ac92;margin-top:2px}.quote-lines strong{font:800 13px Nunito}.quote-total{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--brown);font-size:12px}.quote-total output{font:800 23px Nunito,'IBM Plex Sans Thai';white-space:nowrap}.quote-lines:not(:empty){border-bottom:1px dashed #d7e2ce;padding-bottom:3px;margin-bottom:12px}.service-picker select:disabled,.service-picker input:disabled{background:#f1ede6;color:#b1a697;cursor:not-allowed}.service-picker .field-hint{margin-bottom:0}@media(max-width:800px){.price-grid{grid-template-columns:1fr 1fr}}@media(max-width:480px){.service-picker-row{grid-template-columns:65px minmax(0,1fr) 62px;gap:7px}.service-picker{padding:12px}.service-toggle{font-size:12px;gap:4px}.service-toggle svg{display:none}.service-picker .form-field{font-size:10px}.service-picker .form-field select,.service-picker .form-field input{padding:9px 6px}.quote-total output{font-size:20px}.price-tile{padding:13px}.price-tile strong{font-size:16px}}

/* Store payment QR configuration */
.payment-qr-panel .panel-heading h2{display:flex;align-items:center;gap:9px}.payment-qr-summary{display:flex;gap:20px;align-items:center;padding-top:8px}.payment-qr-summary>img,.qr-empty-icon{width:92px;height:92px;border:1px solid var(--line);border-radius:9px;object-fit:contain;background:#fff;flex-shrink:0}.qr-empty-icon{display:grid;place-items:center;font:800 28px Nunito;color:#b5a18c;border-style:dashed}.payment-qr-summary strong{font-size:13px;color:var(--brown)}.payment-qr-summary p{font-size:11px;color:var(--muted);line-height:1.8;margin:6px 0 12px}.qr-file-field{margin-top:16px}.qr-upload-preview{display:grid;place-items:center;min-height:155px;border:1px dashed #ddcdb9;border-radius:12px;background:#fbf7ef;margin:15px 0;color:#b19a82;font-size:11px}.qr-upload-preview img{width:145px;height:145px;object-fit:contain;padding:8px;background:white}.qr-confirm{display:flex;align-items:flex-start;gap:9px;font-size:11px;color:#8e765f;line-height:1.9}.qr-confirm input{accent-color:var(--brown);flex-shrink:0;margin-top:5px}@media(max-width:480px){.payment-qr-summary{gap:13px;align-items:flex-start}.payment-qr-summary>img,.qr-empty-icon{width:64px;height:64px}.payment-qr-summary strong{font-size:11px}.payment-qr-summary p{font-size:10px}.payment-qr-summary .btn{font-size:10px}}

/* Intake machine labels, without cycle quantity */
.intake-service-row{grid-template-columns:85px minmax(0,1fr)}.intake-machine-picker{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px 15px;border:1px dashed #e4d8c9;border-radius:9px;padding:11px 12px;margin:0 0 5px}.intake-machine-picker legend{font-size:10px;color:#a38a70;padding:0 5px}.intake-machine-picker label{display:flex;gap:5px;align-items:center;font:700 12px Nunito,'IBM Plex Sans Thai';color:#806a57}.intake-machine-picker input{accent-color:var(--brown)}.intake-machine-picker:disabled{opacity:.5}.intake-machine-picker .disabled-machine{color:#bdb0a2}@media(max-width:480px){.intake-service-row{grid-template-columns:65px minmax(0,1fr)}.intake-machine-picker{gap:8px 10px;padding:10px}.intake-machine-picker label{font-size:11px}}

/* Current machine per order stage */
.order-machine-current{display:flex;align-items:center;gap:7px;margin-top:8px;font-size:11px;color:#71634d}.order-machine-current b{font:800 13px Nunito,'IBM Plex Sans Thai';background:#eef2e5;border:1px solid #dbe2cd;border-radius:5px;padding:3px 7px;color:#64744e}.order-machine-current.drying b{background:#fff0e5;border-color:#eed7c4;color:#a67550}.machine-route{display:block;font-size:10px;color:var(--muted);margin-top:6px}#order-machine-form .intake-machine-picker{margin:20px 0;padding:16px;gap:14px}#order-machine-form .intake-machine-picker legend{font-size:12px}#order-machine-form .intake-machine-picker label{font-size:14px}

.machine-history{margin:16px 0;color:var(--brown);font-size:11px}.machine-history summary{cursor:pointer}.machine-history p{padding:8px 12px;background:#f7f1e7;border-radius:6px}.machine-history small{display:block;color:var(--muted);margin-top:4px}

.central-workspace-link{display:block;margin:14px 18px;padding:12px 14px;border:1px solid #d8dfce;border-radius:9px;background:#f0f4e9;color:#64744e;font-size:11px;text-decoration:none;text-align:center}
