/* Mockup styles — visual reference only. Uses tokens.css. */
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:var(--font-sans);font-size:var(--fs-14);line-height:var(--lh-base);color:var(--text);background:var(--surface-app)}
svg.i{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* Shell */
.app-header{position:fixed;top:0;left:0;right:0;height:var(--header-h);background:var(--surface-header);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:var(--sp-3);padding:0 var(--sp-4) 0 0;z-index:var(--z-header)}
.hdr-menu{width:var(--rail-w);height:var(--header-h);display:flex;align-items:center;justify-content:center;background:var(--surface-rail);color:var(--text-on-dark);border:0}
.hdr-brand{display:flex;align-items:center;gap:var(--sp-2)}
.mark{width:32px;height:32px;border-radius:var(--r-2);background:#fff;color:var(--brand-red);box-shadow:inset 0 0 0 2px var(--brand-red);font-weight:800;font-size:var(--fs-12);display:flex;align-items:center;justify-content:center}
.hdr-brand b{font-size:var(--fs-16);font-weight:var(--fw-bold)}
.hdr-time{color:var(--text-2);font-size:var(--fs-13);padding-left:var(--sp-3);border-left:1px solid var(--border);font-variant-numeric:tabular-nums}
.hdr-sp{flex:1}
.hdr-sync{display:flex;align-items:center;gap:6px;font-size:var(--fs-12);color:var(--success);font-weight:var(--fw-semibold)}
.hdr-sync::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--success)}
.hdr-store{min-height:var(--tap);min-width:200px;border:1px solid var(--border-input);border-radius:var(--r-2);background:var(--surface);font:inherit;font-size:var(--fs-14);padding:0 var(--sp-3);color:var(--text)}
.hdr-icon{width:var(--tap);height:var(--tap);border:0;background:transparent;color:var(--text-2);border-radius:var(--r-pill);display:flex;align-items:center;justify-content:center}
.hdr-user{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--tap);padding:0 var(--sp-2);border-radius:var(--r-2);font-size:var(--fs-13)}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--gray-700);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:var(--fw-bold);font-size:var(--fs-12)}
.hdr-user small{display:block;color:var(--text-3);font-size:var(--fs-12)}
.demo-pill{font-size:var(--fs-12);font-weight:var(--fw-bold);color:var(--warning);background:var(--warning-soft);border:1px solid var(--warning-line);border-radius:var(--r-pill);padding:2px 10px}

.rail{position:fixed;top:var(--header-h);bottom:0;left:0;width:var(--rail-w);background:var(--surface-rail);color:var(--text-on-dark-2);z-index:var(--z-rail);overflow-y:auto;padding:var(--sp-2) 0}
.rail.open{width:var(--rail-w-open)}
.rail a{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--tap);padding:0 22px;color:var(--text-on-dark-2);text-decoration:none;font-size:var(--fs-14);border-left:3px solid transparent;white-space:nowrap}
.rail a:hover{background:var(--surface-rail-hover);color:var(--text-on-dark)}
.rail a.active{background:var(--surface-rail-active);color:#fff;border-left-color:var(--blue-500)}
.rail:not(.open) a span{display:none}
.rail .sec{font-size:var(--fs-12);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--gray-400);padding:var(--sp-4) 22px var(--sp-1)}
.rail:not(.open) .sec{height:1px;padding:0;margin:var(--sp-2) 14px;background:var(--gray-700);font-size:0}

.main{margin-left:var(--rail-w);padding-top:var(--header-h)}
.rail.open ~ .main{margin-left:var(--rail-w-open)}
.content{padding:var(--sp-6);max-width:var(--content-max)}
.page-head{display:flex;align-items:flex-end;gap:var(--sp-4);margin-bottom:var(--sp-5)}
.crumb{font-size:var(--fs-12);color:var(--text-3);margin-bottom:2px}
.page-title{margin:0;font-size:var(--fs-28);line-height:var(--lh-tight);font-weight:var(--fw-bold);color:var(--text-title)}
.page-head .sp{flex:1}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:var(--tap);padding:0 var(--sp-4);border-radius:var(--r-2);border:1px solid transparent;font:inherit;font-size:var(--fs-14);font-weight:var(--fw-semibold);cursor:pointer;text-decoration:none}
.btn-primary{background:var(--accent);color:var(--accent-ink)}
.btn-primary:hover{background:var(--accent-hover)}
.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border-strong)}
.btn-ghost{background:transparent;color:var(--accent)}
.btn-icon{width:var(--tap);padding:0}
.btn-edit{width:var(--tap);height:var(--tap);padding:0;background:var(--accent);color:#fff;border-radius:var(--r-2)}
.btn-edit svg.i{width:18px;height:18px}

/* Notices */
.notice{display:flex;gap:var(--sp-2);align-items:flex-start;border-left:4px solid var(--warning);background:var(--warning-soft);color:var(--gray-800);font-size:var(--fs-13);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-1);margin-bottom:var(--sp-5)}
.notice.info{border-left-color:var(--info);background:var(--info-soft)}

