@font-face{font-family:'Geologica';font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/geologica-cyrillic-ext-wght-normal.woff2) format('woff2-variations');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:'Geologica';font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/geologica-cyrillic-wght-normal.woff2) format('woff2-variations');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Geologica';font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/geologica-latin-ext-wght-normal.woff2) format('woff2-variations');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Geologica';font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/geologica-latin-wght-normal.woff2) format('woff2-variations');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Unbounded';font-style:normal;font-display:swap;font-weight:200 900;src:url(/fonts/unbounded-cyrillic-ext-wght-normal.woff2) format('woff2-variations');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:'Unbounded';font-style:normal;font-display:swap;font-weight:200 900;src:url(/fonts/unbounded-cyrillic-wght-normal.woff2) format('woff2-variations');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Unbounded';font-style:normal;font-display:swap;font-weight:200 900;src:url(/fonts/unbounded-latin-ext-wght-normal.woff2) format('woff2-variations');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Unbounded';font-style:normal;font-display:swap;font-weight:200 900;src:url(/fonts/unbounded-latin-wght-normal.woff2) format('woff2-variations');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Ma Shan Zheng';font-style:normal;font-display:swap;font-weight:400;src:url(/fonts/ma-shan-zheng-118-400-normal.woff2) format('woff2');unicode-range:U+d,U+3e,U+5f,U+7c,U+a0,U+a9,U+4e09-4e0b,U+4e0d-4e0e,U+4e13,U+4e1a,U+4e2a,U+4e3a-4e3b,U+4e4b,U+4e86,U+4e8e,U+4ea7,U+4eba,U+4ee4-4ee5,U+4eec,U+4f1a,U+4f4d,U+4f53,U+4f5c,U+4f60,U+4fe1,U+5165,U+5168,U+516c,U+5173,U+5176,U+5185,U+51fa,U+5206,U+5230,U+5236,U+524d,U+529b,U+52a0-52a1,U+52a8,U+5316,U+533a,U+53cb,U+53d1,U+53ef,U+53f7-53f8,U+5408,U+540c-540e,U+544a,U+548c,U+54c1,U+56de,U+56fd-56fe,U+5728,U+5730,U+5907,U+5916,U+591a,U+5927,U+5929,U+597d,U+5982,U+5b50,U+5b66,U+5b89,U+5b9a,U+5b9e,U+5ba2,U+5bb6,U+5bf9,U+5c0f,U+5de5,U+5e02,U+5e73-5e74,U+5e7f,U+5ea6,U+5f00,U+5f0f,U+5f53,U+5f55,U+5fae,U+5fc3,U+6027,U+606f,U+60a8,U+60c5,U+610f,U+6210-6211,U+6237,U+6240,U+624b,U+6280,U+62a5,U+63a5,U+63a8,U+63d0,U+6536,U+6570,U+6587,U+65b9,U+65e0,U+65f6,U+660e,U+662d,U+662f,U+66f4,U+6700,U+670d,U+672c,U+673a,U+6743,U+6765,U+679c,U+682a,U+6b21,U+6b63,U+6cbb,U+6cd5,U+6ce8,U+6d3b,U+70ed,U+7247-7248,U+7269,U+7279,U+73b0,U+7406,U+751f,U+7528,U+7535,U+767b,U+76f8,U+770b,U+77e5,U+793e,U+79d1,U+7ad9,U+7b49,U+7c7b,U+7cfb,U+7ebf,U+7ecf,U+7f8e,U+8005,U+8054,U+80fd,U+81ea,U+85cf,U+884c,U+8868,U+8981,U+89c6,U+8bba,U+8bdd,U+8bf4,U+8bf7,U+8d44,U+8fc7,U+8fd8-8fd9,U+8fdb,U+901a,U+9053,U+90e8,U+91d1,U+957f,U+95e8,U+95ee,U+95f4,U+9762,U+9875,U+9898,U+9996,U+9ad8,U+ff01,U+ff08-ff09}
/* Layout: floating glass rail + one airy column on a mist-paper ground; the ink-wash mountain path is the single atmospheric moment, everything else stays quiet. No hard lines: surfaces are separated by tone, not borders. */
:root{
  --paper:#F2F5F4; --paper-2:#E7EDEB; --surface:#FFFFFF; --surface-2:#F6F9F8; --glass:rgba(255,255,255,.74);
  --ink:#15242A; --ink-2:#4A5C64; --ink-3:#71838C; --line:rgba(21,36,42,.09);
  --jade:#17705F; --jade-2:#DCEEE9; --on-jade:#FFFFFF;
  --seal:#C23B2E; --seal-2:#F9E5E1;
  --sky:#2C6AA3; --sky-2:#E1ECF7;
  --persimmon:#B95A14; --persimmon-2:#FBEADA;
  --mist-a:#D3E1DD; --mist-b:#B4CCC8; --mist-c:#8FB1AD; --sun:#E9A79C;
  --shadow:0 1px 2px rgba(21,36,42,.04),0 18px 44px -20px rgba(21,36,42,.18);
  --shadow-up:0 -8px 30px -12px rgba(21,36,42,.18);
  --r-xl:28px; --r-lg:20px; --r-md:14px;
  --f-display:'Unbounded','Geologica',system-ui,sans-serif;
  --f-text:'Geologica',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --f-brush:'Ma Shan Zheng','Kaiti SC','KaiTi','STKaiti',serif;
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
  --paper:#0E181C; --paper-2:#122026; --surface:#17272D; --surface-2:#1C2F36; --glass:rgba(23,39,45,.78);
  --ink:#E6EFEC; --ink-2:#A9BAB8; --ink-3:#7C9094; --line:rgba(230,239,236,.10);
  --jade:#5FC4AF; --jade-2:rgba(95,196,175,.16); --on-jade:#06221C;
  --seal:#EE7466; --seal-2:rgba(238,116,102,.16);
  --sky:#7FB6E8; --sky-2:rgba(127,182,232,.16);
  --persimmon:#EDA35E; --persimmon-2:rgba(237,163,94,.16);
  --mist-a:#1C3037; --mist-b:#244048; --mist-c:#2F545A; --sun:#B2584D;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 18px 44px -20px rgba(0,0,0,.7);
  --shadow-up:0 -8px 30px -12px rgba(0,0,0,.6);
  color-scheme:dark;
}}
:root[data-theme="dark"]{
  --paper:#0E181C; --paper-2:#122026; --surface:#17272D; --surface-2:#1C2F36; --glass:rgba(23,39,45,.78);
  --ink:#E6EFEC; --ink-2:#A9BAB8; --ink-3:#7C9094; --line:rgba(230,239,236,.10);
  --jade:#5FC4AF; --jade-2:rgba(95,196,175,.16); --on-jade:#06221C;
  --seal:#EE7466; --seal-2:rgba(238,116,102,.16);
  --sky:#7FB6E8; --sky-2:rgba(127,182,232,.16);
  --persimmon:#EDA35E; --persimmon-2:rgba(237,163,94,.16);
  --mist-a:#1C3037; --mist-b:#244048; --mist-c:#2F545A; --sun:#B2584D;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 18px 44px -20px rgba(0,0,0,.7);
  --shadow-up:0 -8px 30px -12px rgba(0,0,0,.6);
  color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%}
