:root{--navy:#122038;--navy2:#1b2d49;--ink:#172033;--muted:#6d7889;--line:#d9dee7;--soft:#f3f5f8;--paper:#fff;--accent:#d42b2b;--accent2:#ae1e27;--green:#177b55;--amber:#a86700;--shadow:0 12px 38px rgba(21,33,52,.10)}
*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;min-height:100%;font-family:Inter,"Noto Sans KR","Segoe UI",Arial,sans-serif;color:var(--ink);background:#eef1f5}button,input{font:inherit}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topbar{height:68px;background:var(--navy);color:white;display:flex;align-items:center;justify-content:space-between;padding:0 24px;box-shadow:0 2px 8px rgba(0,0,0,.2);z-index:3}.brand{display:flex;align-items:center;gap:12px}.brand strong{font-size:17px;letter-spacing:.1px;display:block}.brand small{display:block;font-size:10px;color:#aeb9ca;letter-spacing:.8px;margin-top:2px;text-transform:uppercase}.brand-mark{width:34px;height:34px;border:2px solid #fff;display:flex;flex-direction:column;justify-content:center;gap:4px;padding:6px}.brand-mark i{height:2px;background:#fff;position:relative}.brand-mark i:after{content:"";position:absolute;width:5px;height:5px;border:1px solid #fff;background:var(--navy);border-radius:50%;top:-2px;left:6px}.brand-mark i:nth-child(2):after{left:15px}.top-actions{display:flex;align-items:center;gap:12px}.file-badge{font-size:12px;color:#b7c2d0;max-width:320px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.button{border:1px solid transparent;border-radius:4px;padding:9px 15px;font-weight:600;font-size:13px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:.16s;text-decoration:none}.button.primary{background:var(--accent);color:#fff}.button.primary:hover{background:var(--accent2)}.button.ghost{background:#fff;border-color:#cfd5df;color:#344055}.button.ghost:hover{border-color:#8e99a9;background:#f7f8fa}.button.large{padding:13px 26px;font-size:14px}.workspace{display:grid;grid-template-columns:300px 1fr;flex:1;min-height:0}.sidebar{background:#fff;border-right:1px solid #d5dae3;padding:18px 14px;display:flex;flex-direction:column;overflow:hidden}.import-card{border:1px dashed #b9c0cd;background:#f8f9fb;border-radius:6px;padding:18px 12px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:5px;transition:.18s}.import-card.drag{border-color:var(--accent);background:#fff4f4}.upload-icon{width:32px;height:32px;border-radius:50%;background:#e8ebf1;display:grid;place-items:center;font-size:18px;color:#536178}.import-card strong{font-size:13px}.import-card span{font-size:11px;color:var(--muted);line-height:1.5}.summary-grid{grid-template-columns:repeat(3,1fr);gap:1px;background:#e1e5eb;margin:14px 0;border:1px solid #e1e5eb}.summary-grid:not([hidden]){display:grid}.summary-grid div{background:white;text-align:center;padding:10px 3px}.summary-grid b{display:block;font-size:17px}.summary-grid span{font-size:10px;color:var(--muted);text-transform:uppercase}.search-wrap{display:flex;align-items:center;border:1px solid #d5dae2;border-radius:4px;margin:14px 0 10px;padding:0 9px;color:#7d8796}.search-wrap input{border:0;outline:0;width:100%;padding:9px 5px;background:transparent;font-size:12px}.routine-tree{overflow:auto;min-height:0;padding-right:3px}.empty-side{font-size:12px;color:#8b94a3;text-align:center;line-height:1.55;padding:32px 15px}.program-group{margin:4px 0}.program-head{width:100%;border:0;background:transparent;text-align:left;padding:8px 7px;display:flex;align-items:center;gap:7px;color:#344055;font-size:12px;font-weight:700;cursor:pointer}.program-head:before{content:"▾";font-size:10px;color:#768194}.program-head.closed:before{content:"▸"}.program-head span{margin-left:auto;color:#929baa;font-weight:500}.routine-list{display:flex;flex-direction:column;gap:2px}.routine-list[hidden]{display:none}.routine-item{border:0;background:transparent;border-radius:4px;text-align:left;padding:8px 8px 8px 22px;font-size:12px;display:flex;align-items:center;gap:8px;cursor:pointer;color:#4b5667;min-width:0}.routine-item:hover{background:#f0f2f6}.routine-item.active{background:#e9edf4;color:#17233a;font-weight:700;box-shadow:inset 3px 0 var(--accent)}.routine-item .mini-type{font-size:9px;border:1px solid #c6ccd6;border-radius:2px;padding:2px 4px;color:#687487}.routine-item .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main-panel{min-width:0;background:#eef1f5}.welcome{min-height:calc(100vh - 68px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:50px 24px;background:radial-gradient(circle at 50% 42%,#fff 0,#f5f7f9 40%,#e8ecf2 100%)}.welcome .eyebrow{color:var(--accent);font-size:11px;font-weight:800;letter-spacing:1.6px;margin:20px 0 9px}.welcome h1{font-family:Georgia,"Noto Serif KR",serif;font-size:42px;line-height:1.2;letter-spacing:-1.5px;margin:0 0 15px;color:#17233a}.welcome>p:not(.eyebrow){font-size:14px;color:#6c7686;line-height:1.7;margin:0 0 24px}.hero-ladder{width:460px;height:130px;position:relative;color:#28364c}.hero-ladder .rail{position:absolute;top:0;bottom:0;width:3px;background:#28364c}.hero-ladder .rail.left{left:0}.hero-ladder .rail.right{right:0}.hero-rung{position:absolute;left:0;right:0;height:2px;background:#28364c;display:flex;align-items:center;justify-content:center;gap:14px}.hero-rung.one{top:35px}.hero-rung.two{top:95px}.hero-rung i{width:72px;height:2px;background:#28364c}.hero-rung b,.hero-rung strong{background:#f6f8fa;font-style:normal;padding:0 7px;font-family:monospace;font-size:23px;white-space:nowrap}.hero-rung em{position:absolute;font-size:10px;font-style:normal;background:#f6f8fa;transform:translateY(-22px)}.hero-rung em:first-of-type{left:118px}.hero-rung em:last-of-type{right:46px}.feature-row{display:flex;gap:32px;margin-top:38px;color:#758092;font-size:11px}.feature-row b{color:#3b475b;margin-right:5px}.viewer{min-height:calc(100vh - 68px);background:#fff}.viewer-head{background:#fff;border-bottom:1px solid var(--line);padding:16px 24px 0}.breadcrumb{font-size:10px;color:#7c8797;text-transform:uppercase;letter-spacing:.4px;margin-bottom:8px}.viewer-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.title-line{display:flex;align-items:center;gap:10px}.title-line h1{font-size:22px;margin:0}.type-badge{font-size:10px;font-weight:800;border:1px solid #bdc5d0;border-radius:3px;padding:3px 6px;color:#526077}.viewer-title-row p{font-size:11px;color:#7b8595;margin:5px 0}.export-actions{display:flex;gap:7px}.tabs{display:flex;gap:24px;margin-top:12px}.tab{border:0;border-bottom:3px solid transparent;background:transparent;padding:10px 2px;font-size:12px;font-weight:700;color:#738093;cursor:pointer}.tab.active{color:var(--accent);border-color:var(--accent)}.tab span:not(:empty){display:inline-grid;place-items:center;min-width:17px;height:17px;border-radius:10px;background:#f2d7d7;color:#9c2020;margin-left:4px;font-size:9px}.tab-panel{min-height:500px}.ladder-toolbar{height:48px;display:flex;align-items:center;gap:22px;padding:0 24px;border-bottom:1px solid #e1e5eb;background:#f8f9fb;font-size:11px;color:#566173}.ladder-toolbar label{display:flex;align-items:center;gap:8px}.ladder-toolbar input[type=range]{width:100px;accent-color:var(--accent)}.toggle input{position:absolute;opacity:0}.toggle span{width:29px;height:16px;border-radius:10px;background:#bbc2cc;position:relative}.toggle span:after{content:"";position:absolute;width:12px;height:12px;left:2px;top:2px;background:#fff;border-radius:50%;transition:.15s}.toggle input:checked+span{background:var(--accent)}.toggle input:checked+span:after{left:15px}.conversion-badge{margin-left:auto;font-size:10px;padding:4px 8px;border-radius:3px;background:#e6f3ee;color:var(--green);font-weight:700}.ladder-canvas{background-color:#fff;background-image:radial-gradient(#d9dde4 .6px,transparent .6px);background-size:12px 12px;padding:24px;overflow:auto;min-height:calc(100vh - 221px)}.ladder-sheet{transform-origin:top left;transition:transform .12s;width:max-content;min-width:100%;padding-bottom:20px}.rung-card{background:rgba(255,255,255,.96);border:1px solid #d8dde5;border-radius:3px;margin-bottom:14px;box-shadow:0 2px 6px rgba(30,42,60,.05);overflow:hidden}.rung-head{height:30px;background:#f4f6f8;border-bottom:1px solid #e0e4ea;padding:0 10px;display:flex;align-items:center;gap:10px;font-size:10px;color:#667184}.rung-number{font-weight:800;color:#26344b}.rung-comment{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rung-warning{margin-left:auto;color:#9e6400}.rung-svg-wrap{padding:10px 12px 4px;overflow:visible}.rung-source{font:10px/1.5 "SFMono-Regular",Consolas,monospace;background:#f7f8fa;border-top:1px solid #e3e6eb;padding:7px 10px;color:#5c6675;white-space:pre-wrap;word-break:break-all}.source-panel{padding:24px;background:#1c2430;min-height:calc(100vh - 173px)}.source-panel pre{margin:0;color:#e0e6ef;font:12px/1.7 "SFMono-Regular",Consolas,monospace;white-space:pre-wrap;word-break:break-word}.report-panel{padding:24px;background:#f4f6f8}.report-card{max-width:900px;background:#fff;border:1px solid var(--line);border-radius:5px;margin-bottom:12px;padding:16px}.report-card h3{font-size:13px;margin:0 0 8px}.report-card p,.report-card li{font-size:12px;line-height:1.6;color:#596475}.report-card ul{margin:8px 0;padding-left:20px}.report-ok{color:var(--green)}.report-warn{color:var(--amber)}.toast{position:fixed;right:20px;bottom:20px;z-index:20;background:#17233a;color:#fff;border-radius:4px;padding:11px 15px;font-size:12px;box-shadow:var(--shadow);opacity:0;transform:translateY(8px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}
.button.dark{background:#263650;border-color:#53637a;color:#fff}.button.dark:hover{background:#344762}.ladder-canvas{padding:14px}.rung-svg-wrap{padding:6px 4px 2px}.text-dialog{width:min(780px,calc(100vw - 28px));border:0;border-radius:7px;padding:0;background:#fff;color:var(--ink);box-shadow:0 24px 80px rgba(10,20,35,.32)}.text-dialog::backdrop{background:rgba(13,23,40,.58)}.text-dialog form{margin:0}.text-dialog header{display:flex;align-items:flex-start;justify-content:space-between;padding:19px 22px 16px;border-bottom:1px solid var(--line);background:#f7f8fa}.text-dialog header strong{display:block;font-size:16px}.text-dialog header span{display:block;color:var(--muted);font-size:11px;margin-top:5px}.dialog-close{border:0;background:transparent;color:#637083;font-size:24px;line-height:1;cursor:pointer}.dialog-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:18px 22px 12px}.dialog-fields label,.logic-input-label{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:700;color:#4f5b6d}.dialog-fields select,.dialog-fields input{border:1px solid #cfd5df;border-radius:4px;background:#fff;padding:9px;color:var(--ink)}.logic-input-label{padding:0 22px 18px}.logic-input-label textarea{min-height:300px;resize:vertical;border:1px solid #c6cdd8;border-radius:4px;padding:13px;background:#182231;color:#e9eef6;font:12px/1.65 "SFMono-Regular",Consolas,monospace;tab-size:4}.text-dialog footer{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 22px;border-top:1px solid var(--line);background:#f7f8fa}.text-dialog footer span{font-size:10px;color:var(--muted)}
@media(max-width:850px){.workspace{grid-template-columns:230px 1fr}.sidebar{padding:12px 9px}.viewer-title-row{flex-direction:column}.export-actions{align-self:stretch}.file-badge{display:none}.feature-row{gap:14px}.hero-ladder{width:min(460px,86vw)}}
@media(max-width:620px){.topbar{padding:0 12px}.brand small{display:none}.workspace{display:block}.sidebar{max-height:270px;border-right:0;border-bottom:1px solid var(--line)}.import-card,.summary-grid{display:none!important}.routine-tree{max-height:160px}.welcome{min-height:calc(100vh - 338px)}.welcome h1{font-size:32px}.feature-row{flex-direction:column;gap:8px}.viewer-head{padding:12px 14px 0}.viewer-title-row{gap:10px}.export-actions{flex-wrap:wrap}.ladder-toolbar{padding:0 12px;gap:10px;flex-wrap:wrap;height:auto;min-height:48px}.conversion-badge{display:none}.ladder-canvas{padding:12px}.tabs{gap:15px}.hero-ladder{display:none}}
@media print{.topbar,.sidebar,.viewer-head,.ladder-toolbar{display:none!important}.workspace{display:block}.main-panel,.viewer,.ladder-canvas{background:#fff!important;padding:0!important}.rung-card{break-inside:avoid;box-shadow:none}.rung-source{display:none}.ladder-sheet{transform:none!important}.toast{display:none}}
.dialog-fields{grid-template-columns:1fr}
