:root{font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,sans-serif;color:#2f302d;background:#f7f6f3;font-synthesis:none;font-size:14px;line-height:1.6;--ink: #252622;--muted: #74746e;--line: #eaeaea;--paper: #fff;--mono: "SF Mono", "Cascadia Code", Menlo, monospace}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input{font:inherit}button,summary{cursor:pointer;-webkit-tap-highlight-color:transparent}button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;padding:7px 12px;border:1px solid var(--line);border-radius:5px;background:var(--paper);color:var(--ink);font-size:12px;font-weight:500;transition:background .15s,color .15s,transform .15s}button:hover:not(:disabled){background:#f4f3f0}button:active:not(:disabled){transform:scale(.98)}button:disabled,input:disabled{opacity:.42;cursor:not-allowed}button[aria-pressed=true]{background:#edf3ec;color:#2f3b28;border-color:#6b7159}button[aria-pressed=true]:hover:not(:disabled){background:#e3ecdf}:is(button,input,a,summary):focus-visible{outline:2px solid #686d5c;outline-offset:4px}input{min-width:0}input[type=number]{width:100%;height:36px;padding:6px 10px;border:1px solid #deded8;border-radius:5px;background:#fff;color:var(--ink)}input[type=number]{font-family:var(--mono);font-size:14px}input[type=range]{width:100%;accent-color:#44463d;height:18px;margin:0;cursor:pointer}input[type=checkbox]{accent-color:#44463d;width:15px;height:15px;margin:0}fieldset{border:0;margin:0;padding:0;min-width:0}h1,h2,h3,p{margin:0}h2{font-size:14px;font-weight:600;letter-spacing:.01em}h3{font-size:12px;font-weight:600}svg{flex:0 0 auto}.app{min-height:100vh}.app-header{height:60px;background:#fbfbfa;border-bottom:1px solid var(--line)}.header-inner,.workspace,.app-footer{width:min(1400px,calc(100% - 48px));margin:0 auto}.workspace{padding:20px 0 40px}.header-inner{height:100%;display:flex;justify-content:space-between;align-items:center;gap:20px}.brand{display:flex;align-items:center;gap:13px;font-size:17px;font-weight:600;letter-spacing:.04em;white-space:nowrap}.brand small{display:block;font-size:8px;color:var(--muted);font-weight:400;letter-spacing:.13em;margin-top:2px}.brand-mark{display:flex;align-items:center;gap:3px;width:32px;height:34px}.brand-mark i{display:block;background:#393c32;width:4px;height:23px;border-radius:1px}.brand-mark i:nth-child(2),.brand-mark i:nth-child(4){height:29px}.brand-mark i:nth-child(3){height:35px}.local-badge{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted)}.local-badge>span{width:5px;height:5px;border-radius:50%;background:#768267}.header-actions{display:flex;align-items:center;gap:18px}.header-link{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:#4a5140;text-decoration:none}.header-link:hover{color:#252622}.text-button{min-height:28px;padding:0;background:transparent;border:0;font-size:11px;gap:6px;color:#66695f}.text-button:hover:not(:disabled){background:transparent;color:#1e211b}.workflow-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid #dddcd5;margin:0 0 16px}.workspace-tabs{display:flex;align-items:center;gap:21px}.workspace-tabs button{min-height:44px;padding:0 2px;border:0;border-radius:0;background:transparent;color:#7d7e74;position:relative;font-size:13px;gap:9px}.workspace-tabs button[aria-current=page]{color:#252622}.workspace-tabs button[aria-current=page]:after{content:"";height:2px;background:#393c32;position:absolute;bottom:-1px;left:0;right:0}.workspace-tabs button:hover:not(:disabled){background:transparent;color:#252622}.module-steps{display:flex;align-items:center;gap:20px;padding:0;margin:0;list-style:none}.module-steps li{display:flex;gap:7px;align-items:center;font-size:10px;color:#73786a}.module-steps li>span{font:9px var(--mono);color:#919783}.module-steps li+li:before{content:"›";color:#adb29f;margin-right:6px}.workbench{display:grid;grid-template-columns:348px minmax(0,1fr);gap:16px;align-items:start;animation:reveal .25s ease both}.panel{min-width:0;background:var(--paper);border:1px solid var(--line);border-radius:8px;overflow:hidden}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 18px}.settings-column{display:grid;gap:12px}.settings-section{padding:14px 18px;border-top:1px solid var(--line)}.settings-section>h3{display:flex;align-items:center;flex-direction:row-reverse;justify-content:flex-end;gap:8px;margin-bottom:10px}.section-tag{font:10px var(--mono);color:#92948a}.field{display:block;margin-bottom:10px}.field>span{display:block;font-size:11px;color:#64675e;margin-bottom:5px}.number-input{position:relative}.number-input input{padding-right:46px}.number-input>span{position:absolute;right:11px;top:10px;font:11px var(--mono);color:#84867c;pointer-events:none}.number-input input::-webkit-inner-spin-button{display:none}.number-presets{display:grid;gap:7px;margin-bottom:7px}.number-presets>button{min-height:30px;font:11px var(--mono)}.preset-field>.number-presets{margin:0 0 7px}.shortcut-presets>button{color:#6a6d5f}.shortcut-presets>button:hover:not(:disabled){color:#252622}.direction-presets>button{justify-content:flex-start;gap:10px;padding:7px 11px;text-align:left;min-height:44px}.direction-presets strong{display:block;font-size:11px;font-weight:500}.stripe-symbol{display:flex;gap:3px;flex-shrink:0;height:26px;width:23px;align-items:center;justify-content:center;color:#777c6d}.stripe-symbol i{display:block;height:23px;width:2px;background:currentColor}.stripe-symbol.horizontal{transform:rotate(90deg)}.precision-presets>button{flex-direction:column;align-items:flex-start;gap:1px;padding:8px 11px;min-height:42px;font-family:inherit}.precision-presets strong{font-size:12px;font-weight:500}.precision-presets small{font-size:10px;font-weight:400;color:var(--muted)}.precision-presets>button[aria-pressed=true] small{color:#6a6d5f}.candidate-presets>button{font:10px var(--mono);padding:5px 2px;min-height:32px;overflow-wrap:anywhere}.test-range{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid var(--line)}.test-range>span{color:var(--muted);font-size:10px}.test-range strong{font:11px var(--mono)}.test-range small{font:9px var(--mono);color:var(--muted)}summary{display:flex;align-items:center;gap:8px;list-style:none;font-size:11px;padding:8px 0;user-select:none}summary::-webkit-details-marker{display:none}summary:after{content:"+";margin-left:auto;font-size:17px;line-height:1;font-weight:400;color:#797e6d}details[open]>summary:after{content:"−"}.range-settings{margin-bottom:11px;border-bottom:1px solid var(--line)}.range-settings[open]>summary{margin-bottom:8px}.primary-button{min-height:38px;padding:8px 16px;border:1px solid #242622;background:#242622;color:#fff;border-radius:5px;font-size:12px}.primary-button:hover:not(:disabled){background:#3b3d36;color:#fff}.full-width{width:100%}.download-detail{font-size:10px;color:var(--muted);text-align:center;margin-top:7px}.result-panel>summary{padding:12px 18px;gap:10px}.result-number{font:11px var(--mono);color:#7c856d;align-self:flex-start;padding-top:3px}.result-panel summary strong{display:block;font-size:12px;font-weight:500}.result-content{padding:0 18px 14px}.preview-toolbar{min-height:49px;display:flex;justify-content:space-between;align-items:center;padding:8px 18px;gap:12px;background:#f0f0eb}.preview-note{font:9px var(--mono);color:var(--muted)}.calibration-stage,.preview-stage{position:relative;background:#f0f0eb;display:flex;flex-direction:column;align-items:center;justify-content:center}.calibration-stage{min-height:660px;padding:18px;gap:10px}.calibration-sheet{position:relative;width:min(100%,900px);aspect-ratio:297 / 210;background:#fff;border:1px solid var(--line);box-shadow:0 4px 14px #2a2e1d0a}.calibration-sheet>img{display:block;width:100%;height:100%}.size-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.size-fields .field{margin-bottom:8px}.size-fields .field.derived-field>span{color:#a7ab9c}.size-fields .field:not(.derived-field)>span{color:#2f302d;font-weight:500}.derived-field .derived-value{width:100%;height:36px;padding:6px 10px;border:1px solid transparent;background:#eeeeea;border-radius:5px;display:flex;align-items:center;justify-content:space-between;gap:8px}.derived-field .derived-value>span{font:13px var(--mono);color:#8b8f81;letter-spacing:.02em}.derived-field .derived-value>small{font-size:9px;color:#9aa08f;padding:2px 6px;background:#fff;border-radius:99px;letter-spacing:.04em}.derived-field .derived-value:hover:not(:disabled){background:#e6e6e0}.derived-field .derived-value:hover:not(:disabled)>small{color:#4a5140}.advanced-settings{border-top:1px solid var(--line);padding:3px 18px}.advanced-settings summary{min-height:34px}.check-field{display:flex;gap:8px;align-items:center;font-size:11px;margin:14px 0}.validation-error{color:#9f2f2d;background:#fdebec}.validation-error{display:flex;align-items:flex-start;gap:8px;padding:11px;margin-bottom:14px;font-size:11px;border-radius:5px;line-height:1.8}.validation-error>svg{margin-top:2px}.export-section{border-top:1px solid var(--line);padding:14px 18px}.segmented{display:flex;gap:3px;padding:3px;background:#f5f5f2;border-radius:5px}.segmented>button{font-size:11px;min-height:28px;padding:4px 12px;border:0;border-radius:3px;color:var(--muted);background:transparent}.segmented>button[aria-pressed=true]{background:#fff;color:var(--ink);box-shadow:0 1px 3px #0000000a}.preview-stage{min-height:640px;padding:20px 22px;gap:12px}.preview-stage.is-empty{min-height:500px}.empty-state{text-align:center;display:flex;flex-direction:column;align-items:center;padding:16px 0}.empty-art{width:120px;height:100px;position:relative;margin-bottom:15px}.empty-art i,.empty-art>span{width:63px;height:87px;border:1px solid #bfc5b0;border-radius:5px;background:#f5f5ef;position:absolute;left:30px;top:5px}.empty-art i:first-child{transform:translate(-21px) rotate(-13deg)}.empty-art i:nth-child(2){transform:translate(21px) rotate(13deg);background:#e6e9dc}.empty-art>span{background:#fff;display:flex;align-items:center;justify-content:center;gap:3px}.empty-art b{display:block;height:42px;width:2px;background:#9da58a;font-weight:400}.empty-art b:nth-child(2n){height:55px}.empty-caption{font-size:10px;color:#7b7f71;margin-top:10px}.card-preview{position:relative;flex-shrink:0;border:0;border-radius:0;background:transparent;overflow:hidden}.card-preview.vertical{cursor:ew-resize}.card-preview.horizontal{cursor:ns-resize}.card-preview>canvas,.card-preview>img{display:block;width:100%;height:100%}.preview-message{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;padding:20px;font-size:11px;line-height:1.8;color:var(--muted);text-align:center}.playback-bar{display:flex;align-items:center;gap:8px;padding:8px 18px;border-top:1px solid var(--line)}.playback-bar>input{flex:1;margin:0 8px}.icon-button{width:30px;height:30px;min-height:30px;padding:0;flex-shrink:0;background:transparent;border-color:transparent;color:#737968}.icon-button:hover:not(:disabled){background:#efefe9}.icon-button.danger:hover:not(:disabled){background:#fdebec;color:#9f2f2d}.play-button{background:#f2f3ec;border:1px solid var(--line);border-radius:5px;color:#474d3e}.playback-counter{font:11px var(--mono);white-space:nowrap;color:#454b3a;margin-left:7px}.playback-counter>span{color:#8a8d80}.frame-panel{border-top:1px solid var(--line);padding:10px 18px;min-width:0}.frame-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}.frame-heading h3{display:flex;gap:10px;align-items:center;font-size:11px;font-weight:500}.count{font:9px var(--mono);color:#888d7d}.frame-list{display:flex;gap:9px;overflow-x:auto;padding:3px 3px 9px;scrollbar-width:thin;scrollbar-color:#cdcec5 transparent}.frame-list>[role=listitem]{flex:0 0 61px;position:relative}.frame-list>[role=listitem].dragging{z-index:2;opacity:.72}.frame-item{display:block;position:relative;width:61px;height:70px;padding:3px;border:1px solid var(--line);border-radius:5px;background:#fff;cursor:grab;user-select:none}.frame-item:active{cursor:grabbing}.frame-item.selected{border-color:#757f5e;outline:1px solid #757f5e;outline-offset:1px;background:#fff}.frame-item>canvas{display:block;width:100%;height:100%;border-radius:2px}.frame-index{position:absolute;bottom:4px;left:4px;padding:0 3px;border-radius:2px;font:8px/1.6 var(--mono);color:#414739;background:#fffffff0}.frame-bottom{display:flex;align-items:center;justify-content:space-between;gap:14px;padding-top:7px}.frame-info{min-width:0;display:grid;gap:2px}.frame-info strong{font-size:10px;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#5f6653}.frame-info>span{font:9px var(--mono);color:#878d7c}.frame-actions{display:flex;gap:4px;flex-shrink:0}.frame-actions>button:last-child{border-left:1px solid var(--line);border-radius:0 4px 4px 0;margin-left:4px}.app-footer{display:flex;align-items:center;justify-content:center;gap:20px;padding:16px 0 20px;font-size:10px;color:#808376}.app-footer>span{display:flex;align-items:center;gap:7px}.job-bar{position:fixed;z-index:15;bottom:24px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:15px;width:min(460px,calc(100vw - 32px));padding:18px 22px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 32px #0000000a}.job-bar>div{flex:1;display:grid;gap:9px}.job-bar strong{font-size:12px;font-weight:500}progress{width:100%;height:5px;accent-color:#555f43}.toast{position:fixed;z-index:20;top:18px;left:50%;transform:translate(-50%);max-width:min(580px,calc(100vw - 32px));display:flex;gap:12px;align-items:center;padding:10px 12px 10px 18px;background:#edf3ec;border:1px solid var(--line);border-radius:8px;box-shadow:0 5px 28px #0000000a;color:#40653b;font-size:12px;line-height:1.8}.toast.error{color:#9f2f2d;background:#fdebec}.toast>span{max-height:160px;overflow:auto}.drop-overlay{position:fixed;inset:16px;z-index:30;background:#f4f5eef5;border:1px dashed #7d8668;border-radius:8px;pointer-events:none;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:20px;color:#50593e}.drop-overlay strong{font-size:24px;font-weight:500}.drop-overlay>span{font:11px var(--mono);color:var(--muted)}.sr-only,.skip-link:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link:focus{position:fixed;top:12px;left:12px;z-index:50;background:#fff;padding:12px;color:var(--ink)}.spin{animation:spin 1.2s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes reveal{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@media(max-width:1100px){.header-inner,.workspace,.app-footer{width:calc(100% - 48px)}.workbench{grid-template-columns:310px minmax(0,1fr);gap:14px}.direction-presets>button{gap:8px;min-height:40px}.preview-note{font-size:8px}}@media(max-width:760px){.app-header{height:58px}.header-inner,.workspace,.app-footer{width:calc(100% - 36px)}.workspace{padding:14px 0 32px}.brand{font-size:15px;gap:10px}.brand small{font-size:7px}.brand-mark{transform:scale(.87);transform-origin:left center;width:28px}.local-badge{display:none}.workflow-bar{margin:0 0 14px;flex-direction:column;align-items:stretch;gap:0}.workspace-tabs{gap:16px;width:100%;justify-content:space-between}.workspace-tabs button{font-size:12px;min-height:44px;flex:1}.module-steps{gap:9px;justify-content:space-between;padding:11px 0;border-top:1px solid var(--line)}.module-steps li{gap:5px;font-size:9px}.module-steps li+li:before{margin-right:3px}.workbench{grid-template-columns:1fr;gap:14px}.studio-layout>.preview-panel{grid-row:1}.settings-column{gap:12px}.preview-stage{min-height:290px;padding:16px 20px}.preview-stage.is-empty{min-height:260px}.empty-state{padding:14px 0}.empty-art{transform:scale(.85);margin-bottom:8px}.empty-caption{font-size:9px}.preview-toolbar{min-height:49px;padding:8px 16px}.preview-note{font-size:7px}.segmented>button{padding:5px 10px;font-size:10px}.calibration-stage{min-height:0;padding:18px}.calibration-sheet{width:100%}.playback-bar{padding:8px 15px;gap:3px}.playback-bar>input{margin:0 4px}.frame-panel{padding:10px 16px}.app-footer{flex-direction:column;align-items:flex-start;gap:7px;padding:16px 0;font-size:9px}.toast{width:calc(100vw - 32px);font-size:11px}}@media(max-width:360px){.header-inner,.workspace,.app-footer{width:calc(100% - 24px)}.preview-note{display:none}.empty-caption{max-width:190px;line-height:1.9}}