body{background:var(--paper);color:var(--ink);font-family:var(--f-text);font-size:15px;line-height:1.5;font-weight:380;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,h4,p{margin:0}
h1,h2,h3{text-wrap:balance}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none;padding:0}
a{color:var(--jade);text-decoration:none}
a:hover{text-decoration:underline}
:focus-visible{outline:2px solid var(--jade);outline-offset:2px;border-radius:8px}
.num{font-variant-numeric:tabular-nums}
.zh{font-family:'PingFang SC','Microsoft YaHei','Noto Sans SC',var(--f-text)}

/* ---------- shell ---------- */
.app{min-height:100%;display:grid;grid-template-columns:264px minmax(0,1fr)}
.rail{position:sticky;top:env(safe-area-inset-top,0px);align-self:start;height:100vh;padding:20px 0 20px 20px;display:flex;min-width:0}
.rail-in{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px;background:var(--glass);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-radius:var(--r-xl);box-shadow:var(--shadow);padding:22px 14px 14px;min-height:0}
.brand{display:flex;align-items:center;gap:12px;padding:0 8px 18px}
.brand-seal{flex:none;width:40px;height:40px;border-radius:12px;background:var(--seal);color:#fff;display:grid;place-items:center;font-family:var(--f-brush);font-size:25px;line-height:1;transform:rotate(-4deg);box-shadow:inset 0 0 0 2px rgba(255,255,255,.28)}
.brand-name{font-family:var(--f-display);font-weight:500;font-size:15px;letter-spacing:-.01em;line-height:1.15}
.brand-sub{font-size:12px;color:var(--ink-3)}
.nav{display:flex;flex-direction:column;gap:2px;overflow:auto;min-height:0}
.nav-item{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:var(--r-md);color:var(--ink-2);font-weight:450;text-align:left;width:100%;transition:background .15s,color .15s}
.nav-item:hover{background:var(--surface-2);color:var(--ink)}
.nav-item[aria-current="page"]{background:var(--ink);color:var(--paper)}
.nav-item .badge{margin-left:auto}
.rail-foot{margin-top:auto;display:flex;flex-direction:column;gap:8px;padding-top:12px}
.who{min-width:0;display:flex;align-items:center;gap:10px;padding:10px;border-radius:var(--r-lg);background:var(--surface-2);width:100%;text-align:left}
.who:hover{background:var(--paper-2)}
.who-t{min-width:0;flex:1;overflow:hidden}
.who-role{font-size:12px;color:var(--ink-3)}
.who-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.main{min-width:0;padding-inline:36px;padding-block:28px 96px}
.page{max-width:1040px;margin:0 auto;display:flex;flex-direction:column;gap:22px}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-top:6px}
.page-title{font-family:var(--f-display);font-weight:400;font-size:30px;letter-spacing:-.02em;line-height:1.1}
.page-sub{color:var(--ink-2);margin-top:8px;max-width:62ch}
.topbar,.tabbar{display:none}
@media (max-width:900px){
  .app{grid-template-columns:minmax(0,1fr)}
  .rail{display:none}
  .main{padding-inline:16px;padding-block:14px 108px}
  .page{gap:18px}
  .page-title{font-size:24px}
  .topbar{display:flex;align-items:center;gap:10px;position:sticky;top:env(safe-area-inset-top,0px);z-index:20;margin:-14px -16px 6px;padding:10px 16px;background:var(--glass);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
  .topbar .brand{padding:0;flex:1;min-width:0}
  .topbar .brand-seal{width:34px;height:34px;font-size:21px;border-radius:10px}
  .tabbar{display:flex;position:fixed;left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom,0px));z-index:30;background:var(--glass);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-radius:24px;box-shadow:var(--shadow);padding:6px;gap:2px}
  .tab{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 2px 6px;border-radius:18px;color:var(--ink-3);font-size:11px;font-weight:450;position:relative}
  .tab span.l{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .tab[aria-current="page"]{background:var(--ink);color:var(--paper)}
  .tab .badge{position:absolute;top:2px;right:calc(50% - 22px)}
}

