/* Layout and the pieces added on top of base.css (which is the original single-file stylesheet). */
:root{--side-w:232px;--side-wc:62px;--top-h:56px}
body.plain{display:grid;place-items:center;min-height:100vh;padding:16px}
.narrow{width:100%;max-width:400px}
.brand-lg{font-size:26px;font-weight:700;color:var(--accent);margin-bottom:6px}

.app{display:flex;min-height:100vh}
#side{position:sticky;top:0;align-self:flex-start;height:100vh;width:var(--side-w);flex:none;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;transition:width .18s ease;overflow:hidden;z-index:40}
.app.collapsed #side{width:var(--side-wc)}
.side-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 10px 0 16px;height:var(--top-h);border-bottom:1px solid var(--line);flex:none}
.brand{font-weight:700;color:var(--accent);font-size:18px;white-space:nowrap}
#nav{overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:2px}
.nav-item{display:flex;align-items:center;gap:12px;width:100%;border:0;background:transparent;text-align:left;padding:10px;border-radius:6px;color:var(--mute);font-weight:500;white-space:nowrap}
.nav-item:hover{background:var(--head);color:var(--ink)}
.nav-item[aria-pressed=true]{background:var(--head);color:var(--ink);box-shadow:inset 3px 0 var(--accent)}
.ic{width:24px;text-align:center;font-size:18px;flex:none}
.nav-sep{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--mute);padding:14px 10px 4px;white-space:nowrap}
.app.collapsed .brand,.app.collapsed .lbl{display:none}
.app.collapsed .side-head{padding:0;justify-content:center}
.app.collapsed .nav-sep{font-size:0;padding:8px 0 4px;border-top:1px solid var(--line);margin-top:8px}
.app.collapsed .nav-item{justify-content:center;padding:10px 0}
.icon{padding:6px 10px;font-size:16px;line-height:1}
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:35}

.content-wrap{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:30;height:var(--top-h);display:flex;align-items:center;gap:12px;padding:0 20px;background:var(--bg);border-bottom:1px solid var(--line)}
.topbar h1{font-size:18px;color:var(--ink);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top-right{margin-left:auto;display:flex;gap:12px;align-items:center;flex:none}
.top-right .lang{margin-left:0}
#burger{display:none}
.umenu{position:relative}
#umenu-btn{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 12px;font-size:14px}
.udrop{position:absolute;right:0;top:calc(100% + 6px);min-width:200px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px;display:flex;flex-direction:column;gap:6px;box-shadow:0 6px 24px rgba(0,0,0,.18);z-index:50}
.udrop form{margin:0}.udrop button{width:100%;text-align:left}
#content{max-width:1500px;width:100%;margin:0;padding:20px 24px 90px}

/* sticky bars and tables */
.bar.sticky{position:sticky;top:var(--top-h);z-index:6;background:var(--panel);padding:10px 0;margin:0 0 6px;border-bottom:1px solid var(--line)}
#xlsx-scope{width:auto;min-width:150px}
.cat-pager{justify-content:center;margin-top:12px}.cat-pager .count{margin-left:0}
.wrap.tall{max-height:calc(100vh - var(--top-h) - 150px);overflow:auto}
.wrap.tall th{position:sticky;top:0;z-index:2}
th.c,td.c{text-align:center}
.fab{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:25;border-radius:999px;padding:12px 20px;box-shadow:0 4px 16px rgba(0,0,0,.3)}
@media(min-width:1101px){.fab{display:none!important}}

dialog{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:20px}
dialog::backdrop{background:rgba(0,0,0,.45)}
.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:8px;z-index:60;max-width:90vw;font-weight:600}
.empty{padding:40px 16px;text-align:center;color:var(--mute)}
a{color:var(--accent)}
.tag.dim{color:var(--mute)}.tag.dim::before{content:"\2022"}
.tag.busy{color:var(--mute)}.tag.busy::before{content:"\2026"}
td.upd{white-space:normal;font-size:13px;color:var(--mute);min-width:120px}
td.act select{width:auto}
details.log{white-space:normal}
details.log pre{margin:6px 0 0;font:12px/1.5 ui-monospace,Consolas,Menlo,monospace;white-space:pre-wrap;word-break:break-all;color:var(--mute)}
tr.flag-bad td{background:color-mix(in srgb,var(--bad) 8%,transparent)}
.perm-yes{color:var(--ok)}.perm-no{color:var(--mute)}.perm-own{color:var(--warn)}

/* tablets and phones */
@media(max-width:900px){
  #side{position:fixed;left:0;top:0;height:100%;width:min(280px,84vw)!important;transform:translateX(-102%);transition:transform .2s ease;box-shadow:4px 0 24px rgba(0,0,0,.3)}
  .app.open #side{transform:none}
  #side-toggle{display:none}
  .app.collapsed .brand,.app.collapsed .lbl{display:inline}
  .app.collapsed .side-head{padding:0 10px 0 16px;justify-content:space-between}
  .app.collapsed .nav-sep{font-size:12px;padding:14px 10px 4px;border:0;margin:0}
  .app.collapsed .nav-item{justify-content:flex-start;padding:10px}
  #burger{display:inline-block}
  .topbar{padding:0 max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left));gap:8px}
  .topbar h1{font-size:16px}
  #content{padding:16px 16px 100px}
  .top-right .lang button{padding:6px 9px}
  #umenu-btn{max-width:96px}
  /* keep the checkbox and product name in view while scrolling the wide table sideways */
  #page-cat td.sel,#page-cat th.sel{position:sticky;left:0;z-index:1;background:var(--panel)}
  #page-cat td.nm{position:sticky;left:46px;z-index:1;background:var(--panel);box-shadow:2px 0 0 var(--line)}
  #page-cat th:nth-child(2){position:sticky;left:46px;z-index:3;box-shadow:2px 0 0 var(--line)}
  #page-cat th.sel{z-index:3;background:var(--head)}
  .wrap.tall{max-height:70vh}
}
@media(max-width:520px){
  .f{grid-template-columns:1fr}
  .bar .count{margin-left:0;width:100%}
  .lang-top{display:none}   /* language switch moves into the user menu on small phones */
}
@media(pointer:coarse){button,select,input:not([type=checkbox]):not([type=file]){min-height:42px}td button{min-height:34px}}
@media(prefers-reduced-motion:reduce){#side{transition:none}}
.lang-m{display:none;align-self:flex-start}
@media(max-width:520px){.lang-m{display:flex}}
