:root{--deep:#061e26;--teal:#0b4653;--teal2:#0f5c6b;--gold:#c7a45a;--gold2:#efd58d;--paper:#f7f2e8;--ink:#17313a;--muted:#71868a;--line:#d9ccad;--red:#9e2929;--green:#16836a;--white:#fff}
*{box-sizing:border-box}body{margin:0;font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:#f2efe8}button,input,select,textarea{font:inherit}.hidden{display:none!important}.eyebrow{font-size:11px;letter-spacing:3px;margin:0 0 12px;color:#d7bc7c}.eyebrow.red{color:#9f772e;font-weight:700}.muted{color:var(--muted)}.error{color:#b0292b;min-height:22px}
.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(440px,1.05fr) minmax(420px,.95fr);background:var(--paper)}.login-brand{position:relative;overflow:hidden;padding:9vh 9vw;color:#fff;background:radial-gradient(circle at 78% 17%,#a72f2d88 0,transparent 31%),linear-gradient(145deg,#0c5260,#061f28)}.login-brand:before{content:"";position:absolute;inset:0;opacity:.12;background-image:linear-gradient(30deg,transparent 48%,#e7ca83 49%,#e7ca83 51%,transparent 52%),linear-gradient(150deg,transparent 48%,#e7ca83 49%,#e7ca83 51%,transparent 52%);background-size:86px 50px}.login-brand:after{content:"川";position:absolute;right:-35px;bottom:-110px;font:700 400px/1 serif;color:#f1d58b0b}.login-brand>*{position:relative}.login-logo{width:88px;height:88px;object-fit:contain;filter:drop-shadow(0 14px 25px #0008);margin-bottom:58px}.login-brand h1{font:700 48px/1.25 serif;max-width:600px;margin:0 0 18px;color:#fff8e7}.login-brand>p:not(.eyebrow){font-size:17px;color:#b8d1d0;line-height:1.8;max-width:580px}.login-brand .brand-slogan{font:700 25px/1.5 serif!important;color:#e9c976!important;letter-spacing:5px;margin:0 0 12px!important}.brand-feature{display:flex;gap:18px;align-items:center;margin-top:25px;color:#d7e2df}.brand-feature span{font:italic 22px serif;color:#e1c276}.login-card{width:min(430px,82%);margin:auto;padding:38px;border:1px solid #d8c79f;background:#fffdf8;box-shadow:0 24px 70px #082c3320}.login-card h2{font:700 34px serif;margin:0 0 8px}.login-card label{display:block;color:#38525a;font-size:14px;margin-top:24px}.login-card input{width:100%;padding:14px 16px;border:1px solid #d9d0bd;border-radius:6px;margin-top:8px;outline:0;background:#fff}.login-card input:focus{border-color:var(--gold);box-shadow:0 0 0 3px #c7a45a22}.primary,.action-btn{border:0;border-radius:6px;background:linear-gradient(135deg,#dfc47d,#a8782d);color:#102f38;padding:12px 16px;cursor:pointer;font-weight:700}.primary{width:100%;padding:14px;margin-top:26px}.demo-tip{font-size:12px;color:#899698}
.app-shell{min-height:100vh;display:grid;grid-template-columns:258px 1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:258px;background:linear-gradient(180deg,#082e38,#061c24);color:#fff;padding:20px 14px;display:flex;flex-direction:column;overflow-y:auto;border-right:1px solid #c7a45a33}.logo{display:flex;align-items:center;gap:12px;padding:0 10px 20px;border-bottom:1px solid #c7a45a33}.logo>img{width:48px;height:48px;object-fit:contain}.logo strong{display:block;font:700 20px serif;color:#e8cb82;letter-spacing:3px}.logo small{display:block;font-size:11px;color:#8fb0b2;margin-top:4px}.sidebar nav{padding-top:14px;display:grid;gap:3px}.sidebar nav button{width:100%;border:0;background:transparent;color:#9cb7b9;text-align:left;padding:10px 12px;border-radius:6px;cursor:pointer}.sidebar nav button:hover,.sidebar nav button.active{color:#fff5de;background:#0e4855}.sidebar nav button.active{box-shadow:inset 3px 0 var(--gold)}.sidebar nav i{font-style:normal;display:inline-grid;place-items:center;width:25px;margin-right:7px;color:#d4b66b}.menu-parent{display:flex!important;align-items:center;font-weight:600;color:#c3d4d3!important}.menu-parent span{flex:1}.menu-parent b{font-size:12px;font-weight:400;transition:transform .2s}.menu-group.open>.menu-parent{background:#0b3b47}.menu-group.open>.menu-parent b{transform:rotate(180deg)}.submenu{display:none;padding:3px 0 7px}.menu-group.open>.submenu{display:grid}.submenu>button{padding-left:30px!important;font-size:13px}.submenu>button i{font-size:11px;color:#9d8146!important}.sidebar-foot{margin-top:auto;padding:14px 8px 0;border-top:1px solid #c7a45a33;display:flex;gap:10px;align-items:center}.sidebar-foot .avatar{width:36px;height:36px;border-radius:8px;background:linear-gradient(145deg,#e2c77f,#9e6d28);color:#10313a;display:grid;place-items:center;font-weight:700}.sidebar-foot strong,.sidebar-foot small{display:block;font-size:12px}.sidebar-foot small{color:#789a9c;margin-top:3px}.sidebar-foot button{margin-left:auto;background:none;border:0;color:#d2ba7c;cursor:pointer}
.app-shell main{grid-column:2;min-width:0}.app-shell header{height:108px;padding:26px 38px;background:#fffdf8;border-bottom:1px solid #ded3ba;display:flex;align-items:center;justify-content:space-between}.app-shell header h1{margin:0;font:700 28px serif}.header-actions{color:#6f8386;font-size:13px;display:flex;align-items:center;gap:8px}.env-dot{width:8px;height:8px;border-radius:50%;background:var(--green)}.header-actions button,.outline-btn,.mini-btn,.close-editor{border:1px solid #d7c9a8;background:#fffdf8;color:#29464e;padding:8px 12px;border-radius:5px;cursor:pointer}.content{padding:30px 38px 60px}
.metric-grid{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:15px}.metric,.panel{background:#fffdf8;border:1px solid #ded3ba;border-radius:8px;box-shadow:0 8px 25px #12343a0b}.metric{padding:21px;position:relative;overflow:hidden}.metric:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--teal2)}.metric.gold:before{background:var(--gold)}.metric.green:before{background:var(--green)}.metric small{color:var(--muted)}.metric strong{display:block;font:700 30px serif;margin-top:12px;color:#153942}.dashboard-grid{display:grid;grid-template-columns:1.3fr .7fr;gap:18px;margin-top:18px}.panel{padding:22px;margin-bottom:18px}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.panel h2{font:700 18px serif;margin:0}.panel .sub{font-size:12px;color:var(--muted);margin-top:6px}.bars{height:240px;display:flex;align-items:flex-end;gap:12px;border-bottom:1px solid #ddd4c2;padding:10px 12px 0}.bar{flex:1;min-width:20px;background:linear-gradient(#2c8190,#0a4451);border-radius:4px 4px 0 0;position:relative}.bar:nth-child(3n){background:linear-gradient(#e0c47d,#a9782e)}.bar span{position:absolute;bottom:-26px;left:50%;transform:translateX(-50%);font-size:10px;color:var(--muted)}.activity{display:grid;gap:14px}.activity-item{display:grid;grid-template-columns:9px 1fr auto;gap:12px;align-items:center;padding-bottom:13px;border-bottom:1px solid #eee8db;font-size:13px}.activity-item:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--gold)}.activity-item time{font-size:11px;color:var(--muted)}
.mini-btn{padding:6px 10px;color:#8a6326;white-space:nowrap}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th{text-align:left;color:#5f777b;font-weight:600;background:#f4efe3;white-space:nowrap}.data-table th,.data-table td{padding:13px 12px;border-bottom:1px solid #e8dfcd;max-width:340px}.user-avatar{width:38px;height:38px;border-radius:50%;object-fit:cover;border:2px solid #d2b56e}.openid{font:11px Consolas,monospace;color:#3c626a;word-break:break-all}.tag{display:inline-block;padding:4px 8px;border-radius:20px;background:#e5f3ee;color:#13765a;font-size:11px}.tag.warn{background:#fff0d6;color:#9b6717}.tag.red{background:#f9e4e2;color:#9e2929}.empty{text-align:center;padding:60px;color:var(--muted)}.notice{padding:13px 16px;border-left:3px solid var(--gold);background:#fff8e9;font-size:13px;color:#73551f;margin-bottom:18px}.error-notice{border-color:var(--red);color:#8b2929;background:#fff0ef}
.form-grid{display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:16px;align-items:end}.form-grid label{display:grid;gap:7px;font-size:12px;color:#60777b}.form-grid input,.form-grid select,.form-grid textarea,.redeem-form input{width:100%;border:1px solid #d9cfba;border-radius:6px;padding:10px;background:#fff;color:var(--ink)}.form-grid .wide{grid-column:1/-1}.form-grid textarea{font:12px/1.55 Consolas,monospace;resize:vertical}.editor-card{border-top:3px solid var(--gold)}.close-editor{font-size:20px;padding:2px 10px}.rules-code{display:block;max-width:330px;max-height:74px;overflow:auto;white-space:pre-wrap;font-size:10px}.redeem-form{display:flex;gap:10px}.role-grid{display:grid;grid-template-columns:repeat(2,minmax(260px,1fr));gap:18px}.role-card{border-top:3px solid var(--gold)}.role-code{font-size:11px;letter-spacing:2px;color:#9d762e;font-weight:700;margin-bottom:10px}.permission-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.permission-list span{padding:6px 9px;background:#f1eadc;border:1px solid #dfd1b2;border-radius:5px;font-size:12px}.map-shell{height:490px;border-radius:8px;position:relative;overflow:hidden;background:#dce7e3;background-image:linear-gradient(30deg,transparent 48%,#b8c9c5 49%,#b8c9c5 51%,transparent 52%),linear-gradient(110deg,transparent 46%,#c4d2ce 47%,#c4d2ce 49%,transparent 50%);background-size:80px 70px,120px 90px}.heat-dot{position:absolute;width:110px;height:110px;border-radius:50%;background:radial-gradient(circle,#9f2929d9 0,#c79f558c 40%,transparent 72%);display:grid;place-items:center;color:#fff;font-weight:700}.heat-dot:nth-child(2){left:38%;top:33%}.heat-dot:nth-child(3){left:62%;top:55%;width:145px;height:145px}.map-legend{position:absolute;right:20px;bottom:20px;background:#fffdf8;padding:12px 14px;border-radius:6px;font-size:12px;box-shadow:0 4px 16px #0002}.cell-note{display:block;color:var(--muted);font-size:10px;margin-top:5px;white-space:nowrap}
.inventory-host{height:calc(100vh - 168px);min-height:680px;background:#f2f5f3;border:1px solid #d9ccad;border-radius:8px;overflow:hidden;box-shadow:0 8px 25px #12343a0b}.inventory-frame{display:block;width:100%;height:100%;border:0;background:#f2f5f3}
@media(max-width:1100px){.metric-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr 1fr}.login-shell{grid-template-columns:1fr}.login-brand{display:none}}@media(max-width:760px){.app-shell{grid-template-columns:74px 1fr}.sidebar{width:74px}.logo div,.sidebar nav button{font-size:0}.sidebar nav i{font-size:15px;margin:0}.menu-parent span,.menu-parent b{display:none}.submenu>button{padding-left:12px!important}.sidebar-foot>div:not(.avatar),.sidebar-foot button{display:none}.app-shell header,.content{padding-left:20px;padding-right:20px}.metric-grid,.form-grid,.role-grid{grid-template-columns:1fr}.header-actions{display:none}.data-table{display:block;overflow:auto}.inventory-host{height:calc(100vh - 140px);min-height:600px}}
