/* Onyx · contract screens — ledger, folio, portfolio */
.ct-draft{--c:#8a8074}.ct-wait{--c:var(--warn)}.ct-review{--c:var(--info)}.ct-done{--c:var(--ok)}
.o-state.ct-draft{color:var(--muted)}.o-state.ct-wait{color:var(--warn);border-color:rgba(217,161,91,.45)}.o-state.ct-review{color:var(--info);border-color:rgba(143,179,201,.45)}.o-state.ct-done{color:var(--ok);border-color:rgba(157,196,160,.45)}
.ct-serif{font-family:var(--font-serif),serif;font-size:1.15em;letter-spacing:-.01em}.ct-serif.gold{color:var(--gold)}
.ct-hero{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:end;padding-bottom:26px;border-bottom:1px solid var(--line);margin-bottom:20px}
.ct-hero .o-big.small{font-size:60px}
.ct-hero.portfolio{grid-template-columns:1.2fr 1fr}.ct-hero.portfolio .o-big.small{font-size:44px}
.ct-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.ct-search{display:flex;align-items:center;gap:8px;height:32px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--muted)}.ct-search input{border:0;background:none;outline:0;color:var(--text);font-size:13px;width:200px}.ct-search .icon{width:14px;height:14px}
.ct-select{height:32px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);font-size:12.5px}
.ct-count{margin-left:auto;font-size:12px;color:var(--muted)}
.ct-ledger{border:1px solid var(--line);border-radius:12px;background:var(--surface);overflow:auto}
.ct-table{min-width:1180px}.ct-table th{white-space:nowrap}.ct-table td{white-space:nowrap}
.ct-table th.ct-group{text-align:center;border-left:1px solid var(--line)}
.ct-check{width:36px;text-align:center}.ct-check input{accent-color:var(--gold);width:14px;height:14px;margin:0}
.ct-sticky{position:sticky;left:0;background:var(--surface);z-index:1;box-shadow:1px 0 0 var(--line);min-width:280px}
.ct-table thead th.ct-sticky{z-index:2;background:var(--surface)}
.ct-link{display:flex;align-items:center;gap:10px;text-align:left;color:var(--text);width:100%}
.ct-no{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;background:var(--gold-soft);color:var(--gold);font-size:11px;flex-shrink:0}
.ct-link strong{display:block;font-weight:500}.ct-link small{display:block;font-size:11px;color:var(--muted);margin-top:1px}
.ct-table td small{display:block;color:var(--muted);font-size:11px;margin-top:2px}
.ct-table td.r,.ct-table th.r{text-align:right}
.ct-dim{color:var(--muted)}
.ct-gold-bar{width:72px;height:4px;border-radius:2px;background:#2a2621;overflow:hidden;display:inline-block;vertical-align:middle;margin-right:6px}.ct-gold-bar i{display:block;height:100%;width:var(--p);background:var(--gold);border-radius:2px}
.ct-gold-bar.big{width:100%;height:6px;margin:8px 0 0}
.ct-table tr.selected td{background:rgba(212,178,115,.08)}
.ct-table tbody tr:hover td{background:var(--hover)}
.ct-expanded td{background:var(--raised)!important;padding:14px 14px 16px 60px!important;white-space:normal!important}
.ct-expanded div{display:flex;flex-wrap:wrap;gap:12px 28px;align-items:center}.ct-expanded span{display:grid;gap:2px;font-size:13px}.ct-expanded small{font-size:11px;color:var(--muted)}.ct-expanded button:first-of-type{margin-left:auto}
.ct-table tfoot td{background:var(--raised);font-weight:500;font-size:12.5px;padding:12px 10px;border-top:1px solid var(--line-strong)}
.ct-total td{color:var(--gold)}
.ct-empty{padding:44px 20px!important;text-align:center;color:var(--muted);white-space:normal!important}
.ct-pager{display:flex;align-items:center;justify-content:space-between;margin-top:12px;font-size:12px}
.ct-folio-box{display:grid;gap:8px;margin-top:16px;padding:14px 16px;border:1px solid var(--line);border-radius:10px;background:var(--raised)}
.ct-folio-line{display:flex;align-items:baseline;gap:10px;font-size:13px}.ct-folio-line span{color:var(--muted)}.ct-folio-line i{flex:1;border-bottom:1px dotted var(--line-strong);transform:translateY(-4px)}.ct-folio-line b{font-weight:500}.ct-folio-line.total{padding-top:8px;border-top:1px solid var(--line);margin-top:2px}.ct-folio-line.total b{font-size:15px}
/* entry */
.ct-steps{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin:4px 0 22px}
.ct-steps li{padding:12px 14px;border:1px solid var(--line);border-radius:10px;display:grid;gap:2px;color:var(--muted)}.ct-steps li span{font-size:20px;color:var(--gold-deep)}.ct-steps li b{font-weight:500;font-size:12.5px}
.ct-steps li.past{border-color:rgba(212,178,115,.35)}.ct-steps li.past span,.ct-steps li.now span{color:var(--gold)}.ct-steps li.now{border-color:var(--gold);color:var(--text);background:var(--gold-soft)}
.ct-entry-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;align-items:start}
.ct-entry-main{display:grid;gap:16px}
.ct-entry .o-card-head{flex-wrap:wrap;gap:10px}.ct-entry .o-card-head h2{font-size:15px}
.ct-info{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:4px 0 0}.ct-info div{display:grid;gap:3px}.ct-info dt{font-size:11px;color:var(--muted)}.ct-info dd{margin:0;font-size:13px;font-weight:500}
.ct-three{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.ct-lines input{width:100%;background:var(--field);border:1px solid var(--line);border-radius:6px;padding:8px 10px;font-size:13px;color:var(--text)}.ct-lines input[type=number]{text-align:right}.ct-lines td{padding:8px 8px}
.ct-upload{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;align-items:center;padding:14px 16px;border:1px dashed var(--line-strong);border-radius:8px;cursor:pointer;position:relative;margin-top:6px}.ct-upload .icon{grid-row:span 2;color:var(--gold)}.ct-upload strong{font-size:13px;font-weight:500}.ct-upload span{font-size:12px;color:var(--muted)}.ct-upload input{position:absolute;inset:0;opacity:0;cursor:pointer}
.ct-files{display:grid;gap:4px;margin-top:8px;font-size:12.5px}.ct-files li{display:flex;align-items:center;gap:6px}.ct-files .icon{width:14px;height:14px;color:var(--muted)}
.ct-folio{position:sticky;top:20px;padding:24px 24px 22px;border-radius:12px;background:#f3ecdd;color:#2a2418;border:1px solid #e2d6bd;display:grid;gap:10px}
.ct-folio-brand{font:400 22px var(--font-serif),serif;color:#2a2418}.ct-folio-brand span{font:500 11px 'Geist',sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#8a7a5a}
.ct-folio .s-eyebrow{color:#8a7a5a;margin:0}
.ct-folio-amount{display:grid;gap:2px;padding:12px 0 14px;border-bottom:1px solid #d9ccb1}.ct-folio-amount small{font-size:11px;color:#8a7a5a}.ct-folio-amount strong{font-size:34px;line-height:1;color:#2a2418}
.ct-folio-lines{display:grid;gap:8px}.ct-folio .ct-folio-line span{color:#6f6249}.ct-folio .ct-folio-line i{border-bottom-color:#c9bb9c}.ct-folio .ct-folio-line b{color:#2a2418}.ct-folio .ct-folio-line.total{border-top-color:#d9ccb1}.ct-folio .ct-folio-line.total b.gold{color:#8a6a1e}
.ct-folio-progress{margin-top:4px}.ct-folio-progress div:first-child{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;color:#6f6249}.ct-folio-progress b{font-size:20px;color:#2a2418}.ct-folio .ct-gold-bar{background:#e2d6bd}.ct-folio .ct-gold-bar i{background:#a8894e}
.ct-folio-note{font-size:12px;color:#6f6249}.ct-folio-note b{color:#2a2418}
.ct-folio .s-form-error{color:#a3382b}
.ct-confirm{display:flex;align-items:center;gap:8px;font-size:12.5px}.ct-confirm input{accent-color:#a8894e}
.ct-folio-actions{display:grid;gap:8px}.ct-folio .o-btn{justify-content:center;border-color:#c9bb9c;color:#2a2418}.ct-folio .o-btn.primary{background:#2a2418;border-color:#2a2418;color:#f3ecdd}.ct-folio .o-btn.primary:hover{background:#000}
.ct-folio small.muted{color:#8a7a5a}
/* project */
.ct-neg{color:var(--danger)!important}
.ct-tabs{width:max-content;margin-bottom:16px}
.ct-general{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:16px;align-items:start}
.ct-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:0 14px}.ct-fields .s-field:has(.wide){grid-column:1/-1}
.ct-partners{display:grid;gap:8px}.ct-partner{display:grid;grid-template-columns:1.3fr 110px 76px auto 1fr auto;gap:8px;align-items:center}.ct-partner input,.ct-partner select{background:var(--field);border:1px solid var(--line);border-radius:6px;padding:8px 10px;font-size:13px;color:var(--text);min-width:0}.ct-partner input[type=number]{text-align:right}.ct-partner span{font-size:12px;color:var(--muted)}.ct-partner .ct-gold-bar{width:100%;margin:0}
.ct-share{display:flex;align-items:baseline;gap:10px;margin:14px 0 6px;font-size:13px;color:var(--muted)}.ct-share b{font-size:22px;color:var(--text)}
.ct-edit input:not([type=checkbox]),.ct-edit select{background:var(--field);border:1px solid var(--line);border-radius:6px;padding:7px 9px;font-size:12.5px;color:var(--text);min-width:110px;width:100%}.ct-edit input.num{text-align:right;min-width:120px}.ct-edit input[type=date]{min-width:136px}.ct-edit td{padding:7px 6px}.ct-edit th{padding:9px 8px}
.ct-round-no{color:var(--gold);font-size:20px}.ct-round-no small{font:400 10px 'Geist',sans-serif;color:var(--muted);margin-left:2px}
.ct-docs{min-width:900px}.ct-docs td:nth-child(3){width:26%}.ct-docs td:nth-child(4){width:30%}
.ct-file{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 10px;border:1px dashed var(--line-strong);border-radius:6px;position:relative;cursor:pointer;font-size:12px}.ct-file::after{content:'선택';font:500 10px 'Geist',sans-serif;letter-spacing:.1em;color:var(--gold)}.ct-file input{position:absolute;inset:0;opacity:0;cursor:pointer}.ct-file span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ct-savebar{margin-top:14px;font-size:12px;color:var(--muted)}
.ct-project h1{font-size:30px}
@media (max-width:1240px){.ct-entry-grid{grid-template-columns:1fr}.ct-folio{position:static}.ct-general{grid-template-columns:1fr}.ct-hero,.ct-hero.portfolio{grid-template-columns:1fr}.ct-steps{grid-template-columns:repeat(3,1fr)}}
@media (max-width:900px){.ct-info{grid-template-columns:1fr 1fr}.ct-three{grid-template-columns:1fr}.ct-fields{grid-template-columns:1fr 1fr}.ct-partner{grid-template-columns:1fr 1fr}.ct-partner .ct-gold-bar{grid-column:1/-1}.ct-steps{grid-template-columns:1fr 1fr}.ct-search input{width:120px}.ct-count{margin-left:0}}
