@font-face{font-family:"Source Han Sans KR VF";font-style:normal;font-weight:250 900;font-display:swap;src:url("../assets/SourceHanSansKR-VF.woff2") format("woff2")}
@font-face{font-family:"DPS-font-source-han-serif-kr";font-style:normal;font-weight:250 900;font-display:swap;src:url("../assets/font-source-han-serif-kr-250-900.woff2") format("woff2")}
@font-face{font-family:'Pretendard Variable';font-style:normal;font-weight:100 900;font-display:swap;src:url('../assets/PretendardVariable.woff2') format('woff2')}
/* Informational dialog links use the same neutral controls as Viewer navigation. */
:where(#dialog,.ai-request-dialog,.resource-drawer) a{color:var(--control-text);text-decoration:underline;text-underline-offset:.15em}
:where(#dialog,.ai-request-dialog,.resource-drawer) a:hover{color:var(--app-ink)}
:where(#dialog,.ai-request-dialog,.resource-drawer) a:focus-visible{outline:2px solid var(--control-focus);outline-offset:2px}
/* Native small text is a caption role, including upload counters in service forms. */
:where(.production-app-surface,#dialog,.resource-drawer,.ai-request-dialog) small:where(:not(.detail-page *,.page-viewport *)){font-size:var(--type-caption)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:var(--font-ui);font-size:var(--type-body);line-height:var(--leading-body);color:var(--ink);background:var(--bg)}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.4}button,a,input,select,textarea{outline-offset:3px}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--app-focus)}img{max-width:100%}h1,h2,h3,h4,p{margin-top:0}h3{font-size:var(--type-section-title);margin-bottom:10px}figure{margin:0}.btn.small{font-size:var(--type-button);padding:7px 10px}.btn.tiny{font-size:var(--type-button);padding:3px 7px}.full{width:100%}.actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.tag{display:inline-block;background:var(--control-hover);border-radius:var(--radius-compact);padding:3px 7px;font-size:var(--type-body-sm);white-space:nowrap;color:var(--app-muted)}.tag.blue{background:var(--control-selected);color:var(--control-text)}.tag.amber{background:var(--app-surface-subtle);color:var(--app-warning)}.eyebrow{font-size:var(--type-meta);letter-spacing:1.5px;color:var(--app-muted);margin-bottom:8px}.help{font-size:var(--type-helper);line-height:var(--leading-helper);color:var(--muted);margin:10px 0}.tiny{font-size:var(--type-body-sm)}.notice{font-size:var(--type-helper);border:1px solid var(--app-line);padding:12px 14px;border-radius:var(--radius-row);color:var(--app-muted);background:var(--app-surface-subtle);line-height:1.8;margin-bottom:15px}.notice p{margin:4px 0 0}.storage-note{padding:8px 15px;background:var(--app-surface-subtle);color:var(--app-warning);font-size:var(--type-body-sm)}.loading{min-height:100vh;display:grid;place-items:center;margin:0;padding:var(--space-6);text-align:center}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:13px;min-width:0}.field>span{font-size:var(--type-field-label);font-weight:var(--weight-semibold);color:var(--control-text)}.field>small{color:var(--app-muted);font-size:var(--type-helper)}.field select,.field textarea,.field input[type=number],.field input[type=text]{width:100%}.check{display:flex;align-items:center;gap:var(--space-2);font-size:var(--type-body-sm);margin:10px 0;color:var(--app-muted)}.check input{accent-color:var(--control-text)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 13px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:13px}.section-heading h3{margin:0}.section-heading small{color:var(--muted)}.color-field>div{display:flex;align-items:center;gap:var(--space-2);font-size:var(--type-field-label);color:var(--app-muted)}.color-field input[type=color]{border:1px solid var(--control-border);padding:2px;height:29px;width:38px;background:var(--app-surface);cursor:pointer}.color-field .btn{margin-left:auto}.panel{background:var(--app-surface);border:1px solid var(--line);border-radius:var(--radius-panel);padding:22px;min-width:0}.app-shell{display:grid;grid-template-columns:216px minmax(0,1fr);min-height:100vh}.app-sidebar{background:var(--app-surface);border-right:1px solid var(--line);padding:30px 18px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column}.brand{font-size:var(--type-body-emphasis);font-weight:750;letter-spacing:-.5px;padding:0 8px}.brand small{display:block;font-size:var(--type-meta);letter-spacing:1.7px;color:var(--app-muted);margin-top:7px;font-weight:500}.side-label{font-size:var(--type-navigation);color:var(--app-muted);letter-spacing:1.4px;margin:40px 8px 14px}.app-sidebar nav{display:grid;gap:4px}.app-sidebar nav button{background:none;border:0;border-radius:var(--radius-single);padding:12px 14px;text-align:left;color:var(--app-muted);font-size:var(--type-navigation)}.app-sidebar nav button.active{background:var(--app-accent-soft);color:var(--app-accent);font-weight:650}.side-note{margin-top:auto;font-size:var(--type-body-sm);color:var(--app-muted);padding:20px 7px 0;line-height:1.8}.side-note strong{font-size:var(--type-body-sm);color:var(--app-muted)}.app-main{min-width:0}.app-content{max-width:1440px;margin:auto;padding:30px}.page-heading{margin:8px 0 27px}.page-heading h2{font-size:var(--type-page-title);font-weight:var(--weight-bold);line-height:var(--leading-title);letter-spacing:var(--tracking-title);margin:0 0 10px}.page-heading p{font-size:var(--type-helper);color:var(--app-muted)}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.project-card{border:1px solid var(--line);border-radius:var(--radius-panel);overflow:hidden;background:var(--app-surface)}.project-art{display:block;width:100%;height:260px;overflow:hidden;border:0;padding:0;text-align:left;background:var(--control-hover);cursor:pointer}.project-card-body{padding:22px}.project-card-body h3{font-size:var(--type-body-emphasis);margin:9px 0}.project-card-body p{color:var(--app-muted);font-size:var(--type-helper)}.instructions{margin-top:22px}.instructions p{font-size:var(--type-helper);color:var(--app-muted)}.stepper{display:flex;gap:var(--space-2);margin-bottom:24px;flex-wrap:wrap}.creator-layout{display:grid;grid-template-columns:minmax(0,1fr) 275px;gap:22px}.form-panel{padding:30px}.summary{align-self:start}.summary h3{font-size:var(--type-workspace-title)}.summary dl{margin:20px 0 24px;display:grid;grid-template-columns:80px 1fr;gap:12px 8px;font-size:var(--type-body-sm)}.summary dt{color:var(--muted)}.summary dd{margin:0}.wizard-footer{display:flex;justify-content:space-between;margin-top:28px;border-top:1px solid var(--line);padding-top:20px}.planning-grid{display:flex;gap:9px;flex-wrap:wrap;margin:20px 0}.compact-preview{max-width:470px;margin:22px auto}.comparison-grid{margin-top:22px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.comparison-preview{height:370px;overflow:auto;background:var(--app-surface-subtle);margin-bottom:15px}.review-layout{display:grid;grid-template-columns:minmax(0,1fr) 314px;gap:24px}.review-scroll{height:calc(100vh - 220px);overflow:auto;min-height:540px}.review-side{display:grid;align-content:start;gap:16px}.review-side .panel{padding:20px}.thumb-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:12px 0 18px}.app-content .thumb-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.photo-choice{border:1px solid var(--control-border);border-radius:var(--radius-control);overflow:hidden;background:var(--app-surface);padding:3px;text-align:left;min-width:0}.photo-choice:hover{border-color:var(--control-muted)}.photo-choice.active{border-color:var(--control-text);background:var(--control-selected)}.photo-choice img{display:block;width:100%;height:78px;object-fit:cover;border-radius:4px}.photo-choice span{display:block;font-size:var(--type-helper);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding:6px 3px;color:var(--app-muted)}.app-content .photo-choice img{height:125px}.bridge-steps{display:flex;gap:10px;margin:20px 0;flex-wrap:wrap}.bridge-steps>div{flex:1;padding:var(--space-4);border:1px solid var(--line);border-radius:var(--radius-control);background:var(--app-surface);text-align:center;color:var(--control-text);font-size:var(--type-helper)}
/* Editor chrome */
.editor-app{height:100vh;min-width:1168px;display:flex;flex-direction:column;background:var(--app-surface)}.editor-workspace{display:grid;grid-template-columns:228px minmax(440px,1fr) 210px 310px;flex:1;min-height:0}.editor-left,.editor-quick,.editor-right{display:flex;flex-direction:column;min-width:0;min-height:0}.editor-left{border-right:1px solid var(--line)}.editor-quick,.editor-right{border-left:1px solid var(--line);background:var(--app-surface)}.panel-tabs{display:flex;height:var(--workspace-header-height);flex-shrink:0;align-items:stretch;border-bottom:1px solid var(--line);padding:0 17px;gap:18px}.panel-tabs button{background:none;border:0;border-bottom:2px solid transparent;color:var(--app-muted);font-size:var(--type-editor-control);padding:0 2px}.panel-tabs button.active{color:var(--control-text);border-bottom-color:var(--control-text)}.quick-panel-tabs{align-items:center;padding-inline:12px}.quick-panel-tabs strong{font-size:var(--type-editor-control);font-weight:600;color:var(--app-muted)}.left-content,.inspector{overflow:auto;min-height:0;padding:21px 16px}.left-content{display:flex;flex-direction:column;gap:6px;flex:1}.inspector{flex:1}.quick-inspector{padding-inline:12px}.quick-selection-head{display:grid;gap:2px;padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid var(--line)}.quick-selection-head small{font-size:var(--type-editor-helper);color:var(--app-muted)}.quick-selection-head strong{font-size:var(--type-editor-value);line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.quick-property-block{padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid var(--line)}.quick-property-block:last-child{border-bottom:0}.quick-properties-empty{font-size:var(--type-editor-helper);line-height:1.8;color:var(--app-muted)}.quick-inspector .form-grid{gap:6px}.quick-inspector .position-controls .help{display:none}.quick-inspector .section-heading{align-items:center}.quick-inspector .section-heading .property-caption{letter-spacing:.2px}.layer-list{margin:8px -7px 13px;display:grid;gap:4px}.layer-group{border-radius:var(--radius-control);overflow:hidden}.layer-group.active{background:var(--app-accent-soft)}.layer-section{width:100%;display:flex;align-items:center;gap:9px;text-align:left;border:0;background:none;padding:11px 10px}.layer-section:hover{background:var(--control-hover)}.layer-group.active .layer-section{color:var(--app-accent)}.layer-section strong{font-size:var(--type-editor-layer);font-weight:650}.layer-section small{display:block;font-size:var(--type-editor-helper);color:var(--app-muted)}.layer-order{font-size:var(--type-editor-meta);color:var(--app-muted)}.layer-children{padding:0 7px 7px 27px;display:grid;gap:2px}.layer-children button{font-size:var(--type-editor-layer);background:none;border:0;text-align:left;padding:7px 8px;color:var(--app-muted);display:flex;justify-content:space-between;border-radius:5px}.layer-children button.active{color:var(--app-accent);background:var(--app-accent-soft)}.layer-children small{font-size:var(--type-editor-helper);letter-spacing:.5px;color:var(--app-muted)}.mini-help{font-size:var(--type-editor-helper);line-height:1.9;color:var(--app-muted);background:var(--app-surface-subtle);padding:14px;border:1px solid var(--line);border-radius:var(--radius-control);margin-top:15px}.mini-help strong{color:var(--app-muted)}.mini-help p{margin:4px 0 0}.editor-center{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--control-hover)}.canvas-toolbar{height:var(--workspace-header-height);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;background:var(--app-surface-subtle);padding:0 12px;gap:10px;flex-shrink:0}.canvas-toolbar select{font-size:var(--type-editor-value);padding:6px;max-width:164px}.canvas-scroll{overflow:auto;min-height:0;flex:1;position:relative;background-image:radial-gradient(var(--line) .6px,transparent .6px);background-size:18px 18px}.canvas-stage{padding:var(--space-5);min-width:max-content;display:flex;justify-content:center;align-items:flex-start}.canvas-stage>.page-viewport{box-shadow:0 6px 24px #00000020}.artboard-grid{display:grid;grid-template-columns:repeat(2,max-content);gap:var(--space-8);align-items:start}.artboard{min-width:0}.artboard .page-viewport{box-shadow:0 6px 22px #00000015}.artboard-heading{font-size:var(--type-editor-control);color:var(--app-muted);margin-bottom:10px}.selection-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:17px;gap:9px}.selection-head small{font-size:var(--type-editor-helper);color:var(--app-muted)}.selection-head h3{font-size:var(--type-editor-value);margin:3px 0 0}.node-tabs{display:flex;gap:3px;margin:0 0 18px;background:var(--control-hover);padding:3px;border-radius:6px}.node-tabs button{font-size:var(--type-editor-control);border:0;background:transparent;color:var(--app-muted);padding:7px 8px;border-radius:var(--radius-compact);flex:1;white-space:nowrap}.node-tabs button.active{color:var(--control-text);background:var(--app-surface);box-shadow:0 1px 4px #00000013}.property-caption{font-size:var(--type-editor-field-label);color:var(--app-muted);letter-spacing:1px;margin:12px 0 10px}.property-divider{height:1px;background:var(--line);margin:22px 0}.selected-photo{border:1px solid var(--line);border-radius:var(--radius-control);overflow:hidden;margin-bottom:13px;padding:4px}.selected-photo img{width:100%;max-height:175px;object-fit:contain;background:var(--app-surface-subtle);display:block;border-radius:4px}.selected-photo strong,.selected-photo small{display:block;padding:5px 6px 0}.selected-photo strong{font-size:var(--type-editor-value)}.selected-photo small{font-size:var(--type-editor-helper);color:var(--app-muted);padding-bottom:6px}.version-row{padding:15px 0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:8px}.version-row strong{font-size:var(--type-body-sm)}.version-row small{display:block;font-size:var(--type-meta);color:var(--app-muted)}
/* Current Project uses chrome-only emphasis; the preview keeps its canonical colors. */
.project-card[aria-current="true"]{border-color:var(--app-accent)}
.project-card[aria-current="true"] .project-card-body>.eyebrow{color:var(--app-accent)}
/* Genuine HTML detail page: images, text and layout stay independent. */
.page-viewport{position:relative;margin:0 auto;overflow:visible;flex-shrink:0}.page-viewport>.detail-page{position:absolute;left:0;top:0;width:var(--dps-canonical-page-width);transform-origin:top left}.detail-page{color:#213143;overflow:hidden;background:white}.detail-section{position:relative;background:var(--section-fill,var(--section-bg));color:var(--section-fg);padding:var(--py) var(--px);min-width:0}.detail-section.section-selected::after{content:'';position:absolute;inset:0;z-index:9;border:2px solid var(--canvas-highlight,#555555);border-radius:inherit;pointer-events:none}.detail-section.is-hidden{opacity:.42;outline:2px dashed var(--control-muted);outline-offset:-2px}.section-label{display:none;position:absolute;left:10px;top:8px;background:var(--control-text);color:var(--control-surface);padding:4px 9px;border-radius:3px;font-size:13px;line-height:1.4;z-index:10;pointer-events:none}.section-selected>.section-label{display:block}.node-selected:not(.detail-section){outline:2px dashed var(--canvas-highlight,#555555)!important;outline-offset:4px}.detail-foot{padding:25px 42px;font-size:11px;color:#97a4b5;background:#fafcfe;text-align:center}
/* Dialogs and toast */
#dialog{border:1px solid var(--line);border-radius:12px;padding:0;max-width:780px;width:calc(100vw - 60px);max-height:88vh;box-shadow:var(--app-shadow-overlay);background:var(--app-surface);color:var(--ink)}#dialog::backdrop{background:var(--app-overlay);backdrop-filter:blur(2px)}#dialog>header{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line);gap:18px}#dialog>header h2{font-size:var(--type-dialog-title);margin:0}.dialog-body{padding:var(--space-6);max-height:65vh;overflow:auto}#dialog>footer{display:flex;justify-content:flex-end;padding:16px 22px;gap:var(--space-2);background:var(--app-surface);border-top:1px solid var(--line)}.dialog-photo{display:block;max-height:55vh;margin:0 auto 20px}#toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%,15px);background:var(--control-text);color:var(--control-surface);box-shadow:0 7px 25px #00000025;padding:11px 18px;border-radius:var(--radius-row);max-width:80vw;z-index:999;opacity:0;pointer-events:none;transition:var(--motion-standard);font-size:var(--type-body-sm)}#toast.show{opacity:1;transform:translate(-50%,0)}
@media(min-width:1650px){.editor-workspace{grid-template-columns:246px minmax(440px,1fr) 210px 336px}.inspector{padding:24px 20px}.quick-inspector{padding-inline:14px}.left-content{padding:24px 18px}}
@media(max-width:1200px){.app-content{padding:24px}.creator-layout{grid-template-columns:minmax(0,1fr) 240px}.project-grid{gap:14px}.project-card-body{padding:16px}.canvas-toolbar{padding:0 9px;gap:6px}.canvas-toolbar .actions{gap:5px}.canvas-toolbar select{max-width:125px}}
@media(max-width:900px){.app-shell{grid-template-columns:1fr}.app-sidebar{height:auto;position:static;padding:14px}.app-sidebar nav{display:flex;flex-wrap:wrap;margin-top:12px}.side-label,.side-note{display:none}.app-sidebar nav button{padding:8px}.brand small{display:none}.app-content{padding:18px}.project-grid,.creator-layout,.review-layout{grid-template-columns:1fr}.summary{display:none}.review-scroll{height:65vh;min-height:400px}.app-content .thumb-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.page-heading h2{font-size:var(--type-empty-title)}.form-panel{padding:20px}.editor-app{min-width:1020px}}
.composition-tags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:15px}.composition-tags span{font-size:var(--type-helper);color:var(--app-muted);background:var(--control-hover);border:1px solid var(--app-line);padding:3px 6px;border-radius:4px}
.module-notice{display:flex;align-items:center;justify-content:space-between;gap:20px}.module-notice p{margin:0}.module-notice .btn{margin-left:12px}
.module-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:20px 0}.module-stats>div{padding:22px;background:var(--app-surface);border:1px solid var(--line);border-radius:var(--radius-row);display:grid;gap:5px}.module-stats strong{font-size:var(--type-statistic)}.module-stats span{font-size:var(--type-helper);color:var(--muted)}
.inventory-scroll{max-height:540px;overflow:auto}.inventory-table{border-collapse:collapse;width:100%;font-size:var(--type-body-sm);text-align:left}.inventory-table th{position:sticky;top:0;background:var(--app-surface-subtle);z-index:1;padding:12px}.inventory-table td{padding:10px 12px;border-bottom:1px solid var(--line)}.inventory-table td:first-child{width:110px}.inventory-table td:last-child{color:var(--app-muted);width:140px}.inventory-table code{color:var(--control-text)}
.planning-notice .actions{margin-top:12px}.approved-preview{max-height:58vh;overflow:auto;padding:10px;background:var(--app-surface-subtle)}
.app-content>.panel+.panel{margin-top:20px}
@media(max-width:900px){.module-notice{display:block}.module-notice p{margin-top:8px}.module-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Shared service controls and image workflow */
.connection-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-4);margin-bottom:20px}
.connection-grid .panel{margin:0}.connection-grid h3{font-size:var(--type-section-title)}.connection-grid small{color:var(--app-muted)}
.bridge-compose{margin:20px 0}.bridge-compose .form-grid{grid-template-columns:1fr 1fr}
.bridge-compose .actions{margin-top:18px}.bridge-compose .field textarea{resize:vertical;min-height:124px}
.job-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:14px;margin-top:16px}
.job-card{padding:18px;border:1px solid var(--line);border-radius:var(--radius-panel);min-width:0;background:var(--app-surface)}
.job-card small{display:block;font-size:var(--type-meta);color:var(--app-muted);overflow-wrap:anywhere}
.job-card .job-result{width:100%;max-height:230px;object-fit:contain;border-radius:var(--radius-row);background:var(--app-surface-subtle);margin:12px 0}
.job-card p{font-size:var(--type-body);overflow-wrap:anywhere}.job-card .help{font-size:var(--type-helper);margin-top:12px}
.module-library-grid{display:grid;grid-template-columns:190px minmax(0,1fr);gap:18px;margin-top:20px;align-items:start}
.module-groups{position:sticky;top:85px;display:flex;flex-direction:column;gap:5px;padding:12px}
.module-groups .btn{justify-content:space-between;text-align:left;padding:10px;min-width:0;font-size:var(--type-button)}
.module-groups .active{background:var(--control-selected);border-color:var(--control-text);color:var(--control-text)}
.module-library-grid .inventory-table th:first-child,.module-library-grid .inventory-table td:first-child{width:25%;min-width:165px}
.module-library-grid .inventory-table code{font-size:var(--type-mono);overflow-wrap:anywhere;white-space:normal}
.module-library-grid .inventory-table td{font-size:var(--type-body-sm);vertical-align:top;padding:14px 10px}
.module-library-grid .inventory-table td small{display:block;color:var(--app-muted);font-size:var(--type-meta);margin-top:5px}
.module-library-grid .inventory-table .actions{gap:5px;max-width:250px}.module-library-grid .inventory-table .btn{padding:5px 8px;min-height:26px;font-size:var(--type-button)}
.module-library-grid .inventory-scroll{max-height:70vh}.module-library-grid input[type=search]{max-width:270px;border:1px solid var(--control-border);border-radius:var(--radius-single);padding:9px;font:inherit;min-width:0}
@media(max-width:1100px){.module-library-grid{grid-template-columns:1fr}.module-groups{position:static;flex-direction:row;flex-wrap:wrap}.module-groups .btn{width:auto}.connection-grid{grid-template-columns:1fr}.bridge-compose .form-grid{grid-template-columns:1fr}}
/* Planning -> web request -> response -> review -> apply */
.rt-banner{display:flex;align-items:center;justify-content:space-between;background:var(--control-selected);color:var(--app-surface);border-radius:var(--radius-panel);padding:24px 28px;gap:18px;margin-bottom:22px}.rt-banner>div{display:grid;gap:5px}.rt-banner strong{font-size:var(--type-panel-title)}.rt-banner small{font-size:var(--type-meta);color:var(--control-text)}.rt-banner>span{color:var(--control-text)}
.rt-connect{margin:0 0 18px}.rt-connect summary{display:flex;justify-content:space-between;cursor:pointer;font-size:var(--type-body-sm);gap:14px}.rt-connect summary span{color:var(--control-text)}.rt-connect-body{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-6);padding-top:20px}.rt-connect p{font-size:var(--type-helper)}.rt-path{font-family:var(--font-mono);font-size:var(--type-helper)!important;background:var(--app-surface-subtle);overflow-wrap:anywhere;padding:10px;border-radius:6px}
.rt-plan{margin-bottom:22px}.rt-routing{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.rt-routing .field{margin-bottom:12px}.rt-actions{padding-top:8px;border-top:1px solid var(--line)}
.rt-workspace{display:grid;grid-template-columns:260px minmax(0,1fr);gap:18px;align-items:start}.rt-queue{padding:17px;position:sticky;top:14px;max-height:calc(100vh - 28px);display:flex;flex-direction:column}.rt-queue h3 span{color:var(--control-text);font-weight:400}.rt-filter{display:flex;gap:5px;margin-bottom:13px;flex-wrap:wrap}.rt-task-list{overflow:auto;min-height:0;display:grid;gap:var(--space-2);max-height:620px}.rt-task{text-align:left;border:1px solid var(--line);background:var(--app-surface);border-radius:var(--radius-control);padding:var(--space-3);display:block;width:100%;position:relative}.rt-task:hover{background:var(--app-surface-subtle)}.rt-task.active{border-color:var(--control-text);background:var(--control-selected)}.rt-task small,.rt-task strong{display:block;overflow-wrap:anywhere}.rt-task small{font-size:var(--type-meta);color:var(--control-text);margin-bottom:4px}.rt-task strong{font-size:var(--type-body-sm)}.rt-task em{font-size:var(--type-body-sm);display:block;color:var(--app-warning);font-style:normal;margin-top:4px}.rt-state{display:inline-block;margin-top:8px;background:var(--app-surface-subtle);border-radius:var(--radius-compact);padding:2px 6px;font-size:var(--type-meta);color:var(--control-text)}.state-review{background:var(--control-hover);color:var(--app-warning)}.state-applied{background:var(--control-hover);color:var(--control-text)}.state-conflict{background:var(--app-surface-subtle);color:var(--app-danger)}.state-blocked{color:var(--app-muted)}.rt-detail{min-width:0;min-height:600px}.rt-id{font-size:var(--type-meta);color:var(--app-muted);overflow-wrap:anywhere}.rt-tabs{display:flex;gap:7px;border-bottom:1px solid var(--line);padding-bottom:14px;margin:15px 0 20px}.rt-request-grid{display:grid;grid-template-columns:minmax(0,1fr) 210px;gap:18px}.rt-request-grid textarea{font-size:var(--type-input);line-height:1.9;min-height:380px}.rt-request-grid aside{min-width:0}.rt-secondary{margin:12px 0 16px}.rt-brief{background:var(--app-surface-subtle);border:1px solid var(--line);padding:15px;border-radius:var(--radius-control);margin-bottom:16px;font-size:var(--type-body-sm)}.rt-brief dl{display:grid;grid-template-columns:45px 1fr;gap:9px;margin:14px 0}.rt-brief dt{color:var(--app-muted)}.rt-brief dd{margin:0}.rt-brief p{white-space:pre-line;font-size:var(--type-helper);color:var(--control-text)}.rt-reference{text-align:center;border:1px solid var(--line);padding:10px;margin:0 0 15px;border-radius:7px}.rt-reference img{width:100%;max-height:150px;object-fit:contain}.rt-empty{padding:90px 30px;text-align:center;color:var(--app-muted)}.rt-empty h3{color:var(--control-text);font-size:var(--type-empty-title);line-height:1.5;margin-top:18px}.rt-empty small{font-size:var(--type-meta);letter-spacing:2px}.rt-empty p{font-size:var(--type-helper);line-height:1.9}.small-empty{padding:50px 18px}.small-empty h3{font-size:var(--type-body-emphasis)}.rt-return{border:1px solid var(--line);padding:var(--space-4);border-radius:var(--radius-row);margin-bottom:18px}.rt-return summary{font-size:var(--type-body-sm);cursor:pointer}.rt-return pre{font-size:var(--type-mono);white-space:pre-wrap;overflow-wrap:anywhere;background:var(--app-surface-subtle);padding:var(--space-3);max-height:350px;overflow:auto}.rt-result{border:1px solid var(--line);padding:18px;border-radius:var(--radius-row);margin:14px 0}.rt-image-compare{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin:15px 0}.rt-image-compare figure{margin:0;background:var(--control-hover);border-radius:var(--radius-control);border:1px solid var(--line);overflow:hidden;text-align:center}.rt-image-compare img{height:235px;object-fit:contain;width:100%}.rt-image-compare figcaption{padding:9px;font-size:var(--type-meta);color:var(--control-text);background:var(--app-surface)}.rt-copy-compare{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:18px 0}.rt-copy-compare>div{padding:var(--space-4);background:var(--app-surface-subtle);border:1px solid var(--line);border-radius:6px}.rt-copy-compare small{font-size:var(--type-meta);color:var(--app-muted)}.rt-copy-compare h3{font-size:var(--type-workspace-title);white-space:pre-line;line-height:1.5;margin:12px 0}.rt-copy-compare p{font-size:var(--type-helper);white-space:pre-line}.rt-plan-result{display:grid;gap:10px}.rt-plan-result>div{border:1px solid var(--line);padding:var(--space-4);border-radius:6px}.rt-plan-result small{display:block;color:var(--app-muted)}.rt-plan-result strong{display:block;white-space:pre-line;margin:8px 0}.rt-plan-result p{font-size:var(--type-helper);white-space:pre-line}.rt-history>div{padding:15px 0;border-bottom:1px solid var(--line)}.rt-history small{font-size:var(--type-meta);color:var(--control-text)}.rt-history p{font-size:var(--type-helper);margin:7px 0 0}.rt-code{font-size:var(--type-code-display);letter-spacing:6px;background:var(--app-surface-subtle);color:var(--control-text);text-align:center;padding:22px;font-family:var(--font-mono);font-weight:700}
@media(max-width:1250px){.rt-request-grid{grid-template-columns:1fr}.rt-request-grid aside{display:grid;grid-template-columns:1fr 180px;gap:14px}.rt-workspace{grid-template-columns:230px minmax(0,1fr)}.rt-routing{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.rt-banner{flex-wrap:wrap}.rt-banner>div{width:42%}.rt-banner>span{display:none}.rt-workspace,.rt-connect-body,.rt-copy-compare{grid-template-columns:1fr}.rt-queue{position:static;max-height:340px}.rt-image-compare img{height:160px}.rt-request-grid aside{grid-template-columns:1fr}.rt-routing{grid-template-columns:1fr}}
/*
Copyright (c) 2021, Kil Hyung-jin (https://github.com/orioncactus/pretendard),
with Reserved Font Name Pretendard.

This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://scripts.sil.org/OFL


-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------

PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.

The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded, 
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.

DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).

"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.

"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.

PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.

2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.

3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.

5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.

TERMINATION
This license becomes null and void if any of the above conditions are
not met.

DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
*/
.extension-list{display:grid;gap:10px;margin-top:16px}.extension-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-3);align-items:center;padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius-panel);background:var(--app-surface)}.extension-item small{display:block;margin-top:4px;overflow-wrap:anywhere;color:var(--muted)}.extension-item .actions{justify-content:flex-end}.extension-icon-preview{grid-row:1;display:grid;place-items:center;width:48px;height:48px;border-radius:var(--radius-row);background:var(--control-selected);font-size:28px}.extension-item:has(.extension-icon-preview){grid-template-columns:48px minmax(0,1fr) auto}
.project-card-body h3{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-card-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto auto;margin-top:16px}.project-card-actions .btn{min-width:0;padding-inline:11px}

