#cain-desk{--desk-ink:#262927;--desk-soft:#646a64;--desk-paper:#eeeae2;position:relative;min-height:800px;height:calc(100svh - 88px);max-height:1200px;overflow:hidden;background:var(--desk-paper);color:var(--desk-ink);isolation:isolate;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}#cain-desk *{box-sizing:border-box}#cain-desk button{font:inherit;cursor:pointer}#cain-desk button:focus-visible,#cain-desk a:focus-visible,#cain-desk canvas:focus-visible{outline:3px solid #417bdb;outline-offset:5px}#cain-desk [hidden]{display:none!important}.desk-stage{position:absolute;inset:0;z-index:0}.desk-stage canvas{display:block;width:100%;height:100%;touch-action:pan-y;outline:none}.desk-top{position:absolute;top:38px;left:48px;right:48px;display:flex;justify-content:space-between;align-items:center;z-index:3;pointer-events:none}.desk-index{font-size:11px;letter-spacing:.15em;font-weight:550}.desk-edition{font-size:11px;color:#6e726c;letter-spacing:.12em}.desk-intro{position:absolute;top:100px;left:48px;width:380px;z-index:2;pointer-events:none;transition:opacity .45s,transform .6s}.desk-intro h1{font-size:clamp(32px,3.6vw,54px);letter-spacing:-.065em;line-height:1.14;font-weight:550;margin:0 0 20px;text-wrap:balance}.desk-intro p{max-width:265px;font-size:14px;line-height:1.8;color:var(--desk-soft);margin:0}.desk-intro .desk-tiny{margin-top:24px;font-size:10px;letter-spacing:.11em;color:#7b8078}.desk-state-label{position:absolute;right:48px;top:105px;text-align:right;z-index:2;font-size:11px;letter-spacing:.12em;color:#686f66}.desk-state-label strong{display:block;margin-top:8px;font-size:13px;color:#33392f;letter-spacing:.06em;font-weight:500}.desk-toolbar{position:absolute;bottom:34px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:9px;padding:7px;border:1px solid #fff9;border-radius:999px;background:#fcfcf1d9;box-shadow:0 10px 45px #34362616;backdrop-filter:blur(20px);z-index:6;white-space:nowrap}.desk-toolbar button,.desk-close{border:0;border-radius:999px;min-height:44px;padding:0 20px;background:transparent;color:#454b41;font-size:12px;font-weight:500;transition:background .2s,color .2s,transform .2s}.desk-toolbar button:hover,.desk-close:hover{background:#dedfd2}.desk-toolbar button.desk-primary{background:#30392e;color:#fff;padding:0 25px}.desk-toolbar button.desk-primary:hover{background:#465443;transform:translateY(-1px)}.desk-toolbar .desk-separator{width:1px;height:20px;background:#d1d6c9}.desk-hint{position:absolute;bottom:112px;left:0;right:0;text-align:center;z-index:3;font-size:11px;letter-spacing:.04em;color:#5e655a;pointer-events:none}.desk-bottom-note{position:absolute;bottom:45px;left:48px;font-size:10px;line-height:1.6;color:#74786e;letter-spacing:.06em;z-index:2}.desk-bottom-id{position:absolute;bottom:45px;right:48px;font-size:10px;color:#74786e;letter-spacing:.12em;z-index:2}.desk-photo-tray{position:absolute;z-index:4;left:50%;bottom:132px;transform:translate(-50%,35px);display:flex;gap:18px;opacity:0;pointer-events:none;transition:opacity .6s,transform .8s cubic-bezier(.16,1,.3,1)}.desk-photo-tray.is-open{opacity:1;transform:translate(-50%,0);pointer-events:auto}.desk-print{border:0;padding:8px 8px 22px;background:#fafaf1;box-shadow:0 6px 14px #1723151c,0 22px 40px #17231514;width:144px;transform:rotate(var(--turn));transition:transform .3s,box-shadow .3s;text-align:left;position:relative}.desk-print:hover,.desk-print:focus-visible{transform:translateY(-10px) rotate(0deg);box-shadow:0 14px 24px #17231524}.desk-print img{display:block;width:100%;height:88px;object-fit:cover}.desk-print span{position:absolute;bottom:7px;left:9px;font-size:8px;letter-spacing:.09em;color:#60645a}.desk-print b{position:absolute;bottom:7px;right:8px;font-size:8px;font-weight:400;color:#818679}.desk-viewer{position:absolute;inset:0;z-index:12;background:#e6e3dbf7;display:flex;flex-direction:column;align-items:center;justify-content:center;backdrop-filter:blur(20px);padding:70px 90px}.desk-viewer-header{position:absolute;left:40px;right:30px;top:26px;display:flex;align-items:center;justify-content:space-between}.desk-viewer-header p{font-size:11px;letter-spacing:.1em;margin:0}.desk-close{border:1px solid #cdd0c4;background:#f9faf2aa}.desk-viewer figure{margin:0;width:min(100%,1040px);perspective:1400px}.desk-viewer img{display:block;width:100%;max-height:64vh;object-fit:contain;box-shadow:0 35px 70px #28382030;will-change:transform;transition:transform .3s ease-out}.desk-viewer figcaption{display:flex;justify-content:space-between;gap:20px;font-size:11px;color:#66705f;margin-top:24px}.desk-viewer figcaption strong{font-weight:500;color:#313d2c}.desk-loading{position:absolute;z-index:5;inset:0;background:#eeeae2;display:grid;place-content:center;text-align:center;transition:opacity .6s}.desk-loading p{font-size:12px;letter-spacing:.12em}.desk-loader-orbit{width:46px;height:46px;margin:0 auto 14px;border:1px solid #bbc0b2;border-top-color:#3f4e39;border-radius:50%;animation:desk-spin 1.8s linear infinite}.desk-loading.is-loaded{opacity:0;pointer-events:none}.desk-fallback{position:absolute;inset:0;padding:120px 30px 40px;background:radial-gradient(ellipse at center,#f9f9ef,#d8dccc);display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:8;text-align:center}.desk-fallback h2{font-size:30px;letter-spacing:-.04em;font-weight:500}.desk-fallback p{font-size:14px;color:#5b6254;max-width:390px;line-height:1.8}.desk-fallback button{min-height:44px;border:1px solid #8c9880;border-radius:30px;padding:0 22px;background:transparent;color:#30392e}.desk-upload-status{position:absolute;left:50%;transform:translateX(-50%);bottom:97px;z-index:15;font-size:12px;max-width:80%;text-align:center;background:#f9faf4e8;padding:9px 15px;border-radius:20px;box-shadow:0 4px 20px #0001}.desk-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.desk-picked .desk-intro{opacity:0;transform:translateY(-16px)}.desk-picked .desk-hint{bottom:100px}.desk-picked .desk-state-label{top:90px}#cain-desk[data-wire="true"] .desk-state-label strong{color:#356f9d}@keyframes desk-spin{to{transform:rotate(360deg)}}@media(min-width:1700px){.desk-intro{left:7vw}.desk-top{left:7vw;right:7vw}}@media(max-width:1000px){#cain-desk{min-height:740px}.desk-intro{top:90px;left:30px;width:280px}.desk-intro h1{font-size:38px}.desk-top{left:30px;right:30px}.desk-state-label{right:30px}.desk-bottom-note,.desk-bottom-id{display:none}.desk-intro p{max-width:210px}.desk-toolbar{bottom:24px}.desk-hint{bottom:99px}.desk-photo-tray{bottom:135px}}@media(max-width:650px){#cain-desk{height:calc(100svh - 72px);min-height:730px;max-height:960px}.desk-top{top:25px;left:22px;right:22px}.desk-index,.desk-edition{font-size:9px}.desk-intro{top:70px;left:22px;width:260px}.desk-intro h1{font-size:35px;max-width:250px;margin-bottom:14px}.desk-intro p{font-size:12px;max-width:230px}.desk-intro .desk-tiny{display:none}.desk-state-label{top:242px;right:22px;font-size:9px}.desk-state-label strong{font-size:11px}.desk-picked .desk-state-label{top:72px}.desk-toolbar{gap:2px;padding:5px;max-width:calc(100% - 24px)}.desk-toolbar button{font-size:11px;padding:0 12px}.desk-toolbar button.desk-primary{padding:0 17px}.desk-hint{font-size:10px;padding:0 18px;bottom:96px}.desk-photo-tray{gap:9px;bottom:132px}.desk-print{width:102px;padding:6px 6px 21px}.desk-print img{height:69px}.desk-print span{font-size:7px}.desk-print b{font-size:7px}.desk-viewer{padding:90px 22px}.desk-viewer-header{left:22px;right:16px;top:20px}.desk-viewer-header p{font-size:10px}.desk-viewer figcaption{font-size:10px;flex-direction:column;gap:8px}.desk-close{font-size:11px;padding:0 13px}}@media(prefers-reduced-motion:reduce){#cain-desk *,#cain-desk *::before,#cain-desk *::after{animation:none!important;transition:none!important}}
/* Keep interaction controls inside the visible mobile stage, including short phones. */
@media(max-width:700px){
  #cain-desk{height:calc(100svh - 72px);min-height:0;max-height:none}
  body.admin-bar #cain-desk{height:calc(100svh - 118px)}
  .desk-toolbar{bottom:max(16px,env(safe-area-inset-bottom));gap:2px;padding:5px;max-width:calc(100% - 24px)}
  .desk-hint,.desk-picked .desk-hint{bottom:82px;margin-block:6px}
  .desk-photo-tray{bottom:114px}
  .desk-viewer{padding:78px 22px 35px}
  .desk-viewer img{max-height:58svh}
}
@media(max-width:700px) and (max-height:740px){
  .desk-top{top:20px}
  .desk-intro{top:62px}
  .desk-intro h1{font-size:30px;line-height:1.12;margin-bottom:10px}
  .desk-intro p{font-size:11px;line-height:1.7}
  .desk-state-label{top:204px}
  .desk-picked .desk-state-label{top:63px}
  .desk-print{width:90px;padding:5px 5px 20px}
  .desk-print img{height:56px}
  .desk-photo-tray{gap:10px;bottom:110px}
  .desk-viewer figcaption{margin-top:15px}
}
@media(max-height:560px){
  #cain-desk{min-height:0}
  .desk-intro{top:72px}
  .desk-intro h1{font-size:29px}
  .desk-intro p,.desk-intro .desk-tiny,.desk-state-label{display:none}
  .desk-top{top:20px}
  .desk-toolbar{bottom:12px}
  .desk-hint,.desk-picked .desk-hint{bottom:74px}
  .desk-photo-tray{left:auto;right:22px;bottom:106px;transform:translate(0,20px);gap:8px}
  .desk-photo-tray.is-open{transform:translate(0,0)}
  .desk-print{width:78px;padding:5px 5px 19px}
  .desk-print img{height:48px}
}@media(max-width:700px){#cain-desk:not(.desk-picked) .desk-state-label{display:none}}
/* Object collection and contextual controls. */
#cain-desk .desk-toolbar{gap:2px;bottom:20px}
#cain-desk .desk-toolbar button{padding:0 19px}
#cain-desk .desk-toolbar button[aria-pressed=true]{background:#344333;color:#fff}
#cain-desk .desk-actions{position:absolute;z-index:7;bottom:91px;left:50%;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;gap:8px;padding:8px;border-radius:18px;background:#f8f9efeb;box-shadow:0 6px 28px #273c2520;max-width:calc(100% - 28px)}
#cain-desk .desk-actions button{border:1px solid #c9cfc0;background:#fffdf3;color:#344333;border-radius:12px;min-height:44px;padding:8px 15px;font-size:12px;white-space:nowrap}
#cain-desk .desk-actions button:hover{background:#e1e8d8}
#cain-desk .desk-actions label{display:flex;align-items:center;gap:7px;font-size:12px;white-space:nowrap}
#cain-desk .desk-actions input{width:105px;accent-color:#587849}
#cain-desk .desk-hint{bottom:151px;font-size:12px}
#cain-desk .desk-photo-tray{bottom:188px;max-width:90%;overflow-x:auto;padding:12px}
#cain-desk .desk-photo-tray .desk-print{flex-shrink:0;width:118px}
#cain-desk .desk-monitor-preview{position:absolute;z-index:3;top:90px;right:38px;width:min(28%,350px);padding:10px;background:#f5f6ec;border-radius:12px;box-shadow:0 10px 30px #122a2620}
#cain-desk .desk-monitor-preview span{font-size:10px;letter-spacing:.14em;display:block;margin-bottom:6px;color:#4a6152}
#cain-desk .desk-monitor-preview canvas{display:block;width:100%;height:auto;border-radius:5px}
#cain-desk[data-object=controller] .desk-state-label,#cain-desk[data-object=keyboard] .desk-state-label{display:none}
#cain-desk .desk-shutter-flash{position:absolute;inset:0;background:white;z-index:9;pointer-events:none;animation:deskFlash .23s ease-out forwards}
@keyframes deskFlash{to{opacity:0}}
@media(max-width:700px){
 #cain-desk .desk-toolbar{bottom:14px;padding:5px;max-width:95%}
 #cain-desk .desk-toolbar button{padding:0 14px;font-size:12px}
 #cain-desk .desk-actions{bottom:77px;padding:6px;gap:5px;border-radius:13px;flex-wrap:wrap;width:max-content}
 #cain-desk .desk-actions button{padding:7px 11px;min-height:40px;font-size:11px}
 #cain-desk .desk-actions input{width:68px}
 #cain-desk .desk-actions label{font-size:10px;gap:4px}
 #cain-desk .desk-hint{bottom:145px;padding:0 20px;font-size:10px}
 #cain-desk .desk-photo-tray{bottom:173px;left:5%;transform:none;width:90%;gap:8px}
 #cain-desk .desk-photo-tray.is-open{transform:none}
 #cain-desk .desk-photo-tray .desk-print{width:86px}
 #cain-desk .desk-monitor-preview{top:55px;right:50%;transform:translateX(50%);width:200px;padding:7px}
}
@media(prefers-reduced-motion:reduce){#cain-desk .desk-shutter-flash{display:none}}
@media(max-width:700px){#cain-desk .desk-actions button{min-height:44px}}
