/* Mimi console — self-contained (no CDN, loads in mainland China). Brand teal from mimicn.net. */
:root{--teal:#2f9aa6;--teal-d:#237a84;--ink:#1d2a33;--mute:#6b7780;--line:#e3e8ec;--bg:#f4f7f8;--warn:#b7791f;--bad:#c0392b;
--font:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC",system-ui,sans-serif;--serif:"Songti SC","STSong","Noto Serif CJK SC",serif}
*{box-sizing:border-box}body{margin:0;font-family:var(--font);color:var(--ink);background:var(--bg);font-size:14px}
a{color:var(--teal)}button{font-family:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}
.muted{color:var(--mute)}.small{font-size:12px}
.primary{background:var(--teal);color:#fff;border:0;border-radius:8px;padding:12px;font-size:15px;width:100%}
.primary:hover:not(:disabled){background:var(--teal-d)}.primary.sm{width:auto;padding:6px 14px;font-size:13px;float:right}
.ghost{background:none;border:1px solid var(--line);border-radius:6px;padding:4px 10px;color:var(--ink)}
.brand-row{display:flex;align-items:center;gap:10px;font-weight:600;font-size:17px}.brand-row img{height:32px}
/* login */
.login-body{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#e8f4f5,#f7f9fa 60%)}
.login-wrap{display:grid;grid-template-columns:1.1fr 1fr;max-width:920px;width:100%;margin:24px;background:#fff;border-radius:16px;box-shadow:0 20px 50px rgba(20,60,70,.12);overflow:hidden}
.login-brand{background:var(--ink);color:#e9f1f3;padding:44px}.login-brand h1{font-family:var(--serif);font-size:32px;line-height:1.35;margin:36px 0 12px}
.lede{color:#a9bac1;line-height:1.7}
.sms-card{margin-top:40px;background:#26363f;border-radius:14px;padding:14px 16px;max-width:300px}
.sms-head{font-size:12px;color:#8fa3ab;margin-bottom:8px}.sms-bubble{background:#e9eef0;color:var(--ink);border-radius:12px 12px 12px 4px;padding:10px 12px;line-height:1.6}
.sms-bubble b{letter-spacing:2px;color:var(--teal-d)}
.login-panel{padding:44px 40px}.login-panel h2{margin:0 0 6px;font-size:22px}
.fld{display:flex;align-items:center;border:1px solid var(--line);border-radius:8px;margin-top:16px;padding:0 12px;background:#fff}
.fld:focus-within{border-color:var(--teal);box-shadow:0 0 0 3px rgba(47,154,166,.15)}
.fld input{flex:1;border:0;outline:0;padding:13px 0;font-size:15px;font-family:inherit;min-width:0}
.cc{color:var(--mute);padding-right:10px;margin-right:10px;border-right:1px solid var(--line)}
.link-btn{background:none;border:0;color:var(--teal);font-size:14px;white-space:nowrap;padding:8px 0 8px 10px}
.agree{display:block;font-size:12px;color:var(--mute);margin:14px 0 6px}
.msg{min-height:20px;font-size:13px;color:var(--teal-d);margin:6px 0 10px}.msg.bad{color:var(--bad)}
.foot{font-size:12px;color:var(--mute);margin-top:28px;text-align:center}
@media(max-width:720px){.login-wrap{grid-template-columns:1fr}.login-brand{padding:28px}.login-brand h1{font-size:24px;margin-top:20px}.sms-card{display:none}.login-panel{padding:28px 24px}}
/* app */
.app{display:flex;min-height:100vh}
.side{width:210px;background:var(--ink);color:#dfe8eb;padding:20px 14px;flex-shrink:0}
.side nav{margin-top:28px;display:flex;flex-direction:column;gap:2px}
.side nav a{color:#b6c5cb;text-decoration:none;padding:10px 12px;border-radius:8px}
.side nav a.on,.side nav a:hover{background:#2b3c46;color:#fff}
.main{flex:1;min-width:0}
.top{display:flex;align-items:center;gap:12px;padding:14px 24px;background:#fff;border-bottom:1px solid var(--line)}
.burger{display:none;background:none;border:0;font-size:20px}
.ro-chip{background:#fff4e0;color:var(--warn);border-radius:20px;padding:3px 12px;font-size:12px}
.who{margin-left:auto;color:var(--mute);display:flex;gap:10px;align-items:center}
.notice{margin:16px 24px 0;padding:10px 14px;border-left:3px solid var(--warn);background:#fffaf0;color:#7a5a1c;font-size:13px}
.pane{display:none;padding:8px 24px 32px}.pane.on{display:block}.pane h1{font-size:20px;margin:18px 0}
.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px;margin-bottom:16px;overflow-x:auto}
.card h3{margin:0 0 14px;font-size:15px}.empty{color:var(--mute);text-align:center;padding:40px}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.tile{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px}.tile span{color:var(--mute);font-size:13px}.tile b{display:block;font-size:26px;margin-top:6px}
.bars{display:flex;align-items:flex-end;gap:14px;height:160px;padding-bottom:22px}
.bars div{flex:1;background:linear-gradient(var(--teal),#7cc4cc);border-radius:6px 6px 0 0;position:relative}
.bars i{position:absolute;bottom:-20px;left:0;right:0;text-align:center;font-style:normal;font-size:12px;color:var(--mute)}
table{width:100%;border-collapse:collapse;min-width:520px}th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line)}th{color:var(--mute);font-weight:500;font-size:13px}
td.wrap{max-width:320px}
.tag{font-size:12px;padding:2px 8px;border-radius:10px}.tag.ok{background:#e3f4ec;color:#1e7a4c}.tag.wait{background:#fff4e0;color:var(--warn)}.tag.bad{background:#fbe9e7;color:var(--bad)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid label{display:flex;flex-direction:column;gap:6px;color:var(--mute);font-size:13px}.span2{grid-column:span 2}
select,textarea{font-family:inherit;padding:9px;border:1px solid var(--line);border-radius:8px;background:#f7f9fa}textarea{min-height:90px}
.preview{background:#f1f5f6;border-radius:8px;padding:12px;color:var(--ink)}
.form-grid .primary{width:auto;padding:10px 28px}
@media(max-width:760px){.side{position:fixed;inset:0 auto 0 0;z-index:9;transform:translateX(-100%);transition:.2s}.side.open{transform:none}.burger{display:block}.form-grid{grid-template-columns:1fr}.span2{grid-column:auto}.who{font-size:12px}}
/* language switch */
.login-panel{position:relative}.login-panel>.lang{position:absolute;top:18px;right:20px}
.lang{display:inline-block;border:1px solid var(--line);border-radius:14px;padding:2px 10px;font-size:12px;text-decoration:none;color:var(--ink)}
.lang:hover{border-color:var(--teal);color:var(--teal)}