/* ---------- surfaces ---------- */
.card{background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow);padding:24px;min-width:0}
.card.flush{padding:0;overflow:hidden}
.soft{background:var(--surface-2);border-radius:var(--r-lg);padding:16px;min-width:0}
.card-title{font-family:var(--f-display);font-weight:500;font-size:15px;letter-spacing:-.01em}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.muted{color:var(--ink-2)} .faint{color:var(--ink-3)} .small{font-size:13px} .tiny{font-size:12px}
.row{display:flex;align-items:center;gap:12px;min-width:0}
.row.wrap{flex-wrap:wrap}
.col{display:flex;flex-direction:column;gap:12px;min-width:0}
.grow{flex:1;min-width:0}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
@media (max-width:900px){.grid2,.grid3{grid-template-columns:minmax(0,1fr)}.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}.card{padding:18px;border-radius:24px}}
.trunc{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- controls ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border-radius:999px;font-weight:500;background:var(--surface-2);color:var(--ink);transition:transform .12s,background .15s,opacity .15s;white-space:nowrap}
.btn:hover{background:var(--paper-2)}
.btn:active{transform:scale(.98)}
.btn.primary{background:var(--jade);color:var(--on-jade)}
.btn.primary:hover{background:var(--jade);opacity:.92}
.btn.dark{background:var(--ink);color:var(--paper)}
.btn.dark:hover{background:var(--ink);opacity:.9}
.btn.warn{background:var(--persimmon-2);color:var(--persimmon)}
.btn.sm{min-height:36px;padding:0 14px;font-size:13.5px}
.btn.icon{padding:0;width:44px}
.btn.icon.sm{width:36px}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.btn.block{width:100%}
.link{color:var(--jade);font-weight:500}
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field>span{font-size:13px;color:var(--ink-2);font-weight:450}
.input,select.input,textarea.input{width:100%;min-height:46px;padding:11px 14px;border-radius:var(--r-md);background:var(--surface-2);border:1.5px solid transparent;outline:none;transition:border-color .15s,background .15s}
textarea.input{resize:vertical;min-height:92px;line-height:1.45}
.input:focus{border-color:var(--jade);background:var(--surface)}
.input::placeholder{color:var(--ink-3)}
.seg{align-self:flex-start;display:inline-flex;background:var(--surface-2);border-radius:999px;padding:4px;gap:2px;max-width:100%;overflow-x:auto}
.seg button{padding:8px 14px;border-radius:999px;color:var(--ink-2);font-weight:450;white-space:nowrap;font-size:14px}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(21,36,42,.12)}
.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:12.5px;font-weight:500;white-space:nowrap;background:var(--paper-2);color:var(--ink-2)}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.pill.plain::before{display:none}
.pill.ok{background:var(--jade-2);color:var(--jade)}
.pill.review{background:var(--sky-2);color:var(--sky)}
.pill.fix{background:var(--persimmon-2);color:var(--persimmon)}
.pill.bad{background:var(--seal-2);color:var(--seal)}
.badge{min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--seal);color:#fff;font-size:11.5px;font-weight:600;display:inline-grid;place-items:center;font-variant-numeric:tabular-nums}
.avatar{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-weight:600;font-size:14px;background:var(--mist-a);color:var(--ink)}
.avatar.lg{width:52px;height:52px;font-size:18px}
.avatar.sm{width:30px;height:30px;font-size:12px}