/* Cards / tiles */
.grid{display:grid;gap:var(--sp-4)}
.g4{grid-template-columns:repeat(4,1fr)} .g2{grid-template-columns:repeat(2,1fr)}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-2);box-shadow:var(--sh-1)}
.card-hd{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);min-height:52px}
.card-hd h3{margin:0;font-size:var(--fs-16);font-weight:var(--fw-semibold)}
.card-hd .sp{flex:1}
.card-bd{padding:var(--sp-4)}
.card-bd.flush{padding:0}
.stat{padding:var(--sp-4);border-top:3px solid var(--gray-300)}
.stat.accent{border-top-color:var(--accent)} .stat.danger{border-top-color:var(--danger)}
.stat .lbl{font-size:var(--fs-12);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--text-2);font-weight:var(--fw-semibold)}
.stat .val{font-size:var(--fs-28);font-weight:var(--fw-bold);margin:var(--sp-1) 0;font-variant-numeric:tabular-nums}
.stat .sub{font-size:var(--fs-12);color:var(--text-3)}
.up{color:var(--success)} .down{color:var(--danger)}

/* Bars */
.bar-row{display:grid;grid-template-columns:110px 1fr 76px;gap:var(--sp-3);align-items:center;font-size:var(--fs-13);min-height:28px}
.track{height:10px;background:var(--gray-100);border-radius:var(--r-1)}
.fill{height:100%;background:var(--gray-600);border-radius:var(--r-1)}
.fill.accent{background:var(--accent)}
.num{text-align:right;font-variant-numeric:tabular-nums}

/* Search panel */
.search-panel{border:1px solid var(--border);background:var(--surface);border-radius:var(--r-2);padding:var(--sp-4);margin-bottom:var(--sp-4);position:relative}
.search-panel legend{font-size:var(--fs-12);color:var(--text-2);padding:0 var(--sp-1)}
.search-row{display:flex;max-width:520px}
.search-row .btn-icon{border-radius:var(--r-2) 0 0 var(--r-2);background:var(--accent);color:#fff}
.search-row input{flex:1;min-height:var(--tap);border:1px solid var(--border-input);border-left:0;border-radius:0 var(--r-2) var(--r-2) 0;padding:0 var(--sp-3);font:inherit;font-size:var(--fs-16)}
.radios{display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-4);margin:var(--sp-2) 0}
.radios label{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--tap);font-size:var(--fs-14)}
.radios input{width:18px;height:18px;accent-color:var(--accent)}
.fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--sp-3)}
.field label{display:block;font-size:var(--fs-12);color:var(--text-2);font-weight:var(--fw-semibold);margin-bottom:var(--sp-1)}
.select,.input{width:100%;min-height:var(--tap);border:1px solid var(--border-input);border-radius:var(--r-2);background:var(--surface);font:inherit;font-size:var(--fs-14);padding:0 var(--sp-3);color:var(--text)}
.filter-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-3)}
.fchip{min-height:var(--tap);display:inline-flex;align-items:center;gap:6px;padding:0 var(--sp-3);border:1px solid var(--border-strong);border-radius:var(--r-pill);background:var(--surface);font-size:var(--fs-13);color:var(--text-2)}
.fchip b{color:var(--text)}
.fchip.on{background:var(--gray-800);border-color:var(--gray-800);color:#fff}
.fchip.on b{color:#fff}

/* Table toolbar + pager */
.tbl-bar{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border);flex-wrap:wrap}
.pager{display:flex;align-items:center;gap:var(--sp-1)}
.pg{min-width:var(--tap);height:var(--tap);display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;border-radius:var(--r-2);font:inherit;font-size:var(--fs-14);color:var(--text)}
.pg.chip{background:var(--gray-100)}
.pg.cur{background:transparent;font-weight:var(--fw-bold);box-shadow:inset 0 -2px 0 var(--accent)}
.pg[disabled]{color:var(--gray-300)}
.pg-info{margin-left:auto;font-size:var(--fs-13);color:var(--text-2)}

table.dt{width:100%;border-collapse:collapse;font-size:var(--fs-14)}
.dt th{background:var(--surface-sunken);text-align:left;font-size:var(--fs-12);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--text-2);padding:0 var(--sp-3);height:40px;white-space:nowrap;border-bottom:1px solid var(--border)}
.dt th .sort{display:inline-flex;align-items:center;gap:4px;min-height:var(--tap);background:none;border:0;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;padding:0}
.dt th .sort::after{content:"\21C5";font-size:var(--fs-12);color:var(--gray-400)}
.dt th[aria-sort=ascending] .sort::after{content:"\2191";color:var(--accent)}
.dt th.num,.dt td.num{text-align:right}
.dt td{padding:0 var(--sp-3);height:var(--row-h);border-bottom:1px solid var(--border);vertical-align:middle}
.dt tbody tr:hover{background:var(--surface-hover)}
.dt td.act{width:60px;text-align:center;padding:0 var(--sp-2)}
.dt .office{background:var(--gray-25)}
.dt th.office{background:#e2e7ec}
.mono{font-family:var(--font-mono);font-size:var(--fs-13)}

/* Badges */
.badge{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-12);font-weight:var(--fw-semibold);padding:2px 8px;border-radius:var(--r-pill);line-height:18px;background:var(--gray-100);color:var(--gray-700)}
.b-success{background:var(--success-soft);color:var(--success)}
.b-warning{background:var(--warning-soft);color:var(--warning)}
.b-danger{background:var(--danger-soft);color:var(--danger)}
.b-info{background:var(--info-soft);color:var(--info)}
.role-tag{font-size:var(--fs-12);color:var(--text-2);display:inline-flex;align-items:center;gap:4px}

