/* Shell da plataforma Xcope: chrome (rail, spotlight, tabbar) + utilitários base das apps.
   Extraído do PeopleX; serve de base a todos os produtos. */
  html,body{margin:0}
  *,*::before,*::after{box-sizing:border-box}
  #app{font-size:var(--ui-fs-body);line-height:var(--ui-lh-body);font-family:var(--font-sans);background:var(--ui-surface-2);color:var(--ui-text);height:100dvh;display:flex;overflow:hidden;container-type:inline-size;container-name:app}
  #app *{min-width:0}
  img,video,svg{max-width:100%}
  a{color:var(--ui-link)}

  .rail-srch{display:flex;align-items:center;gap:8px;height:40px;width:256px;padding:0 12px;box-sizing:border-box;
    background:var(--ui-surface);border-radius:999px;box-shadow:var(--ui-elev-1);color:var(--ui-text-3);cursor:pointer;flex-shrink:0;
    transition:width var(--ui-dur) var(--ui-ease),box-shadow var(--ui-dur) var(--ui-ease)}
  .rail-srch:hover{box-shadow:var(--ui-elev-2);color:var(--ui-text-2)}
  .rail-srch kbd{font-family:var(--font-sans);font-size:var(--ui-fs-xs);font-weight:600;border:1px solid var(--ui-border-2);border-radius:5px;padding:1px 5px;color:var(--ui-text-3);background:var(--ui-surface-2)}
  .kbds{display:flex;gap:3px;flex-shrink:0}
  .railcol{flex-shrink:0;display:flex;flex-direction:column;gap:8px;height:100dvh;padding:10px 0 10px 10px;box-sizing:border-box}
  .rail{width:256px;flex-shrink:0;background:var(--ui-surface);display:flex;flex-direction:column;flex:1;min-height:0;border-radius:20px;box-shadow:var(--ui-elev-1);box-sizing:border-box;overflow:hidden;transition:width var(--ui-dur) var(--ui-ease)}
  .rail-top{padding:8px}
  .rail-scroll{flex:1;overflow:auto;padding:4px 8px;scroll-behavior:smooth}
  .rail-bot{padding:8px;position:relative}
  .mk{width:32px;height:32px;border-radius:8px;background:var(--ui-accent);color:var(--ui-on-accent);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:var(--ui-fs-h3);flex-shrink:0}
  .ws{display:flex;align-items:center;gap:8px;padding:8px;height:48px;border-radius:8px;cursor:pointer;transition:background var(--ui-dur) var(--ui-ease)}
  .ws:hover{background:var(--ui-surface-2)}
  .sec{display:flex;align-items:center;gap:8px;font-size:var(--ui-fs-xs);font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--ui-text-3);padding:14px 10px 6px;cursor:pointer;user-select:none}
  .sec:hover{color:var(--ui-text-2)}
  .sec>span:first-child{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .secdot{width:6px;height:6px;border-radius:999px;background:var(--ui-accent);flex-shrink:0}
  .secchev{display:inline-flex;opacity:0.55;transform:rotate(-90deg);transition:transform var(--ui-dur) var(--ui-ease);flex-shrink:0}
  .sec.open .secchev{transform:none}
  .main{flex:1;min-width:0;display:flex;flex-direction:column;height:calc(100dvh - 20px);margin:10px;border-radius:20px;background:var(--ui-surface);box-shadow:var(--ui-elev-1);overflow:hidden;container-type:inline-size;container-name:main}
  .crumb:hover{color:var(--ui-text);text-decoration:underline}
  .navscrim{display:none}
  .tabbar{display:none}
  @container app (max-width:760px){
    .tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:48;
      background:color-mix(in srgb,var(--ui-surface) 88%,transparent);backdrop-filter:blur(20px);
      border-top:1px solid var(--ui-border);padding-bottom:var(--safe-bottom,env(safe-area-inset-bottom,0px))}
    .tabbar button{appearance:none;border:none;background:transparent;font-family:inherit;cursor:pointer;
      display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
      min-height:52px;padding:8px 0 6px;color:var(--ui-text-3);font-size:10px;font-weight:600;letter-spacing:.01em}
    .tabbar button[aria-current="page"]{color:var(--ui-text)}
    .tabbar .dot{position:absolute;top:8px;margin-left:14px;width:7px;height:7px;border-radius:999px;background:var(--ui-danger)}
    #app .scroll{padding-bottom:calc(76px + var(--safe-bottom,env(safe-area-inset-bottom,0px)))!important}
  }
  .navtoggle{display:none!important}
  @container app (max-width:760px){.navscrim{display:block;position:fixed;inset:0;z-index:49;background:var(--ui-overlay);opacity:0;pointer-events:none;transition:opacity .22s var(--ui-ease)}}
  .wcard{container-type:inline-size}
  .wcard [style*="border-radius: 50%"],.wcard [style*="borderRadius:50%"]{flex-shrink:0}
  @container app (max-width:760px){
    .wcard .row{flex-wrap:wrap}
    .wcard [style*="margin-left: -8px"],.wcard [style*="margin-left:-8px"]{margin-left:-10px!important}
  }
  @container (max-width:280px){
    .wcard .row{flex-wrap:wrap;row-gap:6px}
  }
  @keyframes navspin{to{transform:rotate(360deg)}}
  .navspin{width:13px;height:13px;border-radius:999px;border:1.6px solid var(--ui-border-2);border-top-color:var(--ui-text-3);animation:navspin 900ms linear infinite;flex-shrink:0}
  .wgrip{position:absolute;touch-action:none;z-index:2}
  .wgrip::after{content:"";position:absolute;inset:0;border-radius:999px;background:transparent;transition:background var(--ui-dur) var(--ui-ease)}
  .wgrip:hover::after{background:var(--ui-data)}
  .wg-n,.wg-s{left:14%;right:14%;height:8px;cursor:ns-resize}
  .wg-n{top:-4px}.wg-s{bottom:-4px}
  .wg-n::after,.wg-s::after{inset:3px 25%}
  .wg-e,.wg-w{top:14%;bottom:14%;width:8px;cursor:ew-resize}
  .wg-e{right:-4px}.wg-w{left:-4px}
  .wg-e::after,.wg-w::after{inset:25% 3px}
  .wg-ne,.wg-nw,.wg-se,.wg-sw{width:16px;height:16px}
  .wg-ne{top:-4px;right:-4px;cursor:nesw-resize}
  .wg-nw{top:-4px;left:-4px;cursor:nwse-resize}
  .wg-se{bottom:-4px;right:-4px;cursor:nwse-resize}
  .wg-sw{bottom:-4px;left:-4px;cursor:nesw-resize}
  .wg-ne::after,.wg-nw::after,.wg-se::after,.wg-sw::after{inset:4px}
  .wdel{width:26px;height:26px;border-radius:999px;display:grid;place-items:center;color:var(--ui-text-3);cursor:pointer}
  .wdel:hover{background:var(--ui-danger-bg);color:var(--ui-danger)}
  .cp{width:clamp(250px,17cqi,264px);flex-shrink:0;background:var(--ui-surface);display:flex;flex-direction:column;height:calc(100dvh - 20px);margin:10px 10px 10px 0;border-radius:20px;box-shadow:var(--ui-elev-1);box-sizing:border-box;padding:0}
  .cpfab{display:none;position:fixed;right:16px;bottom:calc(64px + var(--safe-bottom,env(safe-area-inset-bottom,0px)) + 12px);z-index:51;width:52px;height:52px;border-radius:999px;align-items:center;justify-content:center;background:var(--ui-text);color:var(--ui-surface);box-shadow:var(--ui-elev-3);cursor:pointer;border:none}
  .cpscrim{display:none;position:fixed;inset:0;z-index:51;background:var(--ui-overlay)}
  @keyframes cpUp{from{transform:translateY(100%)}to{transform:none}}
  .cp-rail{width:64px;flex-shrink:0;background:var(--ui-surface);display:flex;align-items:flex-start;justify-content:center;padding-top:20px;cursor:pointer;height:calc(100dvh - 20px);margin:10px 10px 10px 0;border-radius:20px;box-shadow:var(--ui-elev-1);box-sizing:border-box}
  .cp-orb{width:30px;height:30px;border-radius:999px;background:var(--ui-surface-2);border:1px solid transparent;display:grid;place-items:center;color:var(--ui-text);flex-shrink:0;box-shadow:var(--ui-elev-1)}
  .cp-orb svg{display:block}
  .cp-rail:hover .cp-orb{background:var(--ui-text);color:var(--ui-surface)}
  .cp-sug{padding:9px 14px;border-radius:999px;background:var(--ui-surface-2);border:1px solid transparent;font-size:var(--ui-fs-sm);font-weight:500;cursor:pointer;transition:background var(--ui-dur) var(--ui-ease)}
  .cp-sug:hover{background:var(--ui-text);color:var(--ui-surface);border-color:transparent}
  .cp-me{align-self:flex-end;max-width:88%;padding:12px 16px;border-radius:20px 20px 6px 20px;background:var(--ui-accent);color:var(--ui-on-accent);font-size:var(--ui-fs-sm);line-height:1.55}
  .cp-ai{align-self:flex-start;max-width:92%;padding:12px 16px;border-radius:20px 20px 20px 6px;background:var(--ui-surface-2);font-size:var(--ui-fs-sm);line-height:1.55}
  .cp-box{background:var(--ui-surface-2);border-radius:24px;padding:12px 14px}
  .cp-ta{width:100%;border:none;outline:none;resize:none;background:transparent;color:var(--ui-text);font-family:var(--font-sans);font-size:var(--ui-fs-sm);line-height:1.5}
  .cp-ta::placeholder{color:var(--ui-text-3)}
  .cp-ctx{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:var(--ui-surface);font-size:var(--ui-fs-xs);font-weight:600;color:var(--ui-text-2)}
  .cp-add{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:999px;border:1px dashed var(--ui-border-2);font-size:var(--ui-fs-xs);font-weight:600;color:var(--ui-text-2);cursor:pointer}
  .cp-send{width:32px;height:32px;border-radius:999px;background:var(--ui-accent);color:var(--ui-on-accent);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}

  .rail-srch-OLD{display:flex;align-items:center;gap:10px;height:38px;margin-top:8px;padding:0 10px;border-radius:var(--ui-r-sm);border:1px solid var(--ui-border);background:var(--ui-surface);color:var(--ui-text-3);cursor:text}
  .rail-srch:hover{background:var(--ui-surface-2)}
  .rail.mini .rail-srch{justify-content:center;padding:0}
  .kbds{display:flex;gap:3px}
  .rail.mini .kbds{display:none}
  .top{height:60px;flex-shrink:0;border-bottom:1px solid var(--ui-divider);display:flex;align-items:center;gap:14px;padding:0 clamp(14px,2cqi,24px);background:var(--ui-surface)}
  .scroll{flex:1;overflow:auto;padding:clamp(14px,2cqi,24px);container-type:inline-size;container-name:view}
  .spring{flex:1}
  .head{display:flex;align-items:center;gap:16px;margin-bottom:16px;flex-wrap:wrap}
  .h-t{font-size:var(--ui-fs-h2);font-weight:600;letter-spacing:-0.01em;text-wrap:balance}
  .h-d{font-size:var(--ui-fs-sm);color:var(--ui-text-3);margin-top:3px;text-wrap:pretty}
  .grid{display:grid;gap:clamp(10px,1.2cqi,16px)}
  .g2{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}.g3{grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))}.g4{grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr))}
  .split{display:grid;gap:clamp(12px,1.5cqi,20px);grid-template-columns:minmax(0,1fr) minmax(280px,var(--aside,380px))}
  .panes{display:grid;flex:1;min-height:0;grid-template-columns:minmax(0,var(--pane,340px)) minmax(0,1fr)}
  .panes3{grid-template-columns:minmax(0,220px) minmax(0,1fr) minmax(0,300px)}
  @container view (max-width:1180px){.panes3{grid-template-columns:minmax(0,200px) minmax(0,1fr) minmax(0,260px)}}
  .wgrid{container-type:inline-size;container-name:wgrid}
  
  
  @container view (max-width:980px){.split{grid-template-columns:minmax(0,1fr)}.panes{grid-template-columns:minmax(0,260px) minmax(0,1fr)}.panes3{grid-template-columns:minmax(0,210px) minmax(0,1fr)}.panes3>:last-child{display:none!important}.dash{flex-direction:column}.dash .aside{width:auto!important}}
  @container view (max-width:680px){.panes{grid-template-columns:minmax(0,1fr)}.panes>:first-child{display:none!important}.head{gap:8px}}
  .rail{transition:width var(--ui-dur-2,180ms) var(--ui-ease,cubic-bezier(0.2,0.8,0.2,1))}
  .rail.mini{width:56px!important}
  .railcol.mini .rail-srch{width:56px;justify-content:center;padding:0}
  .railcol.mini .rail-srch .lbl,.railcol.mini .rail-srch .kbds{display:none}
  .rail.mini .lbl,.rail.mini .sec,.rail.mini .ws-txt{display:none}
  .rail.mini .nav-i{justify-content:center;gap:0;padding:0;width:40px;height:40px;margin:2px auto;border-radius:14px}
  .rail .nav-i{height:32px!important;padding:0 8px!important;gap:8px!important;border-radius:8px!important;font-size:var(--ui-fs-body)!important;font-weight:500!important}
  .rail .nav-i[aria-current="page"]{font-weight:500!important}
  .rail .nav-i svg{width:16px;height:16px}
  .sec{font-size:var(--ui-fs-xs)!important;font-weight:500!important;letter-spacing:0!important;text-transform:none!important;padding:12px 8px 4px!important;height:auto}
  .navgroup{padding:4px 0}
  .menuitem{position:relative}
  .menusub{margin:1px 0 2px 22px;padding-left:10px;border-left:1px solid var(--ui-border);display:flex;flex-direction:column;gap:1px}
  .subbtn{display:flex;align-items:center;height:28px;padding:0 8px;border-radius:8px;font-size:var(--ui-fs-body);font-weight:400;color:var(--ui-text-2);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background var(--ui-dur) var(--ui-ease)}
  .subbtn:hover{background:var(--ui-hover);color:var(--ui-text)}
  .subbtn.on{background:var(--ui-accent-weak);color:var(--ui-text);font-weight:500}
  .treechev{display:inline-flex;color:var(--ui-text-3);transition:transform 200ms var(--ui-ease)}
  .treechev.open{transform:rotate(90deg)}
  .menuaction{position:absolute;right:6px;top:4px;width:24px;height:24px;border-radius:6px;display:none;place-items:center;color:var(--ui-text-3);cursor:pointer}
  .menuitem:hover .menuaction{display:grid}
  .menuaction:hover{background:var(--ui-hover);color:var(--ui-text)}
  .rail.mini .menuaction,.rail.mini .menusub,.rail.mini .navgroup .sec,.rail.mini .more{display:none!important}
  .rowmenu,.usermenu{position:absolute;z-index:71;min-width:192px;background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:12px;box-shadow:var(--ui-elev-3,0 20px 50px rgba(10,20,25,.22));padding:4px}
  .rowmenu{left:calc(100% - 8px);top:26px}
  .usermenu{left:8px;right:8px;bottom:calc(100% + 4px)}
  .rowmenu>div:not(.sep),.usermenu>div:not(.sep):not(.row){display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;font-size:var(--ui-fs-body);color:var(--ui-text);cursor:pointer}
  .rowmenu>div:not(.sep):hover,.usermenu>div:not(.sep):not(.row):hover{background:var(--ui-hover)}
  .rowmenu .sep,.usermenu .sep{height:1px;background:var(--ui-divider);margin:4px 0}
  .navuser{height:48px}
  .teammenu{position:fixed;z-index:61;background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:12px;
    box-shadow:var(--ui-elev-3,0 20px 50px rgba(10,20,25,.22));padding:4px;animation:spotPanel 160ms cubic-bezier(0.16,1,0.3,1)}
  .tm-label{font-size:var(--ui-fs-xs);color:var(--ui-text-3);padding:6px 8px}
  .tm-item{display:flex;align-items:center;gap:8px;padding:8px;border-radius:8px;font-size:var(--ui-fs-body);cursor:pointer;transition:background var(--ui-dur) var(--ui-ease)}
  .tm-item:hover{background:var(--ui-hover)}
  .tm-item.off{opacity:0.45;cursor:not-allowed}
  .tm-ic{width:24px;height:24px;border-radius:6px;border:1px solid var(--ui-border);display:grid;place-items:center;flex-shrink:0;color:var(--ui-text-2)}
  .tm-ic.dashed{border-style:dashed;border-color:var(--ui-border-2)}
  .tm-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .tm-kbd{font-size:var(--ui-fs-xs);color:var(--ui-text-3);flex-shrink:0;letter-spacing:0.06em}
  .tm-sep{height:1px;background:var(--ui-divider);margin:4px 0}
  .bare-btn{display:inline-grid;place-items:center;width:24px;height:24px;color:var(--ui-text);cursor:pointer;flex-shrink:0;background:none;border:none}
  .bare-btn:hover{color:var(--ui-text-2)}
  #app h1,#app h2,#app h3{letter-spacing:-0.01em}
  .kbd-hint{font-size:var(--ui-fs-xs);font-weight:600;color:var(--ui-text-3);background:var(--ui-surface-2);border-radius:6px;padding:2px 6px;flex-shrink:0}
  .rail.mini .nav-i{position:relative}
  .tip{position:fixed;z-index:200;background:var(--ui-text);color:var(--ui-surface);padding:7px 11px;border-radius:10px;
    font-family:var(--font-sans);font-size:var(--ui-fs-sm);font-weight:600;white-space:nowrap;pointer-events:none;
    box-shadow:var(--ui-elev-2);opacity:0;transform:translateX(-4px);transition:opacity 120ms var(--ui-ease),transform 120ms var(--ui-ease)}
  .tip.on{opacity:1;transform:translateX(0)}
  .rail.mini .nav-i>*{display:none}
  .rail.mini .nav-i>*:first-child{display:grid!important;place-items:center;flex:0 0 auto;width:20px;height:20px}
  .rail.mini .nav-i svg{display:block}
  .rail.mini .nav-i .badge,.rail.mini .nav-i .navspin{display:none}
  .rail.mini .rail-bot .lbl{display:none}
  .rail.mini .rail-top,.rail.mini .rail-scroll,.rail.mini .rail-bot{padding-left:12px;padding-right:12px}
  .rail.mini .ws{justify-content:center;padding:0;width:40px;height:40px;margin:0 auto}
  .rail.mini .navuser{border-radius:var(--ui-r-sm)}
  .rail.mini .navuser:hover{background:var(--ui-surface-2)}
  .rail-hdr{display:flex;align-items:center;gap:8px}
  .collapse{width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;color:var(--ui-text-3);cursor:pointer;flex-shrink:0}
  .collapse:hover{background:var(--ui-surface-2);color:var(--ui-text)}
  .rail.mini .collapse{margin:6px auto 0}
  @container main (max-width:700px){.top{padding:0 12px;gap:8px}.top .srch-full{display:none}}
  .top .srch-btn{display:none!important}
  .top .srch{position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:5}
  @container main (max-width:700px){.top .srch-btn{display:flex!important}}
  @keyframes spotIn{from{opacity:0}to{opacity:1}}
  @keyframes tkFade{from{opacity:0}to{opacity:1}}
  @keyframes tkSlide{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:translateX(0)}}
  @keyframes spotPanel{from{opacity:0;transform:translateY(-10px) scale(0.965)}to{opacity:1;transform:translateY(0) scale(1)}}
  .pend:hover{background:var(--ui-surface-2)}
  .row{display:flex;align-items:center;gap:12px}
  .ico-btn{width:32px;height:32px;border-radius:var(--ui-r-sm);border:1px solid transparent;background:transparent;display:flex;align-items:center;justify-content:center;color:var(--ui-text-2);cursor:pointer;flex-shrink:0;transition:background var(--ui-dur) var(--ui-ease),color var(--ui-dur) var(--ui-ease)}
  .ico-btn:hover{background:var(--ui-surface-2);color:var(--ui-text)}
  .ico-btn{position:relative}
  .ico-btn .cnt{position:absolute;top:-2px;right:-2px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--ui-danger);color:#fff;font-size:10px;font-weight:700;line-height:16px;text-align:center;box-shadow:0 0 0 2px var(--ui-surface)}
  .listrow{display:flex;align-items:center;gap:14px;padding:14px 4px;border-bottom:1px solid var(--ui-divider)}
  .muted{color:var(--ui-text-3)}
  .stub{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;padding:60px 20px;color:var(--ui-text-3)}
  .stub-ic{width:64px;height:64px;border-radius:var(--ui-r-lg);background:var(--ui-surface-2);display:flex;align-items:center;justify-content:center;color:var(--ui-text-3)}
  @container app (max-width:760px){
    #app .railcol{position:fixed;left:-340px;top:0;bottom:0;height:100dvh;overflow:hidden;overscroll-behavior:contain;z-index:50;transition:left .22s var(--ui-ease);box-shadow:none;padding-top:var(--safe-top,env(safe-area-inset-top,0px));padding-bottom:var(--safe-bottom,env(safe-area-inset-bottom,0px))}
    #app[data-nav="open"] .railcol{left:0;box-shadow:var(--ui-elev-3)}
    #app[data-nav="open"] .navscrim{opacity:1;pointer-events:auto}
    .rail{width:min(84vw,300px)!important}
    .main{padding-left:0}
    .navtoggle{display:flex!important}
    /* mobile: white cards on a light desk, tight margins */
    #app,#app .main,#app .scroll{background:var(--ui-surface-2)!important}
    #app .top,#app .tabbar{background:var(--ui-surface)!important}
    /* widgets go flat and edge to edge: no card chrome eating the phone width */
    #app .scroll{padding-left:12px!important;padding-right:12px!important}
    #app .wcard{background:var(--ui-surface)!important;border:1px solid var(--ui-border)!important;border-radius:16px!important;box-shadow:none!important;padding:16px!important}
    #app .wgrid{gap:12px!important}
    /* chat header: title truncates, action icons never sit on top of it */
    #app .scroll .chat-hdr{flex-wrap:wrap!important;row-gap:6px}
    #app .scroll .chat-hdr>:first-child{flex:1 1 100%;min-width:0}
    #app .scroll .chat-hdr .row{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
    /* rows built as fixed desktop grids must stack, not crush */
    #app .scroll .tk-row{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:8px!important}
    #app .scroll .tk-row>*{width:auto!important;min-width:0!important;text-align:left!important;justify-content:flex-start!important}
    #app .scroll [style*="grid-template-columns"]{grid-template-columns:minmax(0,1fr)!important}
    #app .scroll [style*="white-space: nowrap"],#app .scroll [style*="white-space:nowrap"]{overflow:hidden;text-overflow:ellipsis}
    /* toolbars and tab strips scroll instead of stacking on top of each other */
    #app .scroll .row:has(>[role="tablist"]),#app .scroll [role="tablist"]{overflow-x:auto;flex-wrap:nowrap!important;scrollbar-width:none}
    #app .scroll [role="tablist"]::-webkit-scrollbar{display:none}
    #app .scroll [role="tablist"]>*{flex-shrink:0}
    /* iOS refuses to not zoom below 16px on focus */
    #app input,#app textarea,#app select{font-size:16px!important}
    /* long modals stay scrollable instead of overflowing the phone */
    #app [role="dialog"]{max-height:90dvh!important;overflow-y:auto!important}
    /* selects and dropdowns never exceed their trigger */
    #app [role="listbox"],#app [role="menu"]{max-width:calc(100vw - 24px)!important}
    /* forms stack: no two-up fields on a phone */
    #app [role="dialog"] [style*="grid-template-columns"]{grid-template-columns:minmax(0,1fr)!important}
    /* touch targets: every row and control reaches 44px */
    .nav-i,.subbtn{min-height:44px}
    .ico-btn{width:44px!important;height:44px!important;min-height:44px}
    .listrow,.tk-row{min-height:52px}
    /* tables scroll sideways instead of crushing columns */
    .uidt-wrap,.uidt-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
    table{min-width:640px}
    /* modals and drawers become full-height sheets */
    aside[role="dialog"]{width:100%!important;border-radius:0;padding-top:var(--safe-top,env(safe-area-inset-top,0px));padding-bottom:var(--safe-bottom,env(safe-area-inset-bottom,0px))}
    /* centred dialogs also clear the notch */
    div[role="alertdialog"],div[role="dialog"]{margin-top:var(--safe-top,0px)}
    /* sticky page header so the title survives scrolling */
    .top{position:sticky;top:0;z-index:40;height:auto;min-height:52px;align-items:flex-end;padding-top:calc(12px + var(--safe-top,env(safe-area-inset-top,0px)));padding-bottom:10px}
    /* agenda widget: hour labels get their own gutter instead of overlapping events */
    .wcard .agenda-h{position:static!important;background:transparent!important;padding:0!important}
    /* the copilot has no room as a column: it becomes a bubble + bottom sheet */
    .cp-rail{display:none}
    .cpfab{display:flex!important}
    .cp{position:fixed!important;left:0;right:0;bottom:0;top:auto!important;width:auto!important;height:82vh;
      z-index:52;border-left:none;border-top:1px solid var(--ui-border);
      border-radius:22px 22px 0 0;box-shadow:var(--ui-elev-3);animation:cpUp .24s var(--ui-ease);
      padding-bottom:var(--safe-bottom,env(safe-area-inset-bottom,0px))}
    .cpscrim{display:block}
    /* header keeps only what fits */
    .top .crumb,.top .crumbsep{display:none}
    /* native scrolling and touch behaviour */
    .scroll,.uidt-scroll,[style*="overflow:auto"]{-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}
    *{-webkit-tap-highlight-color:transparent}
    input,textarea,select{font-size:16px!important}   /* iOS não faz zoom ao focar */
    /* modais e painéis como folhas nativas, ancoradas ao fundo */
    aside[role="dialog"]{border-radius:var(--ui-r-lg) var(--ui-r-lg) 0 0;padding-bottom:max(0px,env(safe-area-inset-bottom))}
    .railcol{padding-bottom:max(10px,env(safe-area-inset-bottom))}
    /* botões e linhas respondem ao toque, não ao hover */
    .nav-i:active,.subbtn:active,.listrow:active,.tk-row:active{background:var(--ui-surface-2)}
    .ico-btn:active{transform:scale(.94)}
    /* nothing clips: rows wrap, long labels break, numbers stay whole */
    .wcard .row,.listrow,.tk-row{flex-wrap:wrap}
    .listrow>div,.wcard>div{min-width:0}
    .wcard span,.listrow span{overflow-wrap:anywhere}
    .wcard button,.listrow button{white-space:nowrap}
    .dash{flex-direction:column}
    .wgrid{grid-template-columns:1fr!important}
    .wcard{grid-column:1/-1!important;grid-row:auto!important;min-height:200px}
    .scroll{padding:12px!important}
    .top{padding:0 12px!important}
    .grid.g2,.grid.g3,.grid.g4{grid-template-columns:1fr!important}
    .agw-ev{flex-wrap:wrap}
    .agw-ev .row{flex-wrap:wrap;min-width:0}
  }