/* ---------- lists & tables ---------- */
.list{display:flex;flex-direction:column}
.item{display:flex;align-items:center;gap:14px;padding:14px 24px;width:100%;text-align:left;min-width:0;transition:background .15s}
.item+.item{box-shadow:inset 0 1px 0 var(--line)}
button.item:hover,a.item:hover{background:var(--surface-2);text-decoration:none}
.item-t{font-weight:500}
.item-s{font-size:13px;color:var(--ink-2)}
@media (max-width:900px){.item{padding:13px 18px;gap:6px 12px;flex-wrap:wrap}.item>.grow{min-width:58%}.item>svg:last-child{display:none}}
.tbl-wrap{overflow-x:auto}
table.tbl{width:100%;border-collapse:collapse;min-width:640px}
.tbl th{font-size:12.5px;font-weight:450;color:var(--ink-3);text-align:left;padding:12px 14px;white-space:nowrap}
.tbl td{padding:13px 14px;box-shadow:inset 0 1px 0 var(--line);vertical-align:middle}
.tbl tr.click{cursor:pointer}
.tbl tr.click:hover td{background:var(--surface-2)}
.tbl th:first-child,.tbl td:first-child{padding-left:24px}
.tbl th:last-child,.tbl td:last-child{padding-right:24px}
.bar{height:8px;border-radius:8px;background:var(--paper-2);overflow:hidden;min-width:60px}
.bar>i{display:block;height:100%;border-radius:8px;background:var(--jade)}
.bar.warn>i{background:var(--persimmon)}
.kpi{display:flex;flex-direction:column;gap:2px;background:var(--surface);border-radius:var(--r-lg);padding:16px 18px;box-shadow:var(--shadow);text-align:left;min-width:0}
.kpi b{font-family:var(--f-display);font-weight:400;font-size:26px;letter-spacing:-.02em;line-height:1.15}
.kpi span{font-size:13px;color:var(--ink-2)}
button.kpi:hover{background:var(--surface-2)}
.kpi.alert b{color:var(--seal)}
.empty{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:36px 20px;color:var(--ink-2)}
.empty b{color:var(--ink);font-weight:500}