/* Feed */
.feed-row{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--row-h);padding:0 var(--sp-4);border-bottom:1px solid var(--border);font-size:var(--fs-13)}
.feed-row .t{color:var(--text-3);width:80px;font-variant-numeric:tabular-nums}
.feed-row .amt{margin-left:auto;font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums}

/* Sign-on */
body.signon{min-height:100vh;background:linear-gradient(180deg,var(--surface-signin-top),var(--surface-signin-bottom));display:flex;align-items:center;justify-content:center;padding:var(--sp-6)}
.signon-card{width:100%;max-width:400px;background:rgba(250,251,252,.94);border:1px solid rgba(255,255,255,.5);border-radius:var(--r-3);box-shadow:var(--sh-3);padding:var(--sp-8)}
.signon-brand{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-6);text-align:center}
.signon-brand .mark{width:56px;height:56px;font-size:var(--fs-18)}
.signon-brand h1{margin:0;font-size:var(--fs-24);color:var(--text)}
.signon-brand p{margin:0;color:var(--text-2);font-size:var(--fs-13)}
.signon-card .field{margin-bottom:var(--sp-4)}
.signon-card .input{font-size:var(--fs-16)}
.signon-card .btn{width:100%}
.signon-card .btn+.btn{margin-top:var(--sp-2)}
.signon-help{font-size:var(--fs-12);color:var(--text-2);text-align:center;margin:var(--sp-4) 0 0}
.signon-foot{position:fixed;bottom:var(--sp-4);left:0;right:0;text-align:center;color:var(--text-on-dark-2);font-size:var(--fs-12)}
.steps{display:flex;justify-content:center;gap:var(--sp-2);margin-bottom:var(--sp-4);font-size:var(--fs-12);color:var(--text-3)}
.steps .on{color:var(--accent);font-weight:var(--fw-bold)}

.compare{display:grid;grid-template-columns:1fr;gap:var(--sp-4);padding:var(--sp-6);max-width:1100px;margin:0 auto}
.compare img{width:100%;border:1px solid var(--border);box-shadow:var(--sh-2)}
.compare h2{margin:var(--sp-4) 0 0;font-size:var(--fs-18)}
.caption{font-size:var(--fs-13);color:var(--text-2)}

@media (max-width:1100px){.g4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:860px){
  .rail,.rail.open{width:var(--rail-w-open);transform:translateX(-100%)}
  .rail.is-open{transform:none;box-shadow:var(--sh-3)}
  .main,.rail.open ~ .main{margin-left:0}
  .hdr-time,.hdr-sync,.hdr-user small,.hdr-user span.n{display:none}
  .hdr-store{min-width:0;max-width:150px}
  .content{padding:var(--sp-4)}
  .page-title{font-size:var(--fs-24)}
  .g4,.g2{grid-template-columns:1fr}
  .g4.stats-m{grid-template-columns:1fr 1fr}
  .pg.chip:not(.cur){display:none}
  /* tables collapse to stacked cards */
  .dt.stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .dt.stack tr{display:grid;grid-template-columns:1fr auto;gap:2px var(--sp-3);padding:var(--sp-3);border-bottom:1px solid var(--border)}
  .dt.stack td{display:block;height:auto;border:0;padding:0;text-align:left}
  .dt.stack td[data-label]::before{content:attr(data-label) ": ";font-size:var(--fs-12);color:var(--text-3)}
  .dt.stack td.act{grid-row:1/span 3;grid-column:2;align-self:center}
}
.w1{width:1%}
.w2{width:2%}
.w3{width:3%}
.w4{width:4%}
.w10{width:10%}
.w13{width:13%}
.w15{width:15%}
.w100{width:100%}
.mt-4{margin-top:var(--sp-4)}
fieldset.search-panel{min-width:0}
@media (max-width:860px){
  .page-head{flex-wrap:wrap;align-items:flex-start}
  .page-head .sp{display:none}
  .hdr-brand b,.hdr-user div:not(.avatar){display:none}
  .fields{grid-template-columns:1fr}
  .search-row{max-width:none}
  .pg-info{margin-left:0;width:100%}
  .dt.stack tr{grid-template-columns:minmax(0,1fr) auto}
  .dt.stack td.office{background:transparent}
  .card{overflow:hidden}
}
@media (max-width:860px){.dt.stack td{grid-column:1}.dt.stack td.act{grid-column:2}}
/* Brand logo (local asset, img-src 'self') */
.logo{display:block;height:38px;width:auto;max-width:180px;object-fit:contain}
.signon-brand .logo{height:auto;width:170px;max-width:100%}
@media (max-width:859px){.logo{height:32px}}
