:root{--bg:#f5f5f0;--paper:#fff;--ink:#25352f;--muted:#748078;--green:#245343;--gold:#b69050;--line:#e3e8e1;--soft:#edf3ed;--danger:#af5339;font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}button,a,input,select,textarea{transition:background .18s,border-color .18s,box-shadow .18s,color .18s}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #c49b5580;outline-offset:3px}.hidden{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}h1,h2,h3,p{margin-top:0}h1{font-size:28px;letter-spacing:-.6px;line-height:1.4}h2{font-size:17px;line-height:1.5;font-weight:650;margin:0 0 20px}h3{font-size:15px;font-weight:600}label{display:block;font-size:13px;font-weight:500;margin:0 0 9px}input,select,textarea{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:9px;background:#fbfcfa;color:var(--ink);font-size:14px;margin:0 0 20px;line-height:1.5;min-height:44px}input:hover,select:hover,textarea:hover{border-color:#b4c4b9}input::placeholder,textarea::placeholder{color:#99a29c}input[type=file]{padding:10px}input[type=file]::file-selector-button{border:0;background:#e6eee6;color:var(--green);padding:7px 11px;border-radius:6px;margin-right:12px}fieldset{padding:0;border:0;margin:0}fieldset:disabled{opacity:.55}.primary,.secondary{display:inline-flex;align-items:center;justify-content:center;gap:9px;border-radius:9px;min-height:44px;font-size:13px;font-weight:600;padding:12px 19px;line-height:1.5}.primary{width:100%;border:1px solid var(--green);background:var(--green);color:white}.primary:hover{background:#193e31;border-color:#193e31;box-shadow:0 3px 10px #24534317}.secondary{border:1px solid #d7e0d5;background:white;color:var(--green)}.secondary:hover{background:var(--soft)}.text-button{border:0;background:none;color:var(--muted);font-size:12px;padding:8px;border-radius:6px}.text-button:hover{background:#24534309;color:var(--green)}.panel{background:var(--paper);padding:28px;border:1px solid var(--line);border-radius:16px;box-shadow:0 3px 12px #25352f03}.muted,.settings-note,.fine,.inline-note{color:var(--muted);font-size:12px;line-height:1.9}.muted{margin-bottom:26px}.settings-note{margin:0 0 20px}.fine{margin:20px 0 0;font-size:11px}.form-row,.card-settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;min-width:0}.form-row>div,.card-settings-grid>div{min-width:0}.notice{background:#fff4e8;border:1px solid #edd3af;border-radius:10px;padding:14px 18px;font-size:13px;line-height:1.8;color:#96603a;margin-bottom:20px}.notice.success{background:#edf6ef;border-color:#c8dfcd;color:#2e654b}.section-line,.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.section-heading h2,.section-line h2{margin:0}.section-heading p{font-size:12px;color:var(--muted);margin:5px 0 0}.quiet-tag{font-size:11px;color:var(--muted);background:#eef2ed;border:1px solid #e4eae2;padding:5px 9px;border-radius:6px;white-space:nowrap}.eyebrow{display:block;font-size:11px;letter-spacing:2px;color:var(--muted);margin-bottom:9px}

/* Administration */
.admin-body{background:#f5f5f0}.admin-layout{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;align-self:start;height:100vh;height:100svh;padding:32px 18px 20px;display:flex;flex-direction:column;gap:32px;background:#182e27;color:#e5eee6;border-right:1px solid #18372b}.brand,.login-brand{display:flex;align-items:center;gap:12px;font-size:18px;font-weight:650;letter-spacing:1px}.brand{padding:0 9px}.brand-mark{display:grid;place-items:center;width:40px;height:42px;flex-shrink:0;background:#e4c68a;color:#213e30;border:1px solid #edd3a2;border-radius:11px;font-size:23px;font-family:serif}.brand small,.login-brand small{display:block;font-size:10px;letter-spacing:3px;font-weight:400;margin-top:6px;color:#9ab3a3}.sidebar nav{display:grid;gap:7px}.sidebar nav button{display:flex;align-items:center;gap:12px;text-align:left;border:1px solid transparent;border-radius:9px;padding:13px 14px;background:transparent;color:#aebfb3;font-size:13px;white-space:nowrap;min-height:46px}.sidebar nav button:hover{background:#ffffff06;color:white}.sidebar nav button.selected{background:#e2c792;color:#263b2d;box-shadow:0 4px 12px #0000000b}.nav-count{margin-left:auto;border-radius:5px;font-size:10px;padding:2px 5px;background:#894b31;color:white}.sidebar-caption{font-size:10px;color:#87a493;margin:auto 10px 0;letter-spacing:1px}.sidebar>.secondary{width:100%;background:transparent;border-color:#3e5649;color:#c6d4c9;font-weight:400}.sidebar>.secondary:hover{background:#294637}.admin-main{padding:32px 36px 48px;width:100%;max-width:1720px;min-width:0}.admin-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px}.admin-heading h1{margin:0 0 6px;font-size:28px}.admin-heading p{font-size:11px;color:var(--muted);margin:0;line-height:1.7}.admin-heading>.secondary{flex-shrink:0}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:0 0 24px}.metric{background:white;border:1px solid var(--line);border-radius:14px;padding:21px 23px;box-shadow:0 2px 7px #243b2903}.metric>span{font-size:12px;color:#65776a}.metric strong{display:block;font-size:32px;line-height:1.25;letter-spacing:-1px;font-weight:600;margin:13px 0 9px;font-variant-numeric:tabular-nums}.metric small{font-size:10px;color:#89948c}.metric:nth-child(2){border-color:#ccdaca;background:#f9fcf7}.metric:nth-child(2) strong{color:var(--green)}.table-panel{background:white;border:1px solid var(--line);border-radius:14px;overflow:hidden;margin:0 0 24px;min-width:0}.table-header{padding:21px 23px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);flex-wrap:wrap}.table-header h2{font-size:16px;margin:0 auto 0 0}.table-header input,.table-header select{width:auto;max-width:190px;min-height:36px;padding:7px 11px;margin:0;font-size:12px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:12px}th{padding:13px 22px;font-size:11px;font-weight:500;color:#718075;background:#f6f8f4;white-space:nowrap}td{padding:17px 22px;border-top:1px solid #edf0e9;white-space:nowrap;line-height:1.7;font-variant-numeric:tabular-nums}tbody tr:hover{background:#fafcf8}td small{display:block;color:#88958b;font-size:10px;margin-top:3px}.table-action{border:1px solid transparent;color:var(--green);background:#edf3ec;padding:5px 8px;border-radius:6px;font-size:11px;white-space:nowrap;line-height:1.6}.table-action:hover{border-color:#bccfbd;background:#e3ece0}.table-action[data-card-state=deleted]{color:#a15541;background:#fcf0ea}.card-actions{display:flex;gap:6px}.badge{display:inline-flex;align-items:center;gap:5px;font-size:10px;padding:4px 8px;border-radius:6px;background:#edf5ee;color:#3f7257;font-weight:500}.badge:before{content:"";width:4px;height:4px;background:currentColor;border-radius:50%}.badge.risk,.badge.failed,.badge.deleted{color:#ad5039;background:#fbedE7}.badge.maintenance,.badge.maintaining,.badge.inspection,.badge.starting,.badge.joining,.badge.preparing{color:#a77b35;background:#fbf3df}.badge.disabled,.badge.archived,.badge.ended{color:#818b85;background:#eef1ed}.empty{padding:46px 24px;text-align:center;font-size:12px;color:#94a092}.inline-note{margin:0;padding:14px 22px;font-size:11px}.inline-note+.table-wrap{border-top:1px solid var(--line)}.admin-form{min-width:0}.admin-form .primary{width:auto;min-width:166px}.admin-form textarea{min-height:220px;font-family:ui-monospace,Consolas,monospace;font-size:12px;resize:vertical}.admin-bulk{margin:0}.codes{border:1px solid #dce6d6;background:#f4f8ef;padding:16px;border-radius:9px;font-size:12px;line-height:1.9;max-height:260px;overflow:auto;white-space:pre-wrap;word-break:break-all;user-select:all}.small-title{font-size:12px;color:var(--muted);margin:24px 0 10px}.events-list{max-height:400px;overflow:auto;font-size:12px}.events-list p{border-bottom:1px solid var(--line);margin:0;padding:12px 0;line-height:1.8}.events-list .muted{font-size:11px}.usage{font-size:12px;color:var(--muted);line-height:1.9;margin-top:24px}.usage summary{cursor:pointer;color:var(--green)}.usage p{margin-top:12px}.admin-login{max-width:420px;margin:12vh auto;padding:34px}.login-brand{margin-bottom:34px}.login-brand small{color:var(--muted)}.admin-login h1{font-size:23px;margin-bottom:8px}.admin-login .primary{margin-top:3px}.admin-login #login-error{margin-top:20px;margin-bottom:0}#tab-settings:not(.hidden){display:grid;grid-template-columns:minmax(0,1.4fr) minmax(300px,1fr);gap:24px;align-items:start}#tab-cards:not(.hidden){display:grid;grid-template-columns:1.1fr 1fr;gap:24px;align-items:start}#tab-cards>.table-panel{grid-column:1/-1;order:3}#tab-cards>.admin-bulk{order:2}#tab-import>.panel{max-width:900px}.subsection-title{font-size:13px;font-weight:600;margin:28px 0 12px}

/* Supply warnings */
.alert-banner{border:1px solid #e7c8a0;background:#fff7ec;border-radius:12px;padding:17px 21px;margin-bottom:26px}.alert-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:9px}.alert-heading>strong{font-size:13px;color:#946331}.alert-heading .text-button{color:#946331;padding:3px}.alert-items{display:flex;flex-wrap:wrap;gap:8px 20px;font-size:12px;line-height:1.8;color:#a17b4b}.alert-item b{font-weight:600;color:#935835}.channel-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:28px}.channel-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:23px}.channel-card.has-warning{border-color:#dfc8a7}.channel-head{display:flex;align-items:center;gap:11px;margin-bottom:23px}.channel-head h3{margin:0 0 4px}.channel-head small{font-size:11px;color:var(--muted)}.channel-head>.badge{margin-left:auto}.channel-symbol{width:35px;height:35px;display:inline-grid;place-items:center;flex-shrink:0;color:#486451;background:#eaf0e5;border-radius:10px;font-family:serif;font-size:19px;font-weight:500}.channel-symbol.gold{color:#9d7642;background:#f6eddc}.channel-numbers{display:grid;grid-template-columns:1fr 1fr;gap:20px}.channel-numbers>div+div{border-left:1px solid var(--line);padding-left:24px}.channel-numbers dt{font-size:12px;color:var(--muted)}.channel-numbers dd{margin:9px 0 8px;font-size:29px;font-weight:550;font-variant-numeric:tabular-nums;line-height:1.1}.channel-numbers .below{color:#aa683f}.channel-numbers dd small{font-size:11px;font-weight:400;color:var(--muted);margin-left:6px}.channel-numbers p{font-size:10px;color:#90998f;margin-bottom:0}.channel-foot{border-top:1px solid var(--line);margin-top:21px;padding-top:14px;font-size:10px;color:#89938a;display:flex;justify-content:space-between;gap:10px;line-height:1.8}.toggle-row{display:flex;justify-content:space-between;gap:20px;align-items:center;margin:0 0 22px;padding-bottom:22px;border-bottom:1px solid var(--line);font-weight:400}.toggle-row b{font-size:13px;font-weight:550}.toggle-row small{display:block;font-size:11px;color:var(--muted);margin-top:7px}.toggle-row input{width:20px;height:20px;min-height:0;margin:0;accent-color:var(--green);cursor:pointer}.threshold-channel{margin:0 0 18px;padding:18px 18px 0;background:#f6f8f3;border:1px solid #e6ece1;border-radius:10px}.threshold-channel h3{display:flex;align-items:center;gap:9px;margin:0 0 18px;font-size:14px}.threshold-channel h3 small{margin-left:auto;color:var(--muted);font-size:10px;font-weight:400}.threshold-channel .channel-symbol{width:27px;height:27px;font-size:16px;border-radius:7px}.threshold-channel label{font-size:11px}.input-unit{position:relative}.input-unit input{padding-right:32px;background:white}.input-unit>span{position:absolute;right:12px;top:13px;color:var(--muted);font-size:12px;pointer-events:none}.form-status{font-size:12px;color:var(--green);margin:12px 0 0;line-height:1.8}


/* Customer portal: mobile-first character artwork and compact sans-serif type. */
.simple-body {
  --ink:#f3f5f7; --muted:#a8b2bf; --line:#ffffff20;
  --green:#efc780; --soft:#252f3d; --paper:#18212c;
  min-height:100vh; background:#10151d; color:var(--ink); color-scheme:dark;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
}
.portal-art {position:absolute; top:0; left:50%; width:100%; max-width:560px; transform:translateX(-50%); overflow:hidden; pointer-events:none}
.portal-art img {display:block; width:100%; height:auto}
.portal-art:after {content:""; position:absolute; inset:0; background:linear-gradient(180deg,transparent 50%,#10151d 100%)}
.user-stage {position:relative; min-height:100vh; min-height:100svh; min-height:100dvh; display:flex; align-items:center; justify-content:center; padding:32px 24px}
.simple-shell {width:100%; max-width:352px; margin:0 auto}
.simple-head {position:relative; text-align:center; margin:0 0 26px}
.simple-head h1 {font-family:inherit; font-size:32px; font-weight:700; letter-spacing:.02em; text-indent:0; line-height:1.25; color:#f5f7fa; margin:0; text-shadow:none}
.simple-head .text-button {position:absolute; right:-8px; top:0; min-height:40px; padding:8px 12px; color:#9faab9; font-size:12px; line-height:1.5}
.simple-head .text-button:hover {background:#ffffff09; color:#f0f3f8}
.simple-card {min-width:0; padding:0; background:transparent; border:0; border-radius:0; box-shadow:none; backdrop-filter:none}
.simple-card h2 {font-size:18px; font-weight:600; color:#f3f5f7; margin:0 0 24px}
.simple-card label {font-size:13px; color:#aab5c4; font-weight:400; margin-bottom:10px}
.simple-card input,.simple-card select {background:#1a232f; color:#f4f6f8; border:1px solid #ffffff1c; border-radius:14px; font-size:16px; padding:15px 18px; margin:0 0 22px; min-height:56px; box-shadow:none}
.simple-card input::placeholder {color:#8592a3; font-size:15px}
.simple-card input:hover,.simple-card select:hover {border-color:#ffffff3a}
.simple-card input:focus,.simple-card select:focus {border-color:#e6c386; outline:3px solid #edc6811a; outline-offset:2px; background:#1d2836}
.simple-card .primary {position:relative; margin:0; min-height:54px; border:1px solid #f0ca88; border-radius:14px; background:#edc681; color:#352919; font-size:16px; font-weight:600; letter-spacing:.03em; box-shadow:0 5px 18px #0002}
.simple-card .primary:hover {background:#f6d89f; border-color:#f6d89f; box-shadow:0 5px 18px #0002}
.login-arrow {position:absolute; right:20px; width:18px; height:18px; opacity:.65}
#login-form {display:grid; gap:14px}
#login-form input {margin:0}
.simple-balance {display:flex; align-items:center; justify-content:space-between; margin:0 0 24px; padding:0 0 20px; border-bottom:1px solid #ffffff12; color:#aab5c4; font-size:13px}
.simple-balance strong {font-size:30px; line-height:1; font-weight:600; color:#efce93; font-variant-numeric:tabular-nums}
.simple-room,#active-room {font-size:30px!important; letter-spacing:2px; text-align:center; font-variant-numeric:tabular-nums; margin:28px 0!important; overflow-wrap:anywhere}
.simple-card .section-line {font-size:13px; color:#c8d0dc}
.status-dot {display:inline-flex; align-items:center; gap:7px; font-size:12px; color:#c1d7bf}
.status-dot:before {content:""; width:5px; height:5px; border-radius:50%; background:#abd2a7}
.simple-reminder {background:#1a232f; border:1px solid #ffffff12; padding:17px 18px; border-radius:14px; color:#bdc8d5; font-size:13px}
.simple-reminder strong {float:right; color:#efd09b; font-size:19px; font-variant-numeric:tabular-nums}
.simple-reminder small {display:block; font-size:11px; color:#8d9bac; margin-top:8px}
.simple-stop {width:100%; margin-top:20px; min-height:50px; background:#1a232f; border-color:#ffffff23; border-radius:14px; color:#d6dde5}
.simple-stop:hover {background:#243140}
.simple-result {font-size:12px; line-height:1.9; color:#abb7c7; margin:20px 0 0}
.simple-shell .notice {font-size:13px; color:#efd6ac; background:#30271c; border-color:#bda26a40; border-radius:14px}
.loading-card {display:flex; align-items:center; justify-content:center; gap:10px; min-height:124px; color:#aab5c4; font-size:13px}
.loading-dot {width:6px; height:6px; border-radius:50%; background:#edc681; animation:softpulse 1.5s ease-in-out infinite}
.has-session .portal-art {opacity:.16}
@keyframes softpulse {50%{opacity:.3}}
@media (max-height:620px) and (max-width:600px) {
  .portal-art {width:min(100%,62svh)}
  .user-stage {padding-top:26px; padding-bottom:26px}
}
@media (max-width:350px) {
  .user-stage {padding-left:22px; padding-right:22px}
  .simple-head h1 {font-size:30px}
}
@media (min-width:900px) {
  .simple-body {background:#10151d radial-gradient(ellipse 600px 360px at 50% 0,#26303c55,transparent)}
}

@media(max-width:1200px){.admin-main{padding:27px 24px}.admin-layout{grid-template-columns:200px minmax(0,1fr)}.sidebar{padding:27px 14px 18px}.brand{font-size:16px;gap:10px}.metric{padding:19px 17px}.metrics{gap:12px}#tab-settings:not(.hidden),#tab-cards:not(.hidden){grid-template-columns:1fr}#tab-cards>.table-panel{order:3}.threshold-channel .form-row{gap:12px}}
@media(max-width:800px){.admin-layout{display:block}.sidebar{position:static;width:100%;height:auto;gap:20px;padding:20px}.sidebar .brand{padding:0}.sidebar nav{display:flex;overflow-x:auto;gap:6px;padding-bottom:4px}.sidebar nav button{flex-shrink:0;padding:10px 12px;font-size:12px;min-height:42px;gap:8px}.sidebar nav svg{width:16px;height:16px}.sidebar-caption{display:none}.sidebar>.secondary{position:absolute;top:23px;right:20px;width:auto;min-height:34px;font-size:11px;padding:6px 12px}.admin-main{padding:25px 20px 40px}.metrics{grid-template-columns:1fr 1fr}.channel-grid{gap:14px}.channel-card{padding:20px}.channel-head{gap:9px}.channel-head .badge{font-size:9px}.channel-numbers{gap:12px}.channel-numbers>div+div{padding-left:16px}.table-header{padding:18px}.table-header input,.table-header select{max-width:160px}.panel{padding:24px}}
@media(max-width:540px){.admin-main{padding:22px 16px 32px}.admin-heading h1{font-size:25px}.admin-heading>.secondary{font-size:11px;padding:9px 12px;min-height:39px}.metric{padding:18px 16px}.metric strong{font-size:28px}.metric small{font-size:9px}.metrics{gap:10px;margin-bottom:20px}.channel-grid{grid-template-columns:1fr}.channel-card{padding:22px}.channel-numbers dd{font-size:28px}.section-heading{gap:9px}.section-heading h2{font-size:16px}.section-heading p{font-size:11px}.alert-banner{padding:15px 16px}.alert-items{display:grid;gap:5px}.table-header input,.table-header select{max-width:100%;flex:1}.table-header h2{flex-basis:100%;margin-bottom:5px}th,td{padding:13px 16px}.panel{padding:22px 20px;border-radius:13px}.card-settings-grid{gap:0 12px}.form-row{gap:0 12px}.admin-login{margin:10vh 20px;max-width:none;padding:30px}.threshold-channel{padding:15px 12px 0}.threshold-channel .form-row{grid-template-columns:1fr}.admin-form .primary{width:100%}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
