:root{font-family:Inter,'Noto Sans KR',system-ui,sans-serif;color:#25344a;background:#f4f6fa;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a{cursor:pointer}button{border:1px solid #d6deea;background:#fff;color:#25344a;border-radius:7px;padding:9px 13px}button:hover{background:#edf3fc}button.primary{background:#225fc5;color:white;border-color:#225fc5}button.danger{color:#a32727}input,select,textarea{padding:9px;border:1px solid #cfd8e5;border-radius:6px;background:white;color:inherit;max-width:100%;width:100%}input[type=checkbox]{width:auto}textarea{min-height:75px}label{display:block;font-size:12px;color:#56667c}label input,label select,label textarea{margin-top:6px}h1{font-size:23px;margin:0 0 6px}h2{font-size:17px;margin:0 0 16px}h3{font-size:14px;margin:16px 0 10px}a{color:#225fc5;text-decoration:none}.shell{display:grid;grid-template-columns:190px 1fr;min-height:100vh}.sidebar{background:#192b47;color:#d7e3f8;padding:25px 16px}.brand{font-size:19px;color:white;margin-bottom:25px}.sidebar button{display:block;width:100%;text-align:left;background:transparent;border:0;color:inherit;margin:5px 0}.sidebar button.active{background:#2c466b;color:white}.main{min-width:0}.topbar{background:white;border-bottom:1px solid #e0e6f0;padding:15px 25px;display:flex;gap:14px;align-items:center}.topbar input{max-width:560px}.content{padding:24px}.muted{color:#697991;font-size:12px}.panel{background:white;border:1px solid #e0e6f0;border-radius:10px;padding:20px;margin:16px 0}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.between{justify-content:space-between}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px}.split{display:grid;grid-template-columns:minmax(0,1fr) 295px;gap:18px}.summary{position:sticky;top:15px;align-self:start}.summary dl{margin:0}.summary dt{color:#697991}.summary dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}.sumrow{display:flex;justify-content:space-between;padding:10px 0;gap:12px}.profit{border-top:1px solid #e0e6f0;padding-top:18px;margin-top:12px}.profit strong{display:block;font-size:27px;color:#225fc5}.negative{color:#ae2f39!important}.scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;background:#f5f7fb;color:#586a83;font-weight:500}th,td{padding:12px 10px;border-bottom:1px solid #e7ecf3;vertical-align:top}td input,td select{min-width:85px}.num{text-align:right;font-variant-numeric:tabular-nums}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.tabs .active{background:#225fc5;color:white}.badge{display:inline-block;padding:3px 7px;border-radius:5px;background:#edf2fa;font-size:12px;margin:2px}.actions{display:flex;gap:6px;flex-wrap:wrap}details{margin:12px 0}summary{cursor:pointer}dialog{border:0;border-radius:12px;box-shadow:0 20px 60px #0004;width:min(900px,95vw);max-height:90vh;padding:25px}dialog::backdrop{background:#18263f80}.auth{max-width:430px;margin:10vh auto;padding:30px}.auth label{margin:15px 0}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#192b47;color:white;padding:12px 20px;border-radius:8px;display:none;max-width:90vw;z-index:10}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.cards strong{font-size:25px;display:block}.empty{text-align:center;color:#697991;padding:30px}.checks{display:flex;flex-wrap:wrap;gap:14px;padding:10px 0}.checks label{display:flex;align-items:center;gap:5px}.warn{padding:12px;background:#fff4dc;color:#735319;border-radius:6px}.mobile-only{display:none}@media(max-width:1000px){.split{grid-template-columns:1fr}.summary{position:static}.shell{grid-template-columns:155px 1fr}.content{padding:16px}}@media(max-width:650px){.shell{display:block}.sidebar{padding:12px;display:flex;gap:4px;flex-wrap:wrap}.brand{width:100%;margin:0 0 8px}.sidebar button{width:auto;padding:8px}.topbar{padding:12px}.topbar .user{display:none}.content{padding:12px}.cards{grid-template-columns:1fr}.panel{padding:14px}.mobile-only{display:block}button{min-height:40px}input,select,textarea{font-size:16px}.desktop-label{display:none}}

@media(max-width:650px){.scroll table{min-width:680px}.quote-table{display:none}.quote-cards{display:block}}
@media(min-width:651px){.quote-cards{display:none}}
.quote-card{padding:14px 0;border-bottom:1px solid #e7ecf3}.quote-card strong{display:block;margin:6px 0}
.brand{display:flex;align-items:center;gap:9px}.brand img{flex-shrink:0;border-radius:7px}.auth-logo{display:block;border-radius:14px;margin-bottom:18px}.topbar #install-app{white-space:nowrap;flex-shrink:0}.topbar #logout{white-space:nowrap;flex-shrink:0}@media(max-width:650px){.topbar{flex-wrap:wrap}.topbar #global-search{flex:1 1 100%;max-width:none}.topbar #install-app{margin-left:auto}}

/* Keep the close control visible while scrolling long detail forms. */
#modal{padding:0;overflow-y:auto;overscroll-behavior:contain}
.modal-toolbar{position:sticky;top:0;z-index:5;display:flex;justify-content:flex-end;padding:10px 16px;background:#fff;border-bottom:1px solid #e0e6f0}
#modal-close{min-height:44px;min-width:86px;font-weight:600}
#modal-close span{margin-left:6px;font-size:20px;line-height:1}
#modal-body{padding:20px 25px 25px}
@media(max-width:650px){#modal-body{padding:16px}.modal-toolbar{padding:8px 12px}}

/* Equipment licenses stay inside the parent quotation card. */
.equipment-licenses{margin-top:18px;padding-top:14px;border-top:1px solid var(--border,#dce2e8)}
.equipment-licenses h3{font-size:14px;margin:0 0 12px}
.equipment-licenses .linked-license-card{margin:10px 0 0;background:var(--bg,#f5f7fa);box-shadow:none}

/* Live money summaries in the quotation editor. */
.quote-money-overview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:20px 0}
.quote-money-tile{background:#fff;border:1px solid #dce4ef;border-radius:12px;padding:20px;min-width:0}
.quote-money-tile>span,.line-money span{display:block;font-size:12px;color:#52627a;font-weight:600;margin-bottom:8px}
.quote-money-tile strong{display:block;font-size:clamp(22px,2.3vw,32px);font-weight:750;line-height:1.25;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.quote-money-tile small,.line-money small{font-size:12px;margin-left:5px;font-weight:500}
.quote-money-tile.sale{background:#edf4ff;border-color:#b9d0f4}.quote-money-tile.sale strong{color:#194d9f}
.quote-money-tile.gain{background:#eff8f3;border-color:#b8dac8}.quote-money-tile.gain strong{color:#176b48}
.quote-money-tile.loss{background:#fff1f2;border-color:#ecc0c4}.quote-money-tile.loss strong{color:#a32939}
.quote-money-tile>div{font-size:12px;margin-top:8px;color:#52627a}
.quote-workspace{grid-template-columns:minmax(0,1fr) 340px}
.quote-workspace>section,.quote-workspace .summary{min-width:0}
.quote-workspace .summary input[type=number],#quote-lines input[data-line$=":cost"],#quote-lines input[data-line$=":manual"]{font-size:18px;font-weight:650;font-variant-numeric:tabular-nums;text-align:right}
.line-money{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.line-money>div{padding:12px;background:#f5f7fb;border:1px solid #e0e6ef;border-radius:8px;min-width:0}
.line-money strong{font-size:19px;color:#25344a;display:block;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.line-money .sale{background:#edf4ff;border-color:#c2d5f1}.line-money .sale strong{color:#194d9f}
.quote-workspace .summary .sumrow{align-items:center;flex-wrap:wrap;border-bottom:1px solid #edf0f5}
.quote-workspace .summary .sumrow>strong,.quote-workspace .summary .sumrow>span{font-variant-numeric:tabular-nums;font-size:16px;overflow-wrap:anywhere}
.quote-workspace .summary .quote-final-amount{margin-top:10px;padding:15px 12px;background:#edf4ff;border-radius:8px;border:1px solid #bfd2ee;color:#194d9f}
.quote-workspace .summary .quote-final-amount strong{font-size:23px}
.quote-workspace .summary .profit{padding:16px;border-radius:8px;background:#f5f8fc}
.quote-workspace .summary .profit strong{font-size:30px;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.equipment-money-total{padding:14px;border:1px solid #bed1ed;background:#edf4ff;border-radius:8px;margin-bottom:16px;color:#23456e}
.equipment-money-total>span{display:block;font-weight:650;margin-bottom:8px}.equipment-money-total>div{display:flex;gap:7px;flex-wrap:wrap;align-items:baseline;font-variant-numeric:tabular-nums}
.equipment-money-total strong{font-size:20px}.equipment-money-total small{display:block;font-size:11px;color:#52627a;margin-top:6px}
@media(max-width:1150px){.quote-workspace{grid-template-columns:1fr}.quote-workspace .summary{position:static}.line-money{grid-template-columns:repeat(2,minmax(0,1fr))}.line-money>div:last-child{grid-column:1/-1}}
@media(max-width:650px){.quote-money-overview{grid-template-columns:1fr;gap:10px;margin:16px 0}.quote-money-tile{padding:16px}.quote-money-tile strong{font-size:27px}.line-money strong{font-size:18px}.linked-license-card .line-money{grid-template-columns:1fr}.linked-license-card .line-money>div:last-child{grid-column:auto}.equipment-money-total strong{font-size:19px}}

.unit-detail{margin:16px 0}.unit-detail table{min-width:1050px}.unit-detail td input{min-width:85px}.unit-detail td:nth-child(2),.unit-detail td:nth-child(3){min-width:150px}#unit-totals{margin:16px 0}

#modal.unit-modal{width:min(1320px,95vw)}.unit-detail table{min-width:1200px}.unit-detail td.num{white-space:nowrap}.unit-detail td .muted{white-space:normal;min-width:105px}.unit-detail td button{white-space:nowrap}.unit-detail th{white-space:nowrap}.unit-detail td:nth-child(5){min-width:110px}.unit-detail td:nth-child(10){min-width:130px}

#quote-lines .compact-quote-card{padding:10px 14px;margin:0;border-radius:0;border-bottom:0}#quote-lines>.compact-quote-card:last-child{border-bottom:1px solid #e0e6f0}.compact-quote-head{display:flex;flex-wrap:nowrap;gap:12px;align-items:center}.compact-quote-head>strong{display:flex;align-items:center;gap:6px;flex:1;min-width:180px}.quote-row-toggle{padding:4px 8px;min-width:30px;flex-shrink:0}.compact-quote-values{display:flex;gap:18px;font-size:12px;white-space:nowrap}.compact-quote-values strong{font-size:13px}.compact-quote-head .actions{flex-wrap:nowrap;white-space:nowrap}.compact-quote-body{padding:14px 0}.compact-quote-body[hidden]{display:none!important}#quote-lines .equipment-licenses{margin:8px 0 0 22px;padding:0;border-left:3px solid #c2d5f1}#quote-lines .equipment-licenses>h3{display:none}#quote-lines .equipment-licenses>.equipment-money-total{display:none}#quote-lines .linked-license-card{margin:0;border:0;border-top:1px solid #e0e6f0;background:#f5f8fc}@media(max-width:1100px){.compact-quote-head{flex-wrap:wrap}.compact-quote-head>strong{min-width:0;flex-basis:45%}.compact-quote-values{flex-wrap:wrap;gap:8px 16px}.compact-quote-head .actions{margin-left:auto}}@media(max-width:650px){.compact-quote-head>strong{flex-basis:100%}.compact-quote-values{width:100%;justify-content:space-between}.compact-quote-head .actions{flex-wrap:wrap}#quote-lines .equipment-licenses{margin-left:12px}}

.construction-workspace>section,.construction-workspace .panel{min-width:0}.construction-workspace [data-con-result] .scroll{max-width:100%;margin:12px 0}.construction-workspace [data-material-margin]{min-width:85px;width:95px}.construction-workspace td.num{white-space:nowrap}

.con-project-group{border:1px solid #dce4ef;border-radius:10px;padding:16px;margin:16px 0;background:#f8faff}.con-project-group>summary{font-size:16px}.con-family-group{padding:14px;background:white;border:1px solid #e0e6f0;border-radius:8px;margin:14px 0}.con-family-group>summary{font-size:14px}.con-family-group .num{white-space:nowrap}@media(max-width:650px){.con-project-group{padding:12px}.con-family-group{padding:10px}}