.canvas-toolbar-toggle{position:absolute;top:var(--space-2);left:var(--space-3);z-index:70;width:var(--control-compact-height);padding:0!important}
.canvas-toolbar[hidden]{display:none!important}

/* Document paint/hit clipping; selected screen-space controls live outside this box. */
.canvas-scroll .detail-page{overflow:hidden}
/* Bootstrap surface only; Service Shell and editor layouts own their own UI. */
.app-startup{color:var(--app-ink);background:var(--app-canvas)}
#app:has(>.app-startup,>[data-startup-pending])~:is(.mobile-menu-button,.mobile-editor-tools,.mobile-panel-backdrop){display:none}
.app-startup-content{display:flex;flex-direction:column;align-items:center;gap:var(--space-6);width:100%;max-width:400px}
.app-startup-spinner{--startup-cycle:calc(var(--motion-slow) * 5);position:relative;flex:none;width:44px;height:44px;color:var(--app-accent)}
.app-startup-spinner>span{position:absolute;top:0;left:20px;width:4px;height:11px;border-radius:var(--radius-compact);background:currentColor;transform-origin:2px 22px;transform:rotate(calc(var(--bar) * 30deg));opacity:.25;animation:app-startup-pulse var(--startup-cycle) linear infinite;animation-delay:calc(var(--bar) * var(--startup-cycle) / -12)}
.app-startup-message{margin:0;color:var(--app-muted);font-size:var(--type-body);line-height:var(--leading-body);overflow-wrap:anywhere}
.app-startup-title{margin:0;font-size:var(--type-section-title);font-weight:var(--weight-semibold);line-height:var(--leading-title)}
@keyframes app-startup-pulse{from{opacity:1}to{opacity:.25}}
@media(prefers-reduced-motion:reduce){.app-startup-spinner>span{animation:none;opacity:.65}}
