/* Shared layout primitives. Page-specific grids stay with their modules. */
.btn{min-height:36px;height:auto;justify-content:center;line-height:1.4;
  padding-top:7px;padding-bottom:7px;max-width:100%;white-space:normal;text-align:center}
.btn:focus-visible,.text-summary:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.text-summary{display:block;min-width:0;max-width:100%;padding:2px 0;border:0;
  border-radius:3px;background:transparent;color:inherit;font:inherit;text-align:left;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;
  text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px}
.text-summary:hover{color:var(--info)}
.responsive-detail{position:fixed;z-index:1200;margin:0;padding:12px 14px;
  width:max-content;max-width:min(420px,calc(100vw - 24px));
  max-height:min(50vh,320px);overflow:auto;overscroll-behavior:contain;
  border:1px solid var(--border);border-radius:var(--r-sm,7px);
  box-shadow:var(--pop);background:var(--card);color:var(--foreground);
  font:13px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  white-space:pre-wrap;overflow-wrap:anywhere;user-select:text}
.responsive-detail[hidden]{display:none}
@media (max-width:820px),(pointer:coarse){
  .btn,.navitem,.navtoggle,.seg button{min-height:44px;height:auto}
  .navtoggle{min-width:44px}
  .text-summary{min-height:44px;padding-top:11px;padding-bottom:11px}
  input[type=text],input[type=password],input[type=email],input[type=search],
  input[type=number],input[type=url],input[type=tel],select,textarea{font-size:16px}
}
/* Auxiliary tools share the same usable small-screen controls. */
.aux-dieline .wrap>div,.aux-dieline .card,.aux-progress .card-b,
.aux-taskcard .field-v{min-width:0;overflow-wrap:anywhere}
.aux-dieline .row2,.aux-dieline .row3{grid-template-columns:repeat(2,minmax(0,1fr))}
.aux-dieline .row3{grid-template-columns:repeat(3,minmax(0,1fr))}
.aux-dieline .card{overflow-x:auto}
.aux-progress .dl-t{min-width:0;flex-basis:220px;overflow-wrap:anywhere}
.aux-progress .topbar{height:auto;min-height:56px;flex-wrap:wrap;padding-top:8px;padding-bottom:8px}
.aux-taskcard .wrap{overflow-wrap:anywhere}
@media (max-width:900px){
  .aux-dieline .wrap{grid-template-columns:minmax(0,1fr)}
  .aux-dieline .top{position:static}
}
@media (max-width:820px){
  .aux-calc .topbar{height:auto;flex-wrap:wrap;padding:8px 12px}
  .aux-calc .seg{max-width:100%;flex-wrap:wrap;gap:4px}
  .aux-calc .seg button{flex:1 1 auto}
  .aux-calc .btn{min-height:44px}
  .aux-calc .field input,.aux-calc .field select{min-height:44px;font-size:16px}
  .aux-dieline input,.aux-dieline select{min-height:44px;font-size:16px;min-width:0}
  .aux-login .peek{min-width:44px;min-height:44px;right:1px;top:0;bottom:0}
  .aux-login .f input,.aux-login .go,.aux-login .flow-actions button{min-height:44px;font-size:16px}
  .aux-login .flow-actions button{flex:1 1 140px}
  .aux-progress .wrap{padding:18px 12px 48px}
  .aux-progress .card-h{padding-left:14px;padding-right:14px}
  .aux-progress .card-b{padding:14px}
  .aux-progress .card-d{margin-left:14px;margin-right:14px}
  .aux-progress .node{padding:16px 12px}
  .aux-progress .node-s{position:static;display:block;margin-top:8px}
  .aux-progress .node-i{position:static;display:block;margin-bottom:6px}
  .aux-taskcard .wrap{padding:28px 16px 56px}
  .aux-taskcard .sec-h{flex-wrap:wrap;gap:8px}
  .aux-taskcard .pits{grid-template-columns:minmax(0,1fr)}
  .aux-taskcard .flow{padding:14px}
  .aux-taskcard .flow-grid{grid-template-columns:minmax(0,1fr)}
  .aux-taskcard .flow-grid>*,.aux-taskcard .role .job{min-width:0}
  .aux-taskcard .conn{flex-wrap:wrap}
  .aux-taskcard .conn .lbl{white-space:normal}
  .aux-taskcard button.theme{min-height:44px}
}
@media (max-width:420px){
  .aux-dieline .wrap{padding:12px;gap:12px}
  .aux-dieline .top{padding:12px}
  .aux-dieline .card{padding:14px 12px}
  .aux-dieline .row2,.aux-dieline .row3{grid-template-columns:minmax(0,1fr)}
  .aux-progress .metrics{grid-template-columns:minmax(0,1fr)}
  .aux-progress .dl{padding:16px;gap:14px}
  .aux-login .brand{padding:18px 16px 12px}
  .aux-login .art svg{max-width:240px}
  .aux-login .panel{padding:24px 16px 32px}
}
@media (prefers-reduced-motion:reduce){
  .btn,.text-summary,.responsive-detail{transition:none;animation:none}
}
