/* Hallmark · workshop workbench · Korean paper / ink / copper · P5 H5 E5 S5 R5 V5 */
:root{--paper:#f6f0e2;--white:#fffdf7;--ink:#243f38;--muted:#64756a;--line:#d6d4c2;--sea:#285d53;--sea-light:#e5eee2;--accent:#e9a36a;--accent-dark:#5d3b23;--danger:#a54f3a;--danger-soft:#fae9df;--shadow:#263e3510;--black:#000;--opening-white:#fff;--c0:#427563;--c1:#ba7753;--c2:#6c7fac;--c3:#a57592;--c4:#a89242;--c5:#5f9a9a;--c6:#a66a58;--c7:#737f53;--font:system-ui,'Malgun Gothic',sans-serif;--ease:cubic-bezier(.16,1,.3,1)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:clip;background:var(--ink);font-family:var(--font);color:var(--ink)}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;border:1px solid var(--line);border-radius:8px;background:var(--white);font-weight:650;padding:10px 13px;min-height:40px;white-space:nowrap;touch-action:manipulation;transition:background .15s var(--ease),transform .15s var(--ease)}button:hover:not(:disabled){background:var(--sea-light)}button:active:not(:disabled){transform:translateY(1px)}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible,summary:focus-visible{outline:3px solid var(--sea);outline-offset:3px}button:disabled{opacity:.4;cursor:not-allowed}.dark{background:var(--sea);color:var(--white);border-color:var(--sea)}button.dark:hover:not(:disabled){background:var(--ink)}.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-dark);box-shadow:0 3px 0 color-mix(in srgb,var(--accent) 70%,var(--accent-dark))}button.primary:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 80%,var(--white))}.danger{color:var(--danger)}.text-button{border-color:transparent;background:transparent;min-height:34px;padding:5px 9px;color:var(--sea)}.icon-button{min-width:40px;padding:8px}.sr-only{position:absolute;width:1px;height:1px;overflow:clip;clip-path:inset(50%)}[hidden]{display:none!important}h1,h2,h3,p{margin:0}h1,h2,h3{font-style:normal}a{color:inherit}input,select,textarea{border:1px solid var(--line);border-radius:7px;background:var(--white);padding:9px 10px}input[aria-invalid=true]{border-color:var(--danger)}#viewport{position:fixed;inset:0;overflow:clip}#stage{position:absolute;left:50%;top:50%;width:1280px;height:800px;transform-origin:center;background:var(--paper);overflow:clip}header{height:74px;padding:0 27px;display:flex;align-items:center;gap:23px;border-bottom:1px solid var(--line);background:var(--white)}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;white-space:nowrap}.brand b{font-size:25px;letter-spacing:-2px}.brand b span{font-size:12px;letter-spacing:-.5px;margin-left:3px;color:var(--sea)}.brand strong{font-size:19px;letter-spacing:-1px;border-left:1px solid var(--line);padding-left:10px}.project-heading{display:flex;gap:10px;align-items:center;flex:1;min-width:0}#project-title{width:230px;background:transparent;border-color:transparent;font-size:16px;font-weight:650;padding:9px 6px;text-overflow:ellipsis}#project-title:hover{border-color:var(--line)}#save-status{font-size:11px;color:var(--muted);max-width:102px;line-height:1.4}header nav{display:flex;gap:6px;align-items:center}header nav button{font-size:13px;padding:9px 11px}.workbench-caption{height:64px;padding:0 29px;display:flex;align-items:center;justify-content:space-between;font-size:14px;color:var(--muted)}.workbench-caption>div{display:flex;gap:17px;align-items:center}.caption-label{color:var(--sea);font-weight:750;border:1px solid var(--line);border-radius:5px;padding:6px 9px;font-size:12px;background:color-mix(in srgb,var(--white) 70%,transparent)}.workbench-caption button{font-size:13px}#workbench{display:grid;grid-template-columns:minmax(0,1.66fr) minmax(0,.79fr) minmax(0,1fr);gap:22px;height:620px;padding:0 28px 17px}.collect-column,.train-column,.test-column{min-width:0;overflow:auto;scrollbar-width:thin;scrollbar-color:var(--line) transparent;padding:0 3px 7px}.column-heading{display:flex;align-items:end;justify-content:space-between;gap:10px;min-height:49px;margin-bottom:14px;position:sticky;top:0;background:var(--paper);z-index:3;padding-bottom:7px}.column-heading>div{display:flex;gap:10px;align-items:center}.step{font-size:11px;background:var(--sea-light);color:var(--sea);border-radius:50%;width:27px;height:27px;display:grid;place-content:center}.column-heading h1,.column-heading h2{font-size:22px;letter-spacing:-1px}.column-heading>span{font-size:11px;color:var(--muted);padding-bottom:3px}.class-card{--class-color:var(--c0);background:var(--white);border:1px solid var(--line);border-radius:13px;margin-bottom:13px;position:relative;box-shadow:0 4px 10px var(--shadow)}[data-color="0"]{--class-color:var(--c0)}[data-color="1"]{--class-color:var(--c1)}[data-color="2"]{--class-color:var(--c2)}[data-color="3"]{--class-color:var(--c3)}[data-color="4"]{--class-color:var(--c4)}[data-color="5"]{--class-color:var(--c5)}[data-color="6"]{--class-color:var(--c6)}[data-color="7"]{--class-color:var(--c7)}.class-card.dragging{outline:3px solid var(--sea);background:var(--sea-light)}.class-top{display:flex;align-items:center;gap:9px;padding:10px 12px;border-bottom:1px solid var(--line)}.class-dot{width:11px;height:11px;border-radius:4px;background:var(--class-color);flex-shrink:0}.class-name{font-size:16px;font-weight:750;border-color:transparent;padding:5px 3px;width:100%;min-width:0;background:transparent}.class-name:hover{border-color:var(--line)}.class-count{font-size:12px;white-space:nowrap;color:var(--muted)}.class-remove{border-color:transparent;background:transparent;padding:4px;min-height:31px;min-width:31px;color:var(--muted)}.class-images{padding:11px;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;max-height:157px;overflow:auto;scrollbar-width:thin}.thumbnail{padding:0;border-radius:6px;min-height:0;aspect-ratio:1;overflow:clip;border:1px solid var(--line)}.thumbnail img{width:100%;height:100%;object-fit:cover;display:block}.class-empty{padding:22px 12px 15px;text-align:center;color:var(--muted);font-size:13px;line-height:1.7;min-height:91px;background:repeating-linear-gradient(0deg,transparent 0 24px,color-mix(in srgb,var(--line) 18%,transparent) 24px 25px)}.class-empty span{font-size:21px;color:var(--class-color);display:block;margin-bottom:3px}.class-tools{display:flex;gap:7px;padding:10px 11px}.class-tools button{flex:1;min-width:0;font-size:12px;min-height:35px;padding:8px 9px}.class-tools button:first-child{background:color-mix(in srgb,var(--class-color) 9%,var(--white));border-color:color-mix(in srgb,var(--class-color) 40%,var(--line))}.add-class{width:100%;border:1px dashed var(--line);background:transparent;font-size:14px;min-height:46px;margin:1px 0 10px}.column-note{font-size:11px;line-height:1.7;color:var(--muted);padding:0 6px}.training-card{border:1px solid var(--line);background:color-mix(in srgb,var(--white) 70%,var(--paper));border-radius:13px;padding:18px 16px;min-height:461px;text-align:center;position:relative}.stamp-art{height:165px;position:relative}.stamp-art svg{width:174px;height:148px;fill:var(--sea-light);stroke:var(--sea);stroke-width:2;stroke-linejoin:round}.stamp-art svg circle{fill:var(--accent);stroke:var(--sea)}.stamp-art svg .art-rays{fill:none;stroke:var(--muted);stroke-width:1.5}.stamp-word{position:absolute;left:0;right:0;bottom:1px;font-size:11px;letter-spacing:3px;font-weight:750;color:var(--sea)}.model-state{font-size:17px;font-weight:750;line-height:1.5;margin:13px 0 8px}.model-state.ready{color:var(--sea)}.model-state.error{color:var(--danger)}.training-guide{font-size:12px;line-height:1.8;color:var(--muted);min-height:46px;margin-bottom:16px}.training-card>button{width:100%;margin-bottom:9px;font-size:14px;min-height:47px}.training-settings{text-align:left;border-top:1px solid var(--line);padding-top:14px;margin-top:9px;font-size:11px;color:var(--muted)}summary{cursor:pointer;line-height:1.6}.training-settings label{display:block;margin:12px 0 6px}.training-settings select{width:100%;font-size:12px;padding:8px}.training-settings p{font-size:11px;line-height:1.8;margin-top:10px}.training-tip{text-align:left;border-top:1px solid var(--line);margin-top:16px;padding-top:14px;font-size:11px;color:var(--muted);line-height:1.8}.training-tip b{color:var(--ink);font-weight:650}.training-tip p{margin-top:4px}#training-status{font-size:12px;line-height:1.7;min-height:38px;margin:7px 0}.progress{height:7px;background:var(--line);border-radius:5px;overflow:clip;margin:9px 0 15px}.progress span{display:block;width:0;height:100%;background:var(--sea);transition:width .15s var(--ease)}.test-card{border:1px solid var(--line);border-radius:13px;background:var(--white);padding:12px}.test-drop{height:190px;border:1px dashed var(--line);border-radius:8px;display:grid;place-content:center;overflow:clip;cursor:pointer;background:color-mix(in srgb,var(--sea-light) 20%,var(--white))}.test-drop.dragging{outline:3px solid var(--sea)}#test-placeholder{display:flex;flex-direction:column;align-items:center;gap:10px;font-size:11px;color:var(--muted)}#test-placeholder b{font-size:13px;color:var(--ink)}.test-spark{font-size:42px;color:var(--sea);line-height:1.2}#test-image{width:100%;height:190px;object-fit:contain;display:block}.test-actions{display:flex;gap:6px;margin:10px 0 15px}.test-actions button{flex:1;font-size:12px;min-height:36px;padding:8px}.test-empty{font-size:12px;color:var(--muted);text-align:center;line-height:1.9;margin:18px 0}.result-title{font-size:15px;font-weight:750;margin:10px 0 13px;line-height:1.6;overflow-wrap:anywhere}.result-row{margin-bottom:10px;--class-color:var(--c0)}.result-caption{display:flex;justify-content:space-between;gap:8px;font-size:12px;margin-bottom:5px}.result-caption span:first-child{min-width:0;overflow-wrap:anywhere}.result-caption strong{font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}.result-track{height:7px;border-radius:5px;background:var(--paper);overflow:clip}.result-track>span{display:block;height:100%;background:var(--class-color);transition:width .2s var(--ease)}.test-note{font-size:10px;line-height:1.8;color:var(--muted);margin-top:13px}.test-note.known{color:var(--accent-dark);background:color-mix(in srgb,var(--accent) 20%,var(--white));padding:8px;border-radius:6px}#add-test-to-class{border-top:1px solid var(--line);padding-top:12px;margin-top:12px}#add-test-to-class label{font-size:11px;display:block;margin-bottom:7px}.inline-control{display:flex;gap:7px}.inline-control select{min-width:0;flex:1;font-size:12px;padding:7px}.inline-control button{font-size:12px;min-height:35px}.memo{padding:14px 3px 0}.memo label{font-size:12px;font-weight:650}.memo textarea{margin-top:7px;width:100%;height:74px;resize:vertical;font-size:12px;background:color-mix(in srgb,var(--white) 55%,var(--paper));line-height:1.7}footer{height:42px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 28px;color:var(--muted);font-size:11px}footer>div{display:flex;align-items:center;gap:8px}footer button{min-height:30px;padding:4px 8px;border-color:transparent;background:transparent;font-size:11px}footer a{text-decoration:none;margin-left:9px}#toast{position:absolute;left:50%;bottom:55px;transform:translateX(-50%);background:var(--ink);color:var(--white);padding:11px 22px;border-radius:25px;font-size:13px;line-height:1.6;max-width:1000px;z-index:90;pointer-events:none;opacity:0;transition:opacity .15s var(--ease)}#toast.visible{opacity:1}#modal-backdrop{position:absolute;inset:0;background:color-mix(in srgb,var(--ink) 65%,transparent);z-index:50;display:grid;place-items:center}#modal{background:var(--paper);border-radius:17px;width:780px;max-height:724px;padding:23px;overflow:auto;box-shadow:0 20px 80px var(--shadow)}.modal-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px}.modal-heading h2{font-size:23px;letter-spacing:-1px}.modal-heading button{font-size:12px;min-height:34px}#modal-content p{font-size:14px;line-height:1.9;margin:12px 0}#modal-content .row{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin:16px 0}#modal-content button{font-size:13px}.project-list-item{display:flex;justify-content:space-between;gap:15px;padding:15px 0;border-bottom:1px solid var(--line);align-items:center}.project-list-item h3{font-size:17px;overflow-wrap:anywhere}.project-list-item p{font-size:12px!important;margin:4px 0!important;color:var(--muted)}.project-list-item>div{min-width:0}.project-list-item .row{flex-shrink:0;margin:0!important}.camera-video{display:block;width:100%;height:390px;background:var(--ink);object-fit:contain;border-radius:10px}.camera-live-result{font-size:16px!important;font-weight:700;text-align:center;min-height:31px}.drawing-canvas{display:block;width:100%;height:auto;aspect-ratio:640/420;background:var(--white);border:1px solid var(--line);border-radius:8px;touch-action:none}.draw-tools{display:flex;gap:7px;align-items:center;margin:12px 0}.draw-tools .color-swatch{width:36px;height:36px;min-height:36px;padding:4px;border:2px solid var(--line);background:var(--swatch)}.draw-tools .color-swatch[aria-pressed=true]{outline:3px solid var(--sea);outline-offset:2px}.large-preview{display:block;max-width:100%;max-height:440px;object-fit:contain;margin:0 auto;border-radius:10px}.move-controls{display:flex;gap:8px;align-items:center;margin-top:16px}.move-controls select{flex:1;min-width:0}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.help-grid h3{font-size:17px;margin-top:8px}.help-grid p{font-size:13px!important}.status-error{color:var(--danger)!important}.busy{opacity:.65;pointer-events:none}#opening{position:absolute;inset:0;background:var(--black);z-index:100;display:grid;place-items:center}#opening canvas{width:1280px;height:720px;image-rendering:pixelated}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
#modal{position:relative}.drawing-canvas{width:580px;max-width:100%;margin:0 auto}
/* Hallmark · pre-emit critique: P5 H4 E4 S5 R5 V4 */
.data-review{border-top:1px solid var(--line);padding:10px 4px 5px;margin-bottom:7px}.data-review p{font-size:12px;line-height:1.7;color:var(--muted)}.data-review p.attention{color:var(--accent-dark)}.data-review button{font-size:12px;padding-left:0}.input-comparison{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.input-comparison figure{margin:0;min-width:0;text-align:center}.input-comparison img{width:100%;height:250px;object-fit:contain;background:var(--white);border:1px solid var(--line);border-radius:9px}.input-comparison figcaption{margin:10px 0;font-size:13px;color:var(--muted)}#modal-content .preview-note{font-size:13px;color:var(--muted)}.review-list>div{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding:13px 0;font-size:14px;overflow-wrap:anywhere}.review-list span{color:var(--muted);white-space:nowrap}.review-attention{color:var(--danger)}#input-preview{font-size:11px;padding:3px 0;min-height:28px;max-width:100%}.field-label{display:block;font-size:13px;margin:14px 0 7px}#activity-title{width:100%}.activity-options{border:0;margin:17px 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.activity-options legend{font-size:13px;margin-bottom:10px}.activity-options label{display:flex;gap:9px;align-items:flex-start;padding:15px;border:1px solid var(--line);border-radius:10px;cursor:pointer;background:var(--white)}.activity-options label:has(input:checked){border-color:var(--sea);background:var(--sea-light)}.activity-options input{margin:3px 0 0;accent-color:var(--sea)}.activity-options b{font-size:15px}.activity-options small{display:block;font-size:12px;color:var(--muted);line-height:1.8;margin-top:5px}.message-field{display:block;font-size:13px;margin:12px 0}.message-field input{width:100%;margin-top:5px}.export-note{font-size:12px!important;color:var(--muted);background:var(--sea-light);border-radius:8px;padding:12px}#activity-status{font-size:12px;line-height:1.7;color:var(--muted);max-width:340px}.model-file-details{border-top:1px solid var(--line);padding-top:12px;font-size:12px}.model-file-details p{font-size:12px!important;color:var(--muted)}#use-ai{font-size:12px;min-height:40px;background:var(--sea-light);border-color:var(--line)}