/* ---------- overlay ---------- */
.scrim{position:fixed;inset:0;z-index:50;background:rgba(10,20,24,.36);backdrop-filter:blur(3px);display:flex;justify-content:flex-end;animation:fade .18s ease}
.sheet{background:var(--surface);width:min(560px,100%);height:100%;display:flex;flex-direction:column;box-shadow:var(--shadow);animation:slide-in .22s cubic-bezier(.2,.8,.2,1);border-radius:var(--r-xl) 0 0 var(--r-xl)}
.sheet.wide{width:min(760px,100%)}
.sheet-head{display:flex;align-items:flex-start;gap:12px;padding:22px 24px 12px}
.sheet-title{font-family:var(--f-display);font-weight:500;font-size:17px;letter-spacing:-.01em;line-height:1.25}
.sheet-body{flex:1;overflow:auto;padding:8px 24px 24px;display:flex;flex-direction:column;gap:16px}
.sheet-foot{padding:14px 24px calc(14px + env(safe-area-inset-bottom,0px));display:flex;gap:10px;flex-wrap:wrap;box-shadow:inset 0 1px 0 var(--line)}
@media (max-width:900px){
  .scrim{align-items:flex-end}
  .sheet,.sheet.wide{width:100%;height:auto;max-height:92%;border-radius:var(--r-xl) var(--r-xl) 0 0;animation:slide-up .24s cubic-bezier(.2,.8,.2,1)}
  .sheet-head{padding:18px 18px 10px}.sheet-body{padding:6px 18px 18px}.sheet-foot{padding-inline:18px}
}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes slide-in{from{transform:translateX(40px);opacity:.4}to{transform:none;opacity:1}}
@keyframes slide-up{from{transform:translateY(40px);opacity:.4}to{transform:none;opacity:1}}
.toasts{position:fixed;z-index:80;left:50%;transform:translateX(-50%);bottom:calc(96px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:max-content;max-width:calc(100% - 32px)}
.toast{background:var(--ink);color:var(--paper);padding:11px 18px;border-radius:999px;font-weight:450;box-shadow:var(--shadow);animation:slide-up .2s ease;max-width:100%}
.toast.err{background:var(--seal);color:#fff}
.banner{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:var(--r-lg);background:var(--sky-2);color:var(--ink)}
.banner.warn{background:var(--persimmon-2)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- feature components ---------- */
:root{--bear-fur:#FBFCFB;--bear-ink:#1D2A30;--bear-line:#9DB0B3}
.ring{position:relative;flex:none}
.ring-in{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.1}
.ring-in b{font-family:var(--f-display);font-weight:500;font-size:16px;letter-spacing:-.02em}
.ring-in span{font-size:11px;color:var(--ink-3)}
.seal{display:inline-grid;place-items:center;flex:none;background:var(--seal);color:#fff;font-family:var(--f-brush);border-radius:28%;line-height:1;transform:rotate(-5deg);box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.3)}
.mountains{position:absolute;inset:0;width:100%;height:100%;display:block}

/* stages */
.stages{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(8,minmax(0,1fr))}
.stage{position:relative;min-width:0}
.stage+.stage::before{content:"";position:absolute;top:14px;right:50%;width:100%;height:3px;border-radius:3px;background:var(--paper-2)}
.stage.done+.stage::before{background:var(--mist-c)}
.stage button,.stage-b{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;padding:0 2px;border-radius:12px}
.stage-dot{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:var(--surface);position:relative;z-index:1}
.stage-dot i{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:12px;font-weight:500;background:var(--paper-2);color:var(--ink-3);font-variant-numeric:tabular-nums}
.stage.now .stage-dot i{background:var(--ink);color:var(--paper);box-shadow:0 0 0 5px var(--jade-2)}
.stage-t{font-size:12px;line-height:1.25;text-align:center;color:var(--ink-3);overflow-wrap:anywhere}
.stage.now .stage-t{color:var(--ink);font-weight:500}
.stage.done .stage-t{color:var(--ink-2)}
.stage button:hover .stage-t{color:var(--ink)}
@media (max-width:900px){.stage-t{display:none}}

/* hero */
.hero{position:relative;isolation:isolate}
.hero .mountains{z-index:-1;border-radius:var(--r-xl)}
.hero-in{display:flex;gap:24px;align-items:flex-start;padding:30px 30px 0;min-height:214px}
.hero-title{font-family:var(--f-display);font-weight:400;font-size:40px;letter-spacing:-.025em;line-height:1.05;margin:8px 0 12px}
.hero-text{max-width:50ch;color:var(--ink-2)}
.hero-ring{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 16px;border-radius:var(--r-lg);background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.hero-stages{padding:18px 18px 24px}
@media (max-width:900px){.hero-in{flex-direction:column;padding:22px 20px 0;min-height:0;gap:16px}.hero-title{font-size:30px}.hero-ring{flex-direction:row;gap:12px;align-self:stretch;justify-content:flex-start}.hero-stages{padding:18px 8px 20px}}
.next{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.next-ico{flex:none;width:52px;height:52px;border-radius:18px;display:grid;place-items:center;background:var(--sky-2);color:var(--sky)}
.next.fix .next-ico{background:var(--persimmon-2);color:var(--persimmon)}
.next.upload .next-ico{background:var(--jade-2);color:var(--jade)}
.next-title{font-family:var(--f-display);font-weight:500;font-size:18px;letter-spacing:-.01em;line-height:1.25;margin:2px 0 4px}
.next .grow{min-width:220px}

/* documents */
.sec-head{display:flex;align-items:center;gap:10px;padding:18px 24px 10px}
.sec-head .card-title{flex:1}
.glyph{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center}
.glyph.none{box-shadow:inset 0 0 0 2px var(--paper-2);background:transparent}
.glyph.ok{background:var(--jade-2);color:var(--jade)}
.glyph.review{background:var(--sky-2);color:var(--sky)}
.glyph.fix{background:var(--persimmon-2);color:var(--persimmon)}
.doc+.doc,.sec-head+.doc{box-shadow:inset 0 1px 0 var(--line)}
.doc-head{display:flex;align-items:center;gap:14px;width:100%;padding:14px 24px;text-align:left;color:var(--ink)}
.doc-head:hover{background:var(--surface-2)}
.doc-head>svg{color:var(--ink-3)}
.doc-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.doc-reason{display:block;font-size:13px;color:var(--persimmon)}
.doc-more{padding:4px 24px 22px 68px;display:flex;flex-direction:column;gap:14px}
.doc.open .doc-head{background:var(--surface-2)}
@media (max-width:900px){.sec-head{padding:16px 18px 8px}.doc-head{padding:13px 18px;gap:12px;flex-wrap:wrap}.doc-meta{flex-basis:100%;justify-content:flex-start;padding-left:42px;order:3}.doc-head>svg{margin-left:auto}.doc-more{padding:4px 18px 20px}}
.crit{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
.crit li{display:flex;gap:9px;align-items:flex-start;font-size:14px}
.crit li svg{color:var(--jade);margin-top:3px}
.crit.cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 22px}
@media (max-width:900px){.crit.cols{grid-template-columns:minmax(0,1fr)}}
.ai-box{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:var(--r-lg);background:var(--sky-2)}
.ai-box.ok{background:var(--jade-2)}
.ai-box.warn{background:var(--persimmon-2)}
.ai-box>svg{margin-top:2px}
.ai-list{margin:8px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:4px;font-size:14px}
.ai-dot{flex:none;display:inline-block;width:12px;height:12px;border-radius:50%;background:var(--jade);margin-top:5px;animation:pulse 1.1s ease-in-out infinite}
@keyframes pulse{0%,100%{transform:scale(.6);opacity:.5}50%{transform:scale(1);opacity:1}}
.file-line{display:flex;align-items:center;gap:10px;padding:10px 12px 10px 14px;border-radius:var(--r-md);background:var(--surface-2);min-width:0}
.preview{border-radius:var(--r-lg);background:var(--surface-2);overflow:hidden;display:grid;place-items:center;min-height:160px}
.preview img{display:block;max-width:100%;max-height:56vh}
.kv{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 16px;margin-top:8px}
.kv span:nth-child(odd){color:var(--ink-3)}
.check-row{display:flex;gap:12px;align-items:flex-start;padding:10px 0;cursor:pointer}
.check-row input{width:20px;height:20px;margin:2px 0 0;accent-color:var(--jade);flex:none}
.check-row.out{opacity:.55;cursor:default}

/* messages */
.thread{padding:0;display:flex;flex-direction:column;overflow:hidden}
.thread-box{display:flex;flex-direction:column;gap:12px;padding:22px;min-height:280px;max-height:56vh;overflow:auto}
.thread-form{padding:12px 16px 16px;display:flex;flex-direction:column;gap:8px;box-shadow:inset 0 1px 0 var(--line)}
.msg{max-width:min(78%,560px);align-self:flex-start}
.msg.me{align-self:flex-end}
.msg-who{color:var(--ink-3);margin:0 4px 3px}
.msg.me .msg-who{text-align:right}
.msg-b{padding:10px 14px;border-radius:18px 18px 18px 6px;background:var(--surface-2);white-space:pre-wrap;overflow-wrap:anywhere}
.msg.me .msg-b{background:var(--jade);color:var(--on-jade);border-radius:18px 18px 6px 18px}
.msg.note .msg-b{background:var(--persimmon-2);color:var(--ink)}
.msg-sys{align-self:center;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;justify-content:center;text-align:center;font-size:13px;color:var(--ink-2);padding:4px 12px;border-radius:999px;background:var(--paper)}
.starters{margin:auto;display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:12px 0}

/* school */
.bear-card{display:flex;align-items:center;gap:16px}
.time{font-family:var(--f-display);font-weight:400;font-size:17px;min-width:58px}
.attention{box-shadow:var(--shadow),inset 0 0 0 2px var(--persimmon-2)}
.att-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:6px 0}
.att{display:flex;gap:4px;flex-wrap:wrap}
.att-b{padding:7px 12px;border-radius:999px;font-size:13.5px;font-weight:450;background:var(--surface-2);color:var(--ink-3);min-height:36px}
.att-b[aria-pressed="true"]{background:var(--paper-2);color:var(--ink)}
.att-b.ok[aria-pressed="true"]{background:var(--jade-2);color:var(--jade)}
.att-b.review[aria-pressed="true"]{background:var(--sky-2);color:var(--sky)}
.att-b.bad[aria-pressed="true"]{background:var(--seal-2);color:var(--seal)}
.att-b.fix[aria-pressed="true"]{background:var(--persimmon-2);color:var(--persimmon)}
.quiz{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;min-width:0}
.quiz legend{font-weight:500;padding:0;margin-bottom:6px}
.quiz-opt{display:flex;gap:10px;align-items:center;padding:10px 14px;border-radius:var(--r-md);background:var(--surface-2);cursor:pointer}
.quiz-opt input{accent-color:var(--jade);width:18px;height:18px;margin:0;flex:none}
.quiz-opt.on{box-shadow:inset 0 0 0 2px var(--jade)}
.quiz-opt.right{background:var(--jade-2)}
.quiz-opt.wrong{background:var(--seal-2);box-shadow:none}
.link-row{width:100%;text-align:left;padding:6px 0;color:var(--ink)}
.link-row:hover{color:var(--jade)}
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}
.day{background:var(--surface);border-radius:var(--r-lg);padding:12px;display:flex;flex-direction:column;gap:8px;min-height:140px;box-shadow:var(--shadow);min-width:0}
.day.today{box-shadow:var(--shadow),inset 0 0 0 2px var(--jade)}
.day-h{display:flex;justify-content:space-between;align-items:baseline;color:var(--ink-2)}
.day-h .num{font-family:var(--f-display);font-size:17px;color:var(--ink)}
.slot{display:flex;flex-direction:column;gap:1px;text-align:left;padding:8px 10px;border-radius:12px;background:var(--surface-2);color:var(--ink-2);min-width:0}
.slot:hover{background:var(--paper-2)}
.slot-t{font-weight:500;color:var(--ink)}
.slot-g{font-size:13px;color:var(--ink);overflow-wrap:anywhere;line-height:1.25}
.slot.closed{background:var(--jade-2)}
.slot.open{background:var(--persimmon-2)}
.slot.cancelled{opacity:.55;text-decoration:line-through}
@media (max-width:900px){.week{grid-template-columns:minmax(0,1fr)}.day{min-height:0;flex-direction:row;flex-wrap:wrap;align-items:center}.day-h{flex-basis:100%}.slot{flex:1 1 150px}}
.funnel{display:flex;flex-direction:column;gap:10px}
.funnel-row{display:grid;grid-template-columns:96px minmax(0,1fr) 28px;gap:12px;align-items:center}
.funnel-bar{height:22px;border-radius:11px;background:var(--surface-2);overflow:hidden}
.funnel-bar i{display:block;height:100%;border-radius:11px;background:var(--mist-c)}
.funnel-row b{text-align:right;font-weight:500}
@media (max-width:900px){.hide-sm{display:none}}

/* lobby */
.lobby{min-height:100%;position:relative;isolation:isolate;display:flex;justify-content:center;padding-inline:20px;padding-block:44px 120px}
.lobby-art{position:fixed;left:0;right:0;bottom:0;height:46vh;z-index:-1;opacity:.9;pointer-events:none}
.lobby-in{width:min(880px,100%);display:flex;flex-direction:column;gap:20px}
.lobby-in .brand{padding:0}
.lobby-title{font-family:var(--f-display);font-weight:400;font-size:clamp(26px,4.6vw,42px);letter-spacing:-.025em;line-height:1.1;max-width:18ch;margin-top:14px}
.roles{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}
.role{display:flex;flex-direction:column;gap:6px;text-align:left;padding:20px;border-radius:var(--r-xl);background:var(--glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:var(--shadow);transition:transform .15s}
.role:hover{transform:translateY(-2px)}
.role-ico{width:46px;height:46px;border-radius:16px;display:grid;place-items:center;background:var(--ink);color:var(--paper);margin-bottom:8px}
.role-t{font-family:var(--f-display);font-weight:500;font-size:15px;letter-spacing:-.01em;line-height:1.25}
.people{display:flex;flex-direction:column;gap:8px}
.person{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--r-lg);background:var(--glass);backdrop-filter:blur(14px);box-shadow:var(--shadow);text-align:left;min-width:0}
.sheet .person,.sheet .role{background:var(--surface-2);box-shadow:none;backdrop-filter:none}
.sheet .roles{grid-template-columns:minmax(0,1fr)}
.sheet .role{flex-direction:row;flex-wrap:wrap;align-items:center;gap:4px 14px;padding:14px}
.sheet .role-ico{margin:0;width:40px;height:40px;border-radius:14px}
.sheet .role .small{flex-basis:100%;padding-left:54px;margin-top:-10px}
.person:hover,.sheet .role:hover{background:var(--paper-2);transform:none}
.splash{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px}
/* вход и доступы */
.login-card{width:min(440px,100%);display:flex;flex-direction:column;gap:16px;padding:24px;border-radius:var(--r-xl);background:var(--glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:var(--shadow)}
.login-card .link:disabled{color:var(--ink-3);cursor:default}
.code-input{font-family:var(--f-display);font-size:22px;letter-spacing:.4em;text-align:center;font-variant-numeric:tabular-nums;padding-left:calc(14px + .4em)}
.acc{flex-wrap:wrap}
.acc-who{min-width:180px}
.acc-act{justify-content:flex-end}
#root{height:100%}

