/* Tablet presentation for the original r009 shell. No data or permission rules. */
body[data-ico-shell]{--button-height:44px;--radius:12px;-webkit-tap-highlight-color:transparent}
body[data-ico-shell] .topbar{background:linear-gradient(125deg,#252a2e,#11171c);border-bottom:1px solid #ffffff12}
body[data-ico-shell] .sidebar{background:linear-gradient(165deg,#1b2227,#11161a);scrollbar-width:thin;padding-bottom:44px}
body[data-ico-shell] .nav-item{border-radius:10px;transition:background 150ms,border-color 150ms,box-shadow 150ms}
body[data-ico-shell] .nav-item.active{background:linear-gradient(135deg,#28527a,#192e44);border-color:#589cdd;box-shadow:inset 0 0 16px #539eee16,0 0 0 1px #4b98e41a}
body[data-ico-shell] .icon{stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}
body[data-ico-shell] .card{box-shadow:0 4px 18px #172a4010}
body[data-ico-shell] :is(button,summary,select){transition:background-color 150ms,border-color 150ms,box-shadow 150ms,transform 130ms}
body[data-ico-shell] button:active:not(:disabled){transform:scale(.975)}
body[data-ico-shell] :is(input,select,textarea):focus{border-color:#5f9ddd;box-shadow:0 0 0 3px #4b98e41b}
body[data-ico-shell] summary{border-radius:8px;min-height:40px}
body[data-ico-shell] details[open]>summary{background:#519bdf12;color:#2164a5}
body[data-ico-shell] dialog[open]{animation:ico-dialog-enter 160ms ease-out}
body[data-ico-shell] .nav-item:focus-visible{outline-offset:-3px}
body[data-ico-shell] .library-page{padding:22px}
body[data-ico-shell] .library-detail{border-radius:14px;box-shadow:0 8px 25px #14213512}
body[data-ico-shell] .library-filter-row{grid-template-columns:1.4fr 1fr 1fr 1fr}
body[data-ico-shell] .library-grid button:focus-visible{outline-offset:-3px}
body[data-ico-shell] .library-grid>.empty{grid-column:1/-1}
/* Reserve a row for tools; the canvas retains its own coordinate space. */
body[data-ico-shell] .ico-touch-viewport{grid-template-rows:70px minmax(0,1fr);height:calc(100dvh - var(--header-height) - 32px)}
body[data-ico-shell] .ico-touch-viewport>.viewer-tools{position:relative;inset:auto;transform:none;grid-column:1;grid-row:1;display:flex;flex-wrap:nowrap;justify-content:flex-start;align-items:center;width:100%;max-width:100%;height:70px;margin:0;border:0;border-bottom:1px solid #ffffff15;border-radius:0;overflow-x:auto;overflow-y:hidden;padding:6px 10px;scrollbar-width:thin;background:#1c252d;backdrop-filter:none}
body[data-ico-shell] .ico-touch-viewport>.viewer-tools>button,body[data-ico-shell] .ico-touch-viewport>.viewer-tools>.ico-help-action{flex-shrink:0}
body[data-ico-shell] .ico-touch-viewport>.viewer-tools button:not(.ico-context-question){min-height:44px;min-width:54px;padding:6px 8px}
body[data-ico-shell] .ico-touch-viewport>.model-area{grid-column:1;grid-row:2}
body[data-ico-shell] .ico-touch-viewport>.viewer-side{grid-column:2;grid-row:1/-1}
/* Cutting uses the original range fields: transverse along the top, height at right. */
body[data-ico-shell] .cut-width{top:65px;bottom:auto;left:12px;right:66px;width:auto;transform:none;padding:0;border:0;background:transparent;box-shadow:none}
body[data-ico-shell] .cut-width>input{height:44px;margin:0;touch-action:none}
body[data-ico-shell] .cut-width>.ico-help-input-wrap{display:flex;width:100%}
body[data-ico-shell] .cut-width>.ico-help-input-wrap>input{width:0;flex:1;height:44px;touch-action:none}
body[data-ico-shell] .cut-height{top:123px;bottom:16px;right:4px;gap:0;min-height:80px;max-width:58px}
body[data-ico-shell] .cut-height input{width:44px;min-height:0;touch-action:none}
body[data-ico-shell] .cut-height>span{font-size:10px;white-space:nowrap}
body[data-ico-shell] .cut-height>span:last-child{display:none}
body[data-ico-shell] .cut-height .ico-help-label>span:last-of-type{display:none}
body[data-ico-shell] .model-area:has(.cut-overlay) .model-status{top:auto;bottom:68px;left:12px;max-width:calc(100% - 86px);padding:5px 9px;font-size:10px}
body[data-ico-shell] .ico-cut-options{position:absolute;left:12px;bottom:12px;max-width:calc(100% - 82px);max-height:calc(100% - 135px);overflow:auto;padding:0 10px;pointer-events:auto}
body[data-ico-shell] .ico-cut-options>summary{display:flex;align-items:center;min-height:44px;font-size:12px;color:#d7ebff;cursor:pointer}
body[data-ico-shell] .ico-cut-options .cut-caption{position:static;display:flex;flex-wrap:wrap;gap:8px;background:transparent;border:0;padding:0;border-radius:0;box-shadow:none;backdrop-filter:none}
body[data-ico-shell] .ico-cut-options>div:not(.cut-caption){display:flex;flex-wrap:wrap;align-items:center;gap:8px}
body[data-ico-shell] .ico-cut-options :is(button,select){min-height:44px;font-size:12px}
body[data-ico-shell] .ico-cut-options label{display:flex;align-items:center;gap:8px;min-height:44px;color:#d7ebff}
body[data-ico-shell] .ico-cut-options input[type=checkbox]{width:20px;height:20px;min-height:20px}
body[data-ico-shell] .ico-cut-options select{max-width:180px;color:#eaf4ff;background:#20364b;border-color:#4a6682}
@media(max-width:900px){
 body[data-ico-shell] .ico-touch-viewport{display:flex;flex-direction:column;height:auto}
 body[data-ico-shell] .ico-touch-viewport>.viewer-tools{flex-shrink:0}
 body[data-ico-shell] .ico-touch-viewport>.model-area{height:60dvh;min-height:320px;flex-shrink:0}
 body[data-ico-shell] .ico-touch-viewport>.viewer-side{max-height:none}
}
body[data-ico-shell] .color-dot{transition:outline-color 150ms,transform 130ms}
body[data-ico-shell] .color-dot[aria-pressed=true]{transform:scale(1.08)}
body[data-ico-shell] [data-action=like]{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;font-variant-numeric:tabular-nums}
body[data-ico-shell] [data-action=like][aria-pressed=true],body[data-ico-shell] [data-action=favorite][aria-pressed=true]{color:#df5578;border-color:#edb5c5;background:#fff3f6}
.ico-reaction-heart{width:22px;height:22px;flex:none;stroke:currentColor;stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round}
[data-action=like][aria-pressed=true] .ico-reaction-heart{fill:currentColor}
.ico-reaction-confirmed svg{animation:ico-heart-confirmed 450ms cubic-bezier(.18,.7,.3,1)}
.ico-reaction-confirmed{animation:ico-reaction-halo 480ms ease-out}
@keyframes ico-heart-confirmed{0%{transform:scale(.85)}35%{transform:scale(1.25) rotate(-8deg)}65%{transform:scale(.94) rotate(3deg)}100%{transform:scale(1)}}
@keyframes ico-reaction-halo{0%{box-shadow:0 0 0 0 #e75c7b40}100%{box-shadow:0 0 0 9px #e75c7b00}}
@keyframes ico-dialog-enter{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1024px) and (max-width:1399px){
  body[data-ico-shell]{--sidebar-width:96px;--header-height:76px}
  body[data-ico-shell] .library-workbench{grid-template-columns:minmax(0,1fr) 300px;gap:16px}
  body[data-ico-shell] .library-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
  body[data-ico-shell] .library-search-row{grid-template-columns:minmax(0,1fr) 180px}
  body[data-ico-shell] .library-page{padding:16px 18px}
  body[data-ico-shell] .library-page .page-heading{margin-bottom:12px}
  body[data-ico-shell] .library-page h1{font-size:23px;margin:0 0 4px}
  body[data-ico-shell] .catalog-access-note{padding:8px 12px;font-size:11px;margin-bottom:12px}
  body[data-ico-shell] .library-kind-tabs{margin-bottom:8px}
  body[data-ico-shell] .library-category-strip{margin:8px 0 12px}
  body[data-ico-shell] .library-category-strip button{min-height:64px;padding:8px 3px}
  body[data-ico-shell] .library-filter-row{margin-top:10px;gap:10px}
  body[data-ico-shell] .library-filter-tools{margin:8px 0}
  body[data-ico-shell] .library-card-info{padding:8px;gap:3px}
  body[data-ico-shell] .library-card-info strong{font-size:12px}
}
@media(min-width:1400px){body[data-ico-shell] .library-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:760px){
  body[data-ico-shell] .library-page{padding:16px 12px}
  body[data-ico-shell] .library-filter-row{grid-template-columns:repeat(2,minmax(0,1fr))}
  body[data-ico-shell] .dialog-body{padding-bottom:max(20px,env(safe-area-inset-bottom))}
  body[data-ico-shell] .sidebar .nav-item{min-height:48px}
  body[data-ico-shell] .local-environment-notice{font-size:10px;padding:5px 10px}
}
@media(prefers-reduced-motion:reduce){body[data-ico-shell] *,body[data-ico-shell] *::before,body[data-ico-shell] *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(pointer:coarse){
  body[data-ico-shell] :is(.editor-actions,.editor-global-footer,.viewer-dock,.library-kind-tabs,.cw-tabs,.report-formats) button{min-height:44px}
  body[data-ico-shell] :is(.icon-button,[data-action=favorite]){min-width:44px;min-height:44px}
  body[data-ico-shell] :is(input,select,textarea){font-size:16px}
}
/* Help can be enabled from the existing account menu. */
body[data-ico-shell]:not(.ico-help-enabled) :is(.ico-context-question,[data-help]){display:none!important}
[data-account] .avatar{position:relative;overflow:hidden}
[data-account] .avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
body.ico-model-focus #navigation,body.ico-model-focus #menu-toggle,body.ico-model-focus #project-context,body.ico-model-focus [data-project-responsible],body.ico-model-focus #identity>[data-action=messages]{display:none!important}
body.ico-model-focus #content{margin-left:0}
body.ico-model-focus .ico-touch-viewport{display:grid;height:calc(100dvh - var(--header-height) - 32px);min-height:0;grid-template-columns:minmax(0,1fr);grid-template-rows:0 minmax(0,1fr)}
body.ico-model-focus .ico-touch-viewport>.model-area{height:100%;min-height:0;grid-column:1;grid-row:2}
body.ico-model-focus .ico-touch-viewport>.viewer-tools{display:none}
body.ico-model-focus .ico-touch-viewport.ico-tools-open{padding-top:48px;grid-template-rows:70px minmax(0,1fr)}
body.ico-model-focus .ico-tools-open>.viewer-tools{display:flex}
body.ico-model-focus .ico-touch-viewport>.viewer-side{display:none}
body.ico-model-focus .ico-touch-viewport.ico-panel-open{grid-template-columns:minmax(0,1fr) 360px}
body.ico-model-focus .ico-panel-open>.viewer-side{display:block;grid-row:1/-1;max-height:100%;overflow:auto}
body.ico-model-focus .mobile-panel-toggle{display:none!important}
body.ico-model-focus .ico-touch-viewport:not(.ico-tools-open) :is(.viewer-top,.cut-overlay,.selection-label,.occlusion-overlay,.layer-overlay,.measure-context,.measure-live,.measure-target){display:none}
body.ico-model-focus .model-status{pointer-events:none;font-size:10px;padding:5px 8px;top:65px}
body.ico-model-focus .model-status.ready{display:none}
.ico-focus-actions{position:absolute;top:4px;left:10px;right:10px;display:flex;justify-content:space-between;pointer-events:none;z-index:24}
.ico-focus-actions button{pointer-events:auto;display:grid;place-items:center;width:44px;height:44px;padding:9px;background:#1c252de8;color:#ddebfa;border-color:#6a80944d}
.ico-focus-actions [aria-expanded=true] svg{transform:rotate(180deg)}
.ico-close-model-panel{display:flex;align-items:center;gap:8px;position:sticky;top:0;z-index:3;width:100%;margin:0 0 16px;background:#edf4fb;min-height:44px}
body.ico-model-focus .ico-panel-open .ico-focus-actions{right:370px}
@media(max-width:900px){
 body.ico-model-focus .ico-touch-viewport.ico-panel-open{grid-template-columns:minmax(0,1fr)}
 body.ico-model-focus .ico-panel-open>.viewer-side{position:absolute;grid-column:1;grid-row:1/-1;bottom:0;left:0;right:0;min-width:0;max-width:100%;max-height:65%;z-index:25;padding-bottom:max(20px,env(safe-area-inset-bottom));border-radius:18px 18px 0 0;box-shadow:0 -8px 35px #0004}
 body.ico-model-focus .ico-panel-open .ico-focus-actions{right:10px}
}
/* Legacy perimeter styling; the reserved tool rows below supersede positioning. */
body.ico-model-focus .ico-touch-viewport,body.ico-model-focus .ico-touch-viewport.ico-tools-open{padding:0;grid-template-rows:minmax(0,1fr);overflow:hidden}
body.ico-model-focus .ico-touch-viewport>.model-area{grid-row:1}
body.ico-model-focus .ico-touch-viewport>.viewer-tools{position:absolute;grid-row:auto;z-index:23;top:6px;left:66px;right:auto;width:max-content;max-width:calc(100% - 132px);height:auto;max-height:66px;padding:4px;gap:2px;background:#18232ce8;border:1px solid #66819a44;border-radius:13px;box-shadow:0 4px 14px #0002}
body.ico-model-focus .ico-touch-viewport>.viewer-tools button:not(.ico-context-question){font-size:10px;min-width:50px;min-height:48px;padding:4px 7px}
body.ico-model-focus .ico-touch-viewport>.viewer-tools .icon{width:21px;height:21px}
body.ico-model-focus .ico-panel-open>.viewer-tools{right:426px;max-width:calc(100% - 492px)}
body.ico-model-focus .viewer-top{top:76px;left:64px;right:64px}
body.ico-model-focus .cut-width,body.ico-model-focus .cut-height{display:none}
body.ico-model-focus .ico-cut-options{left:64px;bottom:65px}
.ico-edge-cuts{position:absolute;inset:0;pointer-events:none;z-index:12;color:#8bc9ff;font-size:10px}
.ico-edge-cuts input{accent-color:#369cff;min-height:0;padding:0;border:0;background:transparent;cursor:grab;touch-action:none;pointer-events:auto}
.ico-height-rail{position:absolute;top:90px;bottom:85px;left:5px;width:42px;display:flex;gap:0;align-items:center;pointer-events:auto}
.ico-height-rail>span{writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap;font-size:10px}
.ico-height-rail input{writing-mode:vertical-lr;direction:rtl;width:26px;height:100%}
.ico-transverse-rail{position:absolute;left:66px;bottom:max(8px,env(safe-area-inset-bottom));right:70px;max-width:520px;text-align:center}
.ico-transverse-rail>span{display:block;margin-bottom:-2px;letter-spacing:.3px}
.ico-cut-range{position:relative;height:40px;pointer-events:auto;touch-action:none;cursor:ew-resize}
.ico-cut-range:before{content:'';position:absolute;left:0;right:0;top:19px;height:3px;border-radius:3px;background:#369cff}
.ico-cut-range input{position:absolute;inset:0;margin:0;width:100%;height:40px;pointer-events:none;appearance:none}
.ico-cut-range input::-webkit-slider-thumb{appearance:none;width:19px;height:19px;border-radius:50%;background:#49aaff;border:2px solid #c7e7ff;box-shadow:0 1px 6px #0005;pointer-events:auto}
.ico-cut-range input::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#49aaff;border:2px solid #c7e7ff;pointer-events:auto}
.ico-cut-range input::-moz-range-track{background:transparent}
.ico-cut-range input:focus-visible{outline:2px solid #a8d8ff;outline-offset:2px}
body[data-ico-shell] [data-action=manual-progress]{display:block;margin-top:14px;max-width:100%}
.stored-texture{display:flex;gap:12px;align-items:center;font-size:12px;background:#eff5fb;border-radius:10px;padding:10px}
.stored-texture img{width:64px;height:64px;object-fit:cover;border-radius:8px}
body[data-ico-shell] .cw-log-layout>*{min-width:0;max-width:100%}
body[data-ico-shell] .cw-log-model .workspace{width:100%;height:350px;min-height:0;display:block;position:relative;overflow:hidden}
body[data-ico-shell] .cw-log-model .model-area{width:100%;height:100%;min-width:0;position:relative;display:grid;grid-template-rows:minmax(0,1fr) 58px}
body[data-ico-shell] .cw-log-model canvas{width:100%;height:100%;max-width:100%}
body[data-ico-shell] .cw-log-model .mobile-panel-toggle{display:none}
body[data-ico-shell] .cw-log-model .viewer-tools{position:static;grid-row:2;transform:none;display:flex;flex-wrap:nowrap;flex-direction:row;width:100%;max-width:100%;height:58px;min-height:0;overflow-x:auto;margin:0;padding:3px;border-radius:0;justify-content:flex-start}
body[data-ico-shell] .cw-log-model .viewer-tools button{flex:0 0 auto;min-width:46px;font-size:9px;padding:3px;min-height:44px}
body[data-ico-shell] .cw-log-model .viewer-tools .icon{width:18px;height:18px}
body.ico-model-focus .ico-focus-actions button{background:#1a2732;color:#d9eaf6;border-color:#53728a66}
@media(max-width:1150px){body[data-ico-shell] .cw-log-model{display:grid;grid-column:1/-1}body[data-ico-shell] .cw-log-model .workspace{height:240px}body[data-ico-shell] .cw-log-model>.cw-card{display:none}}
@media(max-width:900px){body.ico-model-focus .ico-panel-open>.viewer-tools{right:66px;max-width:calc(100% - 132px)}}
@media(orientation:portrait){
 body.ico-model-focus .ico-touch-viewport>.viewer-tools,body.ico-model-focus .ico-panel-open>.viewer-tools{top:60px;left:auto;right:8px;bottom:76px;width:60px;height:max-content;max-height:calc(100% - 145px);max-width:60px;flex-direction:column;overflow-y:auto;overflow-x:hidden}
 body.ico-model-focus .ico-touch-viewport>.viewer-tools>button,body.ico-model-focus .ico-touch-viewport>.viewer-tools>.ico-help-action{width:100%}
 body.ico-model-focus .ico-touch-viewport>.viewer-tools button:not(.ico-context-question){width:100%;font-size:9px;white-space:normal;line-height:1.2;min-height:48px;padding:5px 2px}
 body.ico-model-focus .viewer-top{top:8px;left:60px;right:60px}.viewer-top .actions{gap:2px}
 body.ico-model-focus .viewer-top .actions button{padding:6px;font-size:10px;min-height:40px}
 body.ico-model-focus .viewer-top>.floating:last-child{display:none}
 .ico-height-rail{top:70px;bottom:85px}.ico-transverse-rail{left:50px;right:75px}
}
/* Public discovery: compact rankings and larger project covers. */
.ico-featured-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;color:#59708a;font-size:13px}
.ico-ranking-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:24px}
.ico-ranking-card{min-width:0;background:#fff;border:1px solid #dce5ef;border-radius:16px;padding:18px;box-shadow:0 5px 20px #17334c05}
.ico-ranking-card h2{font-size:16px;margin:0 0 14px;line-height:1.35}
.ico-ranking-card ol{list-style:none;margin:0;padding:0}
.ico-ranking-card li+li{border-top:1px solid #edf1f5}
.ico-ranking-card li button{width:100%;display:flex;align-items:center;gap:10px;text-align:left;border:0;background:transparent;border-radius:9px;padding:10px 2px;min-height:62px}
.ico-ranking-card li button:hover{background:#f0f6ff}
.ico-ranking-card .portrait{width:40px;height:40px;min-width:40px;border-radius:50%;object-fit:cover;font-size:16px;margin:0}
.ico-ranking-place{font-size:12px;color:#7c8da3;width:12px;flex:none}
.ico-ranking-person{display:flex;flex:1;min-width:0;flex-direction:column;gap:3px}
.ico-ranking-person strong{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ico-ranking-person small{font-size:11px;line-height:1.3;color:#70839a}
.ico-ranking-score{font-size:11px;color:#986c18;white-space:nowrap}
.ico-ranking-empty{font-size:13px;color:#74859a;padding:12px 0;margin:0}
.ico-featured-projects{margin:0 0 28px}.ico-featured-projects h2{font-size:19px;margin-bottom:14px}
.ico-project-spotlights{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.ico-project-spotlight{display:block;min-width:0;border:1px solid #dce5ef;border-radius:14px;overflow:hidden;background:#fff;text-decoration:none;color:inherit;transition:transform .16s,box-shadow .16s}
.ico-project-spotlight:hover{transform:translateY(-2px);box-shadow:0 8px 20px #14283c12}
.ico-project-spotlight>img,.ico-project-no-cover{width:100%;aspect-ratio:16/10;object-fit:cover;background:#e4edf4}
.ico-project-no-cover{display:grid;place-items:center;color:#6885a0}
.ico-project-spotlight>span{display:flex;flex-direction:column;gap:5px;padding:13px}
.ico-project-spotlight strong{font-size:14px}.ico-project-spotlight small{font-size:12px;color:#70839a;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
@media(max-width:1100px){.ico-ranking-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ico-project-spotlights{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.ico-ranking-grid{grid-template-columns:1fr;gap:12px}.ico-ranking-card{padding:15px}.ico-ranking-card h2{font-size:15px}.ico-project-spotlights{grid-template-columns:1fr}.ico-featured-heading{align-items:flex-start}}
@media(prefers-reduced-motion:reduce){.ico-project-spotlight{transition:none}}
/* A selected material shares the phone viewport with the model instead of covering it. */
@media(max-width:900px) and (orientation:portrait){
 body.ico-model-focus .ico-touch-viewport.ico-panel-open{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,46%) minmax(0,1fr)}
 body.ico-model-focus .ico-panel-open>.viewer-side{position:relative;grid-row:2;grid-column:1;height:100%;max-height:100%;margin:0;min-height:0;inset:auto;padding:12px 16px}
 body.ico-model-focus .ico-panel-open>.viewer-tools{max-height:calc(46% - 75px)}
 body.ico-model-focus .ico-panel-open .viewer-samples{bottom:65px;left:52px;right:12px;gap:5px;justify-content:flex-start;overflow-x:auto}
 body.ico-model-focus .ico-panel-open .viewer-samples .sample{min-width:62px;max-width:82px;font-size:9px;padding:5px}
 body.ico-model-focus .ico-panel-open .viewer-samples .swatch{width:40px;height:28px}
 body.ico-model-focus .ico-panel-open .ico-height-rail{top:60px;bottom:60px}
 body.ico-model-focus .ico-panel-open .ico-close-model-panel{margin-bottom:12px}
}
@media(max-width:900px) and (orientation:landscape){
 body.ico-model-focus .ico-touch-viewport.ico-panel-open{grid-template-columns:minmax(0,1fr) 300px}
 body.ico-model-focus .ico-panel-open>.viewer-side{position:relative;grid-column:2;grid-row:1;height:100%;max-height:100%;inset:auto;margin:0;padding:12px}
 body.ico-model-focus .ico-panel-open .ico-focus-actions{right:310px}
 body.ico-model-focus .ico-panel-open>.viewer-tools{max-width:calc(100% - 432px)}
}

.ico-ranking-header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:14px}.ico-ranking-header h2{margin:0;flex:1;min-width:125px}.ico-ranking-header select{width:150px;max-width:100%;min-height:44px;padding:7px 24px 7px 9px;font-size:11px;background-color:#f5f8fc;border-radius:9px}.library-category-strip img.category-art{object-fit:contain}
/* Compact tools share the upper edge with Back and Collapse, outside the canvas. */
body[data-ico-shell].ico-model-focus .ico-touch-viewport,
body[data-ico-shell].ico-model-focus .ico-touch-viewport.ico-tools-open{grid-template-rows:56px minmax(0,1fr);padding:0;overflow:hidden}
body[data-ico-shell].ico-model-focus .ico-touch-viewport>.ico-focus-actions{position:relative;inset:auto;grid-column:1;grid-row:1;align-self:center;margin:0 10px;width:auto}
body[data-ico-shell].ico-model-focus .ico-touch-viewport>.viewer-tools{position:relative;inset:auto;grid-column:1;grid-row:1;align-self:center;transform:none;flex-direction:row;flex-wrap:nowrap;width:calc(100% - 124px);max-width:calc(100% - 124px);height:56px;max-height:56px;overflow-x:auto;overflow-y:hidden;gap:5px;padding:4px 0;margin:0 62px;border:0;border-radius:0;box-shadow:none;background:transparent;min-width:0;scrollbar-width:thin;scrollbar-color:#607786 transparent;touch-action:pan-x}
body[data-ico-shell].ico-model-focus .ico-touch-viewport>.viewer-tools>button,
body[data-ico-shell].ico-model-focus .ico-touch-viewport>.viewer-tools>.ico-help-action{width:auto;flex:0 0 auto}
body[data-ico-shell].ico-model-focus .ico-touch-viewport>.viewer-tools button:not(.ico-context-question){display:grid;place-items:center;width:44px;min-width:44px;height:44px;min-height:44px;padding:10px;border-radius:50%;line-height:1}
body[data-ico-shell].ico-model-focus .viewer-tools .viewer-tool-label{display:none}
body[data-ico-shell].ico-model-focus .ico-touch-viewport>.viewer-tools .icon{width:22px;height:22px;margin:0;flex:none}
body[data-ico-shell].ico-model-focus .ico-touch-viewport>.viewer-tools::-webkit-scrollbar{height:3px}
body[data-ico-shell].ico-model-focus .ico-touch-viewport>.viewer-tools::-webkit-scrollbar-thumb{background:#607786;border-radius:3px}
body[data-ico-shell].ico-model-focus .ico-touch-viewport>.model-area,
body[data-ico-shell].ico-model-focus .ico-tools-open>.model-area{grid-column:1;grid-row:2;height:100%;min-height:0}
body[data-ico-shell].ico-model-focus .ico-touch-viewport>.viewer-side{grid-row:1/-1}
body[data-ico-shell].ico-model-focus .viewer-top{top:12px;left:55px;right:55px}
body[data-ico-shell] .editor-group-members>span{display:flex;align-items:center;justify-content:space-between;gap:6px}
body[data-ico-shell] .editor-group-members button{font-size:10px;min-height:28px;padding:3px 7px}
body[data-ico-shell] .editor-group-picker>label>span{min-width:0;overflow-wrap:anywhere}
body[data-ico-shell] .editor-group-picker>label>span small{display:block;margin:0}

@media(max-width:900px) and (orientation:portrait){
 body[data-ico-shell].ico-model-focus .ico-touch-viewport.ico-panel-open{grid-template-columns:minmax(0,1fr);grid-template-rows:56px minmax(0,46fr) minmax(0,54fr)}
 body[data-ico-shell].ico-model-focus .ico-touch-viewport.ico-panel-open.ico-tools-open{grid-template-rows:56px minmax(0,46fr) minmax(0,54fr)}
 body[data-ico-shell].ico-model-focus .ico-panel-open>.viewer-side{position:relative;inset:auto;grid-column:1;grid-row:3;height:100%;min-height:0;max-height:100%;margin:0}
 body[data-ico-shell].ico-model-focus .ico-panel-open.ico-tools-open>.viewer-side{grid-row:3}
}
/* A short landscape canvas keeps an unobstructed center between its controls. */
@media(max-height:520px) and (orientation:landscape){
 body[data-ico-shell].ico-model-focus .viewer-top{top:5px;left:58px;right:8px;gap:4px}
 body[data-ico-shell].ico-model-focus .viewer-top>.floating{padding:3px 5px;min-width:0;max-width:100%;width:auto}
 body[data-ico-shell].ico-model-focus .viewer-top>.floating:last-child{display:flex;gap:3px;flex-wrap:nowrap}
 body[data-ico-shell].ico-model-focus .viewer-top .actions{flex-wrap:nowrap;gap:2px}
 body[data-ico-shell].ico-model-focus .viewer-top button{min-height:30px;padding:4px 7px;font-size:10px;white-space:nowrap}
 body[data-ico-shell].ico-model-focus .ico-height-rail{top:42px;bottom:45px;padding:3px 5px}
 body[data-ico-shell].ico-model-focus .ico-transverse-rail{left:60px;right:12px;bottom:4px;max-width:360px;padding:2px 12px}
 body[data-ico-shell].ico-model-focus .ico-transverse-rail>span{font-size:8px;line-height:10px;margin:0}
 body[data-ico-shell].ico-model-focus .ico-cut-range,body[data-ico-shell].ico-model-focus .ico-cut-range input{height:30px}
 body[data-ico-shell].ico-model-focus .ico-cut-range:before{top:14px}
}

/* Cut handles: 28px visible circles, with a 44px touch target. */
body[data-ico-shell] .ico-height-rail{left:2px;width:62px;gap:2px;bottom:78px}
body[data-ico-shell] .ico-height-rail input{appearance:none;flex:0 0 44px;width:44px;margin:0;background:linear-gradient(#369cff,#369cff) center / 4px calc(100% - 44px) no-repeat}
body[data-ico-shell] .ico-height-rail input::-webkit-slider-runnable-track{width:44px;height:100%;background:transparent;border:0}
body[data-ico-shell] .ico-height-rail input::-moz-range-track{background:transparent;border:0}
body[data-ico-shell].ico-model-focus .ico-transverse-rail{left:70px;right:14px;bottom:max(8px,env(safe-area-inset-bottom));padding:0;max-width:520px}
body[data-ico-shell].ico-model-focus .ico-transverse-rail>span{margin:0;font-size:10px;line-height:14px}
body[data-ico-shell].ico-model-focus .ico-cut-range,body[data-ico-shell].ico-model-focus .ico-cut-range input{height:44px}
body[data-ico-shell] .ico-cut-range:before{left:22px;right:22px;top:21px}
body[data-ico-shell].ico-model-focus .ico-cut-range:before{top:21px}
body[data-ico-shell] .ico-edge-cuts input::-webkit-slider-thumb{appearance:none;box-sizing:border-box;width:44px;height:44px;margin:0;border:8px solid transparent;border-radius:50%;background:#64b9ff;background-clip:padding-box;box-shadow:none;filter:drop-shadow(0 1px 2px #0008);pointer-events:auto;cursor:grab}
body[data-ico-shell] .ico-edge-cuts input::-moz-range-thumb{box-sizing:border-box;width:44px;height:44px;border:8px solid transparent;border-radius:50%;background:#64b9ff;background-clip:padding-box;box-shadow:none;filter:drop-shadow(0 1px 2px #0008);pointer-events:auto;cursor:grab}
body[data-ico-shell] .ico-edge-cuts input:focus-visible{outline:2px solid #a8d8ff;outline-offset:0}
/* Walking controls share a row ABOVE the transverse rail. The height rail
   stays to their left, and recent materials scroll through the center. */
body[data-ico-shell] .model-area.is-walking{--walk-bottom:calc(78px + env(safe-area-inset-bottom))}
body[data-ico-shell] .model-area.is-walking .walk-pad{left:70px;bottom:var(--walk-bottom);width:88px;height:88px}
body[data-ico-shell] .model-area.is-walking .walk-knob{left:22px;top:22px}
body[data-ico-shell] .model-area.is-walking .walk-height{right:10px;bottom:var(--walk-bottom);grid-template-columns:repeat(2,44px);gap:6px}
body[data-ico-shell] .model-area.is-walking .walk-height button{width:44px;height:44px;min-height:44px;padding:8px;touch-action:none}
body[data-ico-shell].ico-model-focus .model-area.is-walking .ico-height-rail{top:54px;bottom:78px;padding:0}
body[data-ico-shell].ico-model-focus .model-area.is-walking .viewer-samples{left:168px;right:114px;bottom:var(--walk-bottom);display:flex;gap:6px;justify-content:flex-start;align-items:stretch;overflow-x:auto;overflow-y:hidden;max-height:94px;padding:2px;scrollbar-width:thin;touch-action:pan-x}
body[data-ico-shell].ico-model-focus .model-area.is-walking .viewer-samples:empty{display:none}
body[data-ico-shell].ico-model-focus .model-area.is-walking .viewer-samples .sample{flex:0 0 64px;min-width:64px;max-width:84px;min-height:64px;padding:6px;border-radius:12px;font-size:9px;line-height:1.2;overflow-wrap:anywhere}
body[data-ico-shell].ico-model-focus .model-area.is-walking .viewer-samples .swatch{width:44px;height:32px;margin:0 auto 4px;border-radius:8px}
@media(min-width:600px){
 body[data-ico-shell].ico-model-focus .model-area.is-walking .viewer-samples{justify-content:safe center}
 body[data-ico-shell].ico-model-focus .model-area.is-walking .viewer-samples .sample{flex-basis:80px}
}
@media(max-width:350px){
 body[data-ico-shell] .model-area.is-walking .walk-pad{left:62px;width:76px;height:76px}
 body[data-ico-shell] .model-area.is-walking .walk-knob{left:16px;top:16px}
 body[data-ico-shell].ico-model-focus .model-area.is-walking .viewer-samples{left:144px;right:108px}
 body[data-ico-shell] .model-area.is-walking .walk-height{right:6px}
}
@media(max-width:900px) and (orientation:portrait){
 body[data-ico-shell].ico-model-focus .ico-touch-viewport.ico-panel-open:has(.model-area.is-walking){grid-template-rows:56px minmax(240px,1fr) minmax(0,1fr)}
 body[data-ico-shell].ico-model-focus .ico-touch-viewport.ico-panel-open.ico-tools-open:has(.model-area.is-walking){grid-template-rows:56px minmax(240px,1fr) minmax(0,1fr)}
}
/* The layer chooser uses the same space as edge cuts; closing it restores the rails. */
body[data-ico-shell] .model-area:has(.layer-overlay) .ico-edge-cuts{visibility:hidden}
body[data-ico-shell] .layer-overlay .actions{display:grid;grid-template-columns:1fr;gap:7px;margin:12px 0}
body[data-ico-shell] .layer-overlay .actions button{background:#354b5c;color:#f1f6fa;border:1px solid #668296;min-height:44px;padding:9px 12px;white-space:normal;text-align:left}
body[data-ico-shell] .layer-overlay .actions button:hover{background:#426c8b;border-color:#78bbec}
.pro-feature-grants{display:grid;gap:12px;margin:10px 0 18px}
body[data-ico-shell] .pro-feature-option{display:grid;grid-template-columns:24px minmax(0,1fr);gap:14px;align-items:center;padding:16px;border:1px solid #dbe4eb;border-radius:16px;background:#f7f9fb;cursor:pointer}
body[data-ico-shell] .pro-feature-option:has(input:checked){background:#edf5ff;border-color:#88b7ee}
body[data-ico-shell] .pro-feature-option input{width:22px;height:22px;min-height:22px;margin:0;accent-color:#176be3}
.pro-feature-option strong{font-size:15px;display:block;margin-bottom:5px}
.pro-feature-option small{display:block;line-height:1.55}
/* One coordinated review: explicit sources, live transforms, deliberate commit. */
.coordination-dialog{max-height:94dvh!important;max-width:calc(100vw - 20px)!important}
.coordination-dialog .dialog-body{padding:24px}
.coordination-dialog .dialog-title{margin-bottom:12px}
.coordination-intro{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.coordination-eyebrow{font-size:10px;letter-spacing:2px;color:#657f8a}
.coordination-intro p{margin:6px 0 0;font-size:14px}
.coordination-layout{display:grid;grid-template-columns:330px minmax(0,1fr);gap:22px;align-items:start}
.coordination-settings,.coordination-visual{min-width:0}
.coordination-files{display:grid;gap:10px}
.coordination-file{padding:14px;border:1px solid #dce3e7;border-radius:16px;background:#fafbf9;display:grid;grid-template-columns:1fr auto;gap:9px}
.coordination-file.selected{border-color:#1775d6;box-shadow:0 0 0 2px #1975d611;background:#f4f8ff}
.coordination-file header{display:flex;gap:8px;align-items:center;grid-column:1/-1}
.coordination-file header small{margin-left:auto;font-size:11px}
.coordination-dot{width:10px;height:10px;flex:none;border-radius:50%;background:#529ddf}
.coordination-dot.structure{background:#bd8448}
.coordination-file p{grid-column:1/-1;margin:0;overflow-wrap:anywhere;font-size:12px}
.coordination-file button,.coordination-upload{min-height:44px;font-size:12px;padding:10px;border-radius:11px}
.coordination-upload{position:relative;display:flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;background:#e6eff9;color:#124575;border:1px solid #d0e1f2;overflow:hidden}
.coordination-upload input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;min-width:0}
.coordination-upload:focus-within{outline:2px solid #1673d6;outline-offset:2px}
.coordination-upload .icon{width:16px;height:16px}
.coordination-transform{margin-top:18px;padding:16px;background:#f6f7f5;border:1px solid #e2e7e5;border-radius:16px}
.coordination-transform h3{margin:0;font-size:16px}
.coordination-hint{font-size:12px;line-height:1.5;margin:7px 0 12px}
.coordination-coordinates{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.coordination-coordinates.two{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:12px}
.coordination-coordinates label{font-size:11px;min-width:0;display:block}
.coordination-coordinates input{width:100%;min-width:0;padding:10px 7px;font-size:15px;margin-top:5px;background:white}
.coordination-coordinates .help{width:19px;height:19px;min-height:19px;padding:0;vertical-align:middle;font-size:10px}
.coordination-reset{width:100%;font-size:12px;margin:12px 0;min-height:44px}
.coordination-transform>small{font-size:11px;line-height:1.5;display:block}
.coordination-preview{height:440px;position:relative;border-radius:20px;background:radial-gradient(ellipse at 50% 35%,#34464f,#19272e);overflow:hidden;border:1px solid #34464f}
.coordination-preview canvas{width:100%;height:100%;display:block;touch-action:none}
.coordination-preview [data-preview-status]{position:absolute;bottom:10px;left:12px;right:12px;margin:0;padding:8px 12px;border-radius:8px;color:#eef6f9;background:#17272bd9;font-size:12px;pointer-events:none}
.coordination-preview [data-preview-status].ready{display:none}
.coordination-preview [data-preview-status]:has(.model-load-error){pointer-events:auto}
.coordination-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;padding:24px;text-align:center;color:#dde9ed;pointer-events:none}
.coordination-empty .icon{width:56px;height:56px;color:#8da8b4}
.coordination-empty span{font-size:13px}
.coordination [hidden]{display:none!important}
.coordination-view-tools{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-top:10px}
.coordination-view-tools>span{font-size:12px;color:#68828d;margin-right:6px}
.coordination-view-tools button{min-height:44px;padding:10px 12px;font-size:12px;border-radius:10px}
.coordination-segment{display:flex;gap:3px;padding:3px;background:#e9eeec;border-radius:13px;flex:1}
.coordination-segment button{flex:1;background:transparent;border-color:transparent}
.coordination-segment button.active{background:#243943;color:white;box-shadow:0 2px 6px #24394315}
.coordination-tip{display:flex;gap:8px;align-items:start;font-size:12px;line-height:1.6;margin:13px 0}
.coordination-tip .icon{flex:none;margin-top:3px}
.coordination-footer{display:grid;grid-template-columns:1fr 1.4fr;gap:20px;padding-top:17px;margin-top:18px;border-top:1px solid #e0e7e6;align-items:center}
.coordination-footer>p{font-size:12px;line-height:1.5;margin:0}
.coordination-footer .error{color:#a02932}
.coordination-consent{display:flex;align-items:flex-start;gap:10px;font-size:12px;line-height:1.6;margin-bottom:12px}
.coordination-consent input{width:20px;height:20px;flex:none;margin:0}
.coordination-review{background:#f0f6ff;border:1px solid #cadbf0;padding:16px;border-radius:14px;font-size:13px}
.coordination-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0}
.coordination-metrics span{font-size:11px;color:#55717f}
.coordination-metrics b{display:block;font-size:22px;color:#203a48}
.coordination-review details{margin:10px 0}
.coordination-review details>div{max-height:160px;overflow:auto}
.coordination-review small{font-size:11px;line-height:1.5}
.coordination-entry-files{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}
.coordination-entry-files>div{background:#f2f6fa;border-radius:12px;padding:12px;min-width:0}
.coordination-entry-files small{display:block;margin-top:7px;overflow-wrap:anywhere}
@media(max-width:760px){
 .coordination-dialog .dialog-body{padding:16px}
 .coordination-dialog .dialog-title h2{font-size:19px}
 .coordination-layout{grid-template-columns:1fr;gap:16px}
 .coordination-visual{grid-row:1}
 .coordination-preview{height:290px}
 .coordination-intro{align-items:flex-start}.coordination-intro p{font-size:12px}
 .coordination-intro .badge{font-size:10px;white-space:nowrap}
 .coordination-files{grid-template-columns:1fr}
 .coordination-footer{grid-template-columns:1fr;gap:12px}
 .coordination-footer .actions{display:grid;grid-template-columns:1fr 1.6fr}
 .coordination-footer button{font-size:12px;padding:11px 8px;min-height:44px}
 .coordination-view-tools{gap:5px}.coordination-view-tools button{font-size:11px;padding:9px 8px}
 .coordination-coordinates label{font-size:12px}
 .coordination-entry-files{grid-template-columns:1fr}
}

.coordination-ghost{display:flex;align-items:center;gap:8px;font-size:12px;margin:10px 0}
.coordination-ghost input{width:20px;height:20px;margin:0;flex:none}
@media(min-width:761px){
 .coordination-dialog .dialog-body{padding:20px}
 .coordination-dialog .dialog-title{margin-bottom:10px}
 .coordination-intro{margin-bottom:14px}
 .coordination-layout{max-height:calc(94dvh - 232px);overflow:hidden}
 .coordination-settings,.coordination-visual{height:100%;max-height:calc(94dvh - 232px);overflow:auto;scrollbar-width:thin;padding-right:5px}
 .coordination-preview{height:clamp(220px,calc(94dvh - 405px),440px)}
 .coordination-footer{margin-top:14px;padding-top:12px}
 .coordination-footer .actions button{font-size:13px;min-height:44px;padding:11px 15px}
 .coordination-tip{margin:9px 0 0}
}
