/* The playback clock owns motion. No independent animations or delayed timers. */
.app-window{transform-origin:50% 85%;backface-visibility:hidden;isolation:isolate}
.window-chat{border-color:#b9c8d5aa;box-shadow:0 26px 76px #0008}
.window-chat .window-chrome{background:#b6c4ce;border-color:#8da3b355}
.window-chat .window-address{background:transparent;border:0;color:#50626f}
.window-chat .window-label{color:#6b7f8e}
.window-chat .window-chrome .window-lights i{width:8px;height:8px;opacity:.6}
.surface-ai .ai-processing,.surface-ai .ai-editor-idle,.surface-ai .ai-response,.surface-ai .ai-result{transition:none!important}
.surface-ai .ai-processing{display:flex!important;opacity:var(--thinking-p,0);height:20px;margin:17px 6px 0}
.surface-ai .ai-response{opacity:var(--response-p,0)!important;transform:translateY(calc((1 - var(--response-p,0))*18px))!important;padding-top:18px}
.surface-ai .ai-result{opacity:var(--preview-p,0)!important;transform:translateY(calc((1 - var(--preview-p,0))*24px)) scale(calc(.97 + var(--preview-p,0)*.03))!important;transform-origin:50% 90%}
.surface-ai .ai-editor-idle{opacity:calc(1 - var(--preview-p,0))!important}
.surface-ai .ai-code-lines>span{opacity:calc(.1 + var(--line-p,0)*.9);transform:translateX(calc((1 - var(--line-p,0))*12px));clip-path:inset(0 calc((1 - var(--line-p,0))*100%) 0 0)}
.surface-ai .ai-prompt-text:after{content:"";display:inline-block;width:1px;height:1.05em;background:#c0c9bf;vertical-align:-.1em;margin-left:3px;opacity:var(--caret-p,0)}
.surface-ai .ai-file-card{transform:translateY(calc((1 - var(--response-p,0))*12px));opacity:var(--response-p,0)}
.surface-ai .ai-input{min-height:44px;align-items:center}
.surface-ai .ai-prompt{min-height:86px}
.surface-chat .chat-message,.surface-chat .chat-draft,.surface-chat .chat-typing{transition:none!important}
.surface-chat .outgoing{opacity:var(--out-p,0)!important;transform:translateY(calc((1 - var(--out-p,0))*110px)) scale(calc(.98 + var(--out-p,0)*.02))!important;transform-origin:right bottom}
.surface-chat .incoming{opacity:var(--in-p,0)!important;transform:translateY(calc((1 - var(--in-p,0))*18px)) scale(calc(.97 + var(--in-p,0)*.03))!important}
.surface-chat .chat-draft{opacity:var(--draft-p,1)!important;transform:none!important}
.surface-chat .chat-typing{opacity:var(--typing-p,0)!important;transform:translateY(calc((1 - var(--typing-p,0))*6px))}
.surface-chat .chat-typing i{transform:translateY(var(--dot-y,0px));opacity:var(--dot-a,.5);animation:none!important}
.surface-chat .chat-send{transform:scale(var(--send-scale,1));box-shadow:0 0 0 calc(var(--send-ring,0)*5px) #e4c52833}
.surface-chat .chat-room-body{position:relative}
.surface-chat .chat-read-count{opacity:var(--read-p,1)}
.surface-mail .mail-recipient{min-width:240px;min-height:27px}
.surface-mail .mail-subject strong{min-height:18px}
.surface-mail .mail-body p{min-height:1.8em}
.surface-mail .mail-attachment{display:flex!important;opacity:var(--attachment-p,0)!important;transform:translateY(calc((1 - var(--attachment-p,0))*9px)) scale(calc(.96 + var(--attachment-p,0)*.04))!important;transform-origin:15% 50%;transition:none}
.surface-mail .mail-attachment:after{content:"";position:absolute;left:0;bottom:0;height:2px;width:calc(var(--mail-upload-p,0)*100%);background:#7d9984}
.surface-mail .mail-recipient:empty:before{content:"받는 사람";color:#b8bec1}
.surface-cowo .cowo-upload,.surface-cowo .cowo-content{transition:none!important}
.surface-cowo .cowo-upload{opacity:calc(1 - var(--result-p,0))!important;transform:translateY(calc(var(--result-p,0)*-18px))!important;border-color:color-mix(in srgb,#cbd6bf calc((1 - var(--drop-hover,0))*100%),#70957e);background:color-mix(in srgb,#f9faf6 calc((1 - var(--drop-hover,0))*100%),#edf4ed)}
.surface-cowo .cowo-upload-icon{transform:translateY(calc(var(--drop-hover,0)*-5px)) scale(calc(1 + var(--drop-hover,0)*.08))}
.surface-cowo .cowo-upload-file{opacity:var(--drop-p,0);transform:translateY(calc((1 - var(--drop-p,0))*12px));position:relative;overflow:hidden}
.surface-cowo .cowo-upload-file:after{content:"";position:absolute;left:0;bottom:0;height:2px;width:calc(var(--upload-p,0)*100%);background:#7e9b80}
.surface-cowo .cowo-upload-file>.surface-icon:last-child{opacity:var(--upload-p,0);transform:scale(var(--upload-p,0))}
.surface-cowo .cowo-upload>button{opacity:var(--drop-p,0);transform:scale(calc(1 - var(--upload-press,0)*.04))}
.surface-cowo .cowo-content{opacity:var(--result-p,0)!important;transform:translateY(calc((1 - var(--result-p,0))*14px))!important}
.surface-cowo .cowo-feedback-empty{display:flex!important;opacity:calc(1 - var(--feedback-p,0));position:absolute;left:26%;right:26%;pointer-events:none}
.surface-cowo .cowo-comment{display:block!important;opacity:var(--feedback-p,0);transform:translateY(calc((1 - var(--feedback-p,0))*18px))}
.surface-cowo .cowo-comment>p{color:#47594b;font-size:.8rem}
.surface-cowo .cowo-feedback-body{position:relative;overflow:auto;scrollbar-width:none}
.surface-cowo .cowo-feedback-body::-webkit-scrollbar{display:none}
.surface-cowo .cowo-feedback-composer{height:calc(80px - var(--feedback-p,0)*36px);margin:8px 12px;padding:8px;font-size:10px;min-height:0;overflow:hidden}
.surface-cowo .cowo-feedback-composer button{width:23px;height:23px;right:6px;bottom:6px}
.surface-cowo .cowo-revision-reply{display:block!important;opacity:var(--reply-p,0);transform:translateY(calc((1 - var(--reply-p,0))*10px));max-height:calc(var(--reply-p,0)*110px);overflow:hidden}
.surface-cowo .cowo-version-activity{display:flex!important;opacity:var(--reply-p,0);transform:translateY(calc((1 - var(--reply-p,0))*8px))}
.surface-cowo .cowo-comment-check{display:inline-flex!important;opacity:var(--resolve-p,0);transform:scale(calc(.7 + var(--resolve-p,0)*.3))}
.surface-cowo .cowo-version-select{position:relative;min-width:34px}
.surface-cowo .cowo-version-v1{display:inline!important;opacity:calc(1 - var(--version-p,0));transform:translateY(calc(var(--version-p,0)*-7px))}
.surface-cowo .cowo-version-v2{display:inline!important;position:absolute;left:0;opacity:var(--version-p,0);transform:translateY(calc((1 - var(--version-p,0))*7px))}
.surface-ai .revision-note,.surface-cowo .revision-note{display:flex!important;flex:none;opacity:var(--revision-p,0);max-height:calc(var(--revision-p,0)*30px);min-height:0;overflow:hidden;padding-top:calc(var(--revision-p,0)*4px)!important;padding-bottom:calc(var(--revision-p,0)*4px)!important;margin-bottom:calc(var(--revision-p,0)*8px)!important;border-width:calc(var(--revision-p,0)*1px);transform:translateY(calc((1 - var(--revision-p,0))*-6px))}
.surface-cowo[data-cowo-phase="v2"] .booking-intro{margin-bottom:.7rem}
.surface-cowo[data-cowo-phase="v2"] .booking-form label{margin-bottom:.5rem}
.surface-cowo .booking-scene{transform:translateY(calc((1 - var(--result-p,0))*12px));transform-origin:center bottom}
.surface-cowo .booking-scene-window{transform:translateX(calc((1 - var(--result-p,0))*-8px))}
.surface-cowo .booking-scene-plinth,.surface-cowo .booking-scene-object{transform:translateY(calc((1 - var(--result-p,0))*16px))}
.surface-cowo .booking-form label{transform:translateY(calc((1 - var(--result-p,0))*10px));opacity:var(--result-p,0)}
.discovery{background:#0b101758;backdrop-filter:blur(2px)}
.discovery span{font-size:64px;letter-spacing:-3.5px}
.discovery i{opacity:.5}
.floating-file{box-shadow:0 12px 30px #0003;border-radius:6px;padding:11px 16px}
.stage-cursor{filter:drop-shadow(0 2px 2px #0002)}
@media(prefers-reduced-motion:reduce){.desktop,.app-window,.floating-file,.stage-cursor{will-change:auto}.ai-prompt-text:after{display:none}}
.surface-chat .chat-bubble-text-out,.surface-chat .chat-bubble-text-in{display:block;white-space:pre-line}
/* Reading comes first: fixed desktop view, small pointer, restrained local responses. */
.stage-cursor{width:16px;height:20px;filter:none}
.stage-cursor svg{display:block;width:16px;height:20px}
.stage-cursor svg path{stroke-width:1.2}
.stage-cursor i{display:none}
.surface-ai .ai-response{transform:translateY(calc((1 - var(--response-p,0))*8px))!important}
.surface-ai .ai-result{transform:translateY(calc((1 - var(--preview-p,0))*9px))!important}
.surface-ai .ai-code-lines>span{transform:none}
.surface-ai .ai-file-card{transform:translateY(calc((1 - var(--response-p,0))*5px))}
.surface-chat .outgoing{transform:translateY(calc((1 - var(--out-p,0))*28px))!important}
.surface-chat .incoming{transform:translateY(calc((1 - var(--in-p,0))*7px))!important}
.surface-cowo .cowo-upload{transform:translateY(calc(var(--result-p,0)*-6px))!important}
.surface-cowo .cowo-content{transform:translateY(calc((1 - var(--result-p,0))*6px))!important}
.surface-cowo .booking-scene,.surface-cowo .booking-scene-window,.surface-cowo .booking-scene-plinth,.surface-cowo .booking-scene-object{transform:none}
.surface-cowo .booking-form label{transform:none}
.surface-cowo .cowo-comment{transform:translateY(calc((1 - var(--feedback-p,0))*7px))}
