:root{--green:#176b52;--dark:#123e33;--pale:#edf7f2;--ink:#17312a;--muted:#657771;--line:#d8e4df;--red:#b43b3b;--sidebar:248px}
*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:"Malgun Gothic",system-ui,sans-serif;color:var(--ink);background:#f6f8f7}a{color:var(--green);text-decoration:none}
.app-shell{overflow-x:hidden}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);background:var(--dark);color:#fff;display:flex;flex-direction:column;z-index:30;transition:width .2s,transform .2s}.sidebar-brand{height:62px;display:flex;align-items:center;padding:0 12px;border-bottom:1px solid #2c5a4f}.sidebar-brand>a{display:flex;align-items:center;gap:10px;color:#fff;font-weight:800;min-width:0}.brand-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:8px;background:#4ca681;flex:0 0 auto}.brand-text{white-space:nowrap}.sidebar-brand button{margin-left:auto;border:0;background:#27584b;color:#fff;padding:6px 9px}.side-nav{padding:10px 8px 24px;overflow-y:auto;overflow-x:hidden;flex:1}.side-nav details{border-bottom:1px solid #285347;padding:3px 0}.side-nav summary{cursor:pointer;list-style:none;font-weight:700;padding:10px;border-radius:6px;white-space:nowrap}.side-nav summary:hover{background:#214f42}.side-nav summary::after{content:"⌄";float:right;color:#a9cec0}.side-nav details:not([open]) summary::after{content:"›"}.side-nav a,.nav-disabled{display:block;color:#dcebe6;padding:8px 12px 8px 24px;margin:2px 0;border-radius:6px;font-size:14px;white-space:nowrap}.side-nav a:hover{background:#235c4b;color:#fff}.side-nav a.active{background:#e5f4ed;color:#14533f;font-weight:800}.nav-disabled{color:#75978c;cursor:not-allowed}.app-main{min-height:100vh;margin-left:var(--sidebar);display:flex;flex-direction:column;transition:margin-left .2s}.topbar{height:62px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 22px;gap:14px;flex:0 0 auto}.topbar>div:first-of-type{display:flex;align-items:baseline;gap:12px}.breadcrumb{color:var(--muted);font-size:13px}.user-tools{margin-left:auto;display:flex;align-items:center;gap:12px}.user-tools form{margin:0}.link{border:0;background:transparent;color:var(--green);padding:6px}.topbar #mobileMenu{display:none}.app-main>main{overflow:visible;flex:1;max-width:none;width:100%;padding:24px 28px}.sidebar-overlay{display:none}
.sidebar-collapsed .sidebar{width:68px}.sidebar-collapsed .app-main{margin-left:68px}.sidebar-collapsed .brand-text,.sidebar-collapsed .side-nav a,.sidebar-collapsed .nav-disabled,.sidebar-collapsed .side-nav summary::after{display:none}.sidebar-collapsed .sidebar-brand button{font-size:0}.sidebar-collapsed .sidebar-brand button::after{content:"›";font-size:16px}.sidebar-collapsed .side-nav summary{overflow:hidden;font-size:0;text-align:center}.sidebar-collapsed .side-nav summary::before{content:"•";font-size:20px}
.guest-header{height:58px;background:var(--dark);display:flex;align-items:center;padding:0 24px}.guest-header .brand{color:#fff;font-weight:800}.guest-shell main{padding:28px}.login{max-width:420px;margin:10vh auto}.login input{width:100%}
.page-head{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:18px}.page-head h1{margin:0 0 5px;font-size:25px}.page-head p,.muted{margin:0;color:var(--muted)}.page-head form,.filters,.inline{display:flex;gap:8px;flex-wrap:wrap}.card,.login{background:#fff;border:1px solid var(--line);border-radius:9px;padding:20px}.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:12px}.stats>div{background:#fff;border:1px solid var(--line);padding:15px;border-radius:8px;display:flex;flex-direction:column}.stats b{font-size:24px}.stats .danger{border-color:#efb9b9;color:var(--red)}.stats.accounting{grid-template-columns:repeat(3,1fr)}.stats .accent{background:var(--green);color:#fff}.totals{display:flex;gap:25px;background:var(--pale);padding:11px 15px;margin-bottom:13px;border-radius:7px}
.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:8px;max-height:68vh}table{border-collapse:collapse;width:100%;min-width:850px}th,td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}th{position:sticky;top:0;background:#eef4f1;z-index:2}tr.unpaid{background:#fff2f2}.empty{text-align:center;color:#71827d;padding:32px}.masked{letter-spacing:.02em}
input,select,textarea,.control{border:1px solid #b9cac4;border-radius:5px;padding:8px;background:#fff;max-width:100%}input.small{width:55px}button,.button{display:inline-block;border:1px solid #a9bbb5;background:#fff;border-radius:6px;padding:8px 13px;cursor:pointer}.primary{background:var(--green);border-color:var(--green);color:#fff}.danger-button{border-color:#b94a48;background:#fff5f5;color:#982d2b}.danger-button:hover{background:#b94a48;color:#fff}.message{padding:11px 14px;border-radius:7px;margin-bottom:14px;background:var(--pale)}.message.error{background:#feeaea;color:#8e2626}.form-grid>div{display:grid;grid-template-columns:190px minmax(220px,600px);gap:14px;margin-bottom:12px}.form-grid .actions{display:flex}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-bottom:15px}dl{display:grid;grid-template-columns:120px 1fr;gap:10px}dt{font-weight:700}.schedule-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;min-width:1000px}.schedule-grid section{background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px}.schedule-grid h2{font-size:17px}.slot{padding:9px;margin:7px 0;background:var(--pale);border-left:4px solid var(--green);display:flex;flex-direction:column;font-size:13px}.badge{padding:4px 7px;border-radius:10px;background:#e8eeeb}.badge.completed{background:#dcefe6;color:#175b44}.badge.cancelled,.badge.closed{background:#ececec;color:#666}small{color:#6c7c77}
input[type="date"]{width:155px}.intake-form{padding:0 20px 20px}.intake-form section{padding:18px 0;border-bottom:1px solid var(--line)}.intake-form h2{font-size:17px;margin:0 0 14px}.intake-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:14px 16px}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field>label{font-size:13px;font-weight:700}.field input:not([type="radio"]):not([type="checkbox"]),.field select,.field textarea{width:100%}.field ul{list-style:none;padding:0;margin:0;display:flex;gap:12px;flex-wrap:wrap}.field li label{display:flex;gap:5px;align-items:center}.field-wide{grid-column:1/-1}.field-error,.errorlist{color:#a42626;font-size:13px;margin:3px 0;padding:0;list-style:none}.required{color:#c23b3b;margin-left:3px}.address-grid .field-wide{grid-column:1/-1}.address-actions{display:flex;gap:7px}.address-actions input{max-width:115px}.voucher-options>div>div,.voucher-options #id_voucher_programs{display:flex;gap:14px;flex-wrap:wrap}.checkbox-field{flex-direction:row;align-items:center}.existing-child-panel{background:#f5f8f7;padding:16px!important;margin-top:14px;border-radius:7px}.intake-form>.actions{display:flex;gap:8px;padding-top:18px}.intake-filters{margin-bottom:12px}.intake-table th:first-child,.intake-table td:first-child{position:sticky;left:0;z-index:3;background:#fff}.intake-table th:nth-child(2),.intake-table td:nth-child(2){position:sticky;left:90px;z-index:3;background:#fff}.intake-table th:first-child,.intake-table th:nth-child(2){background:#eef4f1;z-index:4}
@media(max-width:1100px){.intake-grid{grid-template-columns:repeat(2,minmax(180px,1fr))}}
@media(max-width:900px){.sidebar{transform:translateX(-100%);width:min(86vw,280px)}.app-main{margin-left:0}.topbar #mobileMenu{display:inline-block}.sidebar-open .sidebar{transform:translateX(0)}.sidebar-open .sidebar-overlay{display:block;position:fixed;inset:0;background:#0006;z-index:20}.sidebar-collapsed .sidebar{width:min(86vw,280px)}.sidebar-collapsed .app-main{margin-left:0}.sidebar-collapsed .brand-text,.sidebar-collapsed .side-nav a,.sidebar-collapsed .nav-disabled,.sidebar-collapsed .side-nav summary::after{display:block}.sidebar-collapsed .side-nav summary{font-size:inherit;text-align:left}.sidebar-collapsed .side-nav summary::before{display:none}.breadcrumb{display:none}.app-main>main{padding:16px}.stats{grid-template-columns:repeat(2,1fr)}.page-head{align-items:start;flex-direction:column}.grid2{grid-template-columns:1fr}.totals{overflow:auto}.form-grid>div{grid-template-columns:1fr}}
@media(max-width:600px){.intake-grid{grid-template-columns:1fr}.intake-form{padding:0 14px 16px}.field-wide{grid-column:auto}}
.schedule-filters{margin-bottom:10px;align-items:center}.schedule-filters label{display:flex;align-items:center;gap:4px}.schedule-toolbar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:10px 0}.view-toggle{display:flex;margin-left:auto}.view-toggle button{border-radius:0}.view-toggle button:first-child{border-radius:6px 0 0 6px}.view-toggle button:last-child{border-radius:0 6px 6px 0}.day-jumps{display:flex;gap:4px}.day-jumps button.active{background:#d7efe6;border-color:var(--green);color:var(--green);font-weight:700}
.schedule-view{background:#fff;border:1px solid var(--line);border-radius:8px}.room-summary{overflow:auto;max-height:calc(100vh - 330px)}.room-summary-grid{display:grid;grid-template-columns:74px repeat(6,minmax(145px,1fr));min-width:980px}.room-summary-grid>div{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px}.room-summary-grid>[hidden],.schedule-toolbar nav[hidden]{display:none!important}.day-head,.room-head,.corner{background:#eef4f1;font-weight:800;z-index:4}.day-head{border-left:3px solid #78998d}.day-head span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.day-head small{display:block;font-weight:400}.sticky-top{position:sticky;top:0}.sticky-left{position:sticky;left:0}.sticky-both{position:sticky;top:0;left:0;z-index:6}.room-day-cell{min-height:125px;border-left:3px solid #a5bbb3}.room-day-cell.day-band-even,.day-head.day-band-even{background:#fbfdfc}.room-day-cell.day-band-odd,.day-head.day-band-odd{background:#f1f6f4}.room-day-cell .schedule-card,.room-day-cell .available-slot{padding:5px 6px;margin-bottom:5px;font-size:11px}.room-jumps{display:flex;gap:4px;flex-wrap:wrap}.room-jumps button.active{background:#d7efe6;border-color:var(--green);color:var(--green);font-weight:700}.conflict-location-buttons{display:inline-flex;gap:5px;flex-wrap:wrap;margin-left:8px}.conflict-location-buttons button{padding:4px 7px;border-color:#d88c8c;background:#fff;color:#9f2020}.conflict-location-hit{outline:5px solid #d63b3b;outline-offset:-5px;animation:schedulePulse .55s ease-in-out 3 alternate}
.schedule-card{display:flex;flex-direction:column;gap:2px;padding:7px;margin-bottom:6px;border-left:4px solid;border-radius:5px;font-size:12px;overflow:hidden}.schedule-card small{font-size:11px}.voucher-development{background:#DFF3E4;border-color:#2F7D4A}.voucher-woori{background:#FFF3C4;border-color:#B98500}.voucher-family{background:#F8EDB8;border-color:#9D8A25}.voucher-school{background:#DCEBFA;border-color:#3A73B8}.voucher-general{background:#E8E0F4;border-color:#6F56A6}.voucher-dream{background:#F6D5E5;border-color:#B85C8A}.voucher-military{background:#D9F0F0;border-color:#2D7F7C}.status-makeup{border-style:dashed}.status-carryover::after{content:"이월";font-size:10px}.status-closed,.status-cancelled{opacity:.55;text-decoration:line-through}.status-same_day_cancel{outline:2px solid #c94848}
.room-block-card{display:flex;flex-direction:column;background:#555f5c;color:#fff;padding:7px;border-radius:5px;font-size:11px;margin-bottom:6px}.timeline-block{position:absolute;left:3px;right:3px;z-index:6;margin:0;overflow:hidden}
input[data-date-input]{width:155px}.period-buttons{display:flex;gap:3px;flex-wrap:wrap}.period-buttons button{padding:6px 8px;font-size:12px}.period-buttons button.active{background:var(--green);color:#fff}.intake-filter-card{background:#fff;border:1px solid var(--line);padding:10px;border-radius:8px;margin-bottom:8px}.filter-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:4px 0}.detail-filters{padding-top:7px;border-top:1px solid var(--line)}.grid-toolbar{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin:8px 0}.column-settings{display:flex;gap:10px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);padding:10px;margin-bottom:7px}.column-settings label{font-size:12px}.intake-data-grid{max-height:70vh}.intake-data-grid table{table-layout:fixed;min-width:100%}.intake-data-grid th{position:sticky;top:0;cursor:pointer;user-select:none;min-width:70px}.intake-data-grid th:first-child,.intake-data-grid td:first-child{position:sticky;left:0;z-index:5;background:#fff}.intake-data-grid th:first-child{z-index:7;background:#eef4f1}.resize-handle{position:absolute;right:-3px;top:0;width:7px;height:100%;cursor:col-resize}.content-preview{display:block;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-badge{display:inline-block;padding:3px 7px;border-radius:10px;background:#edf1ef;font-size:11px}.progress-진행{background:#dff3e4;color:#236d40}.progress-대기{background:#fff3c4;color:#8c6800}.progress-미진행{background:#f2e3e3;color:#8e3434}.progress-종결{background:#e5e5e5;color:#555}.pagination{display:flex;justify-content:center;align-items:center;gap:10px;margin-top:10px}
@media(max-width:700px){.grid-toolbar small,.resize-handle{display:none}.intake-data-grid th,.intake-data-grid td{min-width:110px}.period-buttons{width:100%}}
.available-slot{display:flex;flex-direction:column;padding:7px;margin-bottom:6px;background:#fff;border:2px dashed #299b91;border-radius:5px;color:#166c65;font-size:11px}.available-slot:hover{background:#effbf9}.timeline-scroll{overflow:auto;max-height:75vh}.timeline-board{display:flex;min-width:max-content;transform-origin:top left}.time-column{width:70px;position:sticky;left:0;background:#f5f7f6;z-index:9;flex:0 0 70px}.timeline-top-spacer{height:58px;position:sticky;top:0;background:#e7efec;z-index:10;padding:8px;font-weight:800}.time-labels{height:780px;position:relative}.time-labels span{position:absolute;right:8px;transform:translateY(-7px);font-size:11px}.timeline-columns{display:grid}.timeline-column{border-right:1px solid #ccd9d4}.timeline-column.day-start{border-left:4px solid #6e9184}.timeline-column-head{height:58px;position:sticky;top:0;background:#eef4f1;z-index:7;display:flex;flex-direction:column;padding:7px}.timeline-track{height:780px;position:relative;background:repeating-linear-gradient(to bottom,#fff 0,#fff 9px,#edf1ef 10px)}.timeline-column.day-band-odd .timeline-column-head{background:#e4eeea}.timeline-column.day-band-odd .timeline-track{background:repeating-linear-gradient(to bottom,#f5f9f7 0,#f5f9f7 9px,#e4ece8 10px)}.timeline-position{position:absolute;left:3px;right:3px;z-index:4}.timeline-position.overlap-position{right:auto;min-width:0}.timeline-position .schedule-card,.timeline-position .available-slot{height:100%;margin:0;padding:3px}.outside-pattern{position:absolute;left:0;right:0;background:repeating-linear-gradient(135deg,#d9dcdb 0,#d9dcdb 5px,#eef0ef 5px,#eef0ef 10px);color:#68706d;display:grid;place-items:center;font-size:11px;z-index:1;overflow:hidden}.timeline-column.current-day .timeline-column-head{background:#cfe9df}.card+.card{margin-top:14px}
.side-nav>.nav-root{font-weight:800;padding:11px 12px;margin:2px 0 6px}.status-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.status-tabs a{background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px 14px;color:var(--ink)}.status-tabs a.active{background:var(--green);border-color:var(--green);color:#fff}.status-tabs b{margin-left:5px}.small-year{width:85px}.grid-toolbar{flex-wrap:wrap}.grid-toolbar>b{margin-right:auto}.therapist-grid-wrap{max-height:66vh}.therapist-data-grid th,.therapist-data-grid td{min-width:115px}.therapist-data-grid th:first-child,.therapist-data-grid td:first-child{position:sticky;left:0;z-index:5;background:#fff}.therapist-data-grid th:first-child{z-index:7;background:#eef4f1}.retired-row td{background:#f1f2f2;color:#6f7774}.retired-row td:first-child{background:#f1f2f2}.status-badge,.education-status,.voucher-warning{display:inline-block;border-radius:12px;padding:4px 8px;background:#e8eeeb;font-size:12px}.status-active,.status-completed{background:#dcefe6;color:#175b44}.status-resigned,.status-not_applicable{background:#e5e5e5;color:#666}.status-leave,.status-review,.status-partial{background:#fff0c7;color:#805b00}.status-planned{background:#e3eefc;color:#22558f}.status-missing,.danger-text,.voucher-warning{background:#fde4e4;color:#9b2f2f}.section-form{max-width:1200px}.section-form h2{margin:0 0 15px;font-size:18px}.section-form h3{font-size:15px;margin:20px 0 8px}.form-section-grid{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:14px}.repeat-row{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr));gap:10px;background:#f7f9f8;border:1px solid var(--line);border-radius:7px;padding:12px;margin:8px 0}.repeat-row>div{display:flex;flex-direction:column;gap:4px}.form-actions{position:sticky;bottom:0;background:#f6f8f7;padding:14px 0;display:flex;gap:8px;z-index:8}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.detail-grid .card+.card{margin-top:0}.section-head{display:flex;justify-content:space-between;align-items:center}.warning-card{border-color:#e3a0a0;background:#fff7f7}.voucher-review,.voucher-copay_unpaid{background:#fff4f4}.voucher-carryover{background:#fff9dd}.voucher-refundable{background:#edf3ff}.voucher-ended{background:#eee;color:#666}
@media(max-width:900px){.form-section-grid,.detail-grid{grid-template-columns:1fr}.repeat-row{grid-template-columns:1fr 1fr}.grid-toolbar>b{width:100%}}
.therapist-profile-form .gender-button-field>div,.therapist-profile-form .employment-type-field>div{display:flex;gap:6px;flex-wrap:nowrap}.therapist-profile-form .gender-button-field>div>div,.therapist-profile-form .employment-type-field>div>div{margin:0}.therapist-profile-form .gender-button-field label,.therapist-profile-form .employment-type-field label{display:flex;align-items:center;gap:5px;min-height:36px;padding:7px 13px;border:1px solid var(--line);border-radius:7px;background:#fff;white-space:nowrap}.therapist-profile-form .gender-button-field input,.therapist-profile-form .employment-type-field input{width:auto}.therapist-profile-form .gender-button-field label:has(input:checked),.therapist-profile-form .employment-type-field label:has(input:checked){background:var(--green);border-color:var(--green);color:#fff}.therapist-address-row{display:flex;align-items:center;gap:7px}.therapist-address-row button{flex:0 0 auto}.therapist-address-row input{min-width:0;flex:1}.repeat-section .section-head h2{margin:0}.repeat-section .repeat-row{position:relative;grid-template-columns:repeat(6,minmax(110px,1fr)) 58px;align-items:end}.repeat-section .remove-repeat-row{align-self:end;padding:8px 9px}.repeat-section .repeat-row>div[hidden]{display:none}.payroll-account-grid .field:last-child input{white-space:nowrap}.bank-other-field[hidden]{display:none}.danger-outline{border-color:#d79a9a;color:#9b2f2f;background:#fff}
.therapist-profile-form .basic-info-grid{grid-template-columns:1.15fr 1fr 1fr 1fr!important}.therapist-profile-form .gender-button-field,.therapist-profile-form .employment-type-field{display:flex!important;flex-direction:row!important;align-items:center;gap:8px;min-width:0}.therapist-profile-form .gender-button-field>label,.therapist-profile-form .employment-type-field>label{border:0!important;background:transparent!important;color:var(--ink)!important;padding:0!important;min-height:0!important;flex:0 0 auto}.therapist-profile-form .employment-info-grid{grid-template-columns:135px 135px repeat(4,minmax(0,1fr))!important;align-items:end}.therapist-profile-form .employment-info-grid>.treatment-area-chip-field{grid-column:2/-1}.therapist-profile-form .employment-info-grid>.employment-type-field{grid-column:span 4}.therapist-profile-form .treatment-area-chip-field{min-width:0}.therapist-profile-form .treatment-area-chip-field>div,.therapist-profile-form .treatment-area-chip-field>ul{display:flex;gap:5px;flex-wrap:nowrap}.therapist-profile-form .treatment-area-chip-field label{white-space:nowrap}.therapist-profile-form .contact-address-grid{grid-template-columns:180px 230px minmax(360px,1fr)!important;align-items:end}.therapist-profile-form .qualification-date input{width:100%}.therapist-profile-form .qualification-toggle{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:space-between}.monthly-salary-field[hidden],.session-pay-field[hidden]{display:none}
.therapist-profile-form .treatment-area-chip-field>div{overflow:visible}.therapist-profile-form .treatment-area-chip-field>div label{gap:3px;padding:5px;font-size:13px}
.repeat-section .repeat-row[hidden]{display:none!important}
.therapist-profile-form #id_gender{border:0!important;background:transparent!important;padding:0!important;box-shadow:none!important}
.therapist-profile-form .payroll-account-grid{grid-template-columns:repeat(5,minmax(140px,1fr))!important;align-items:end}.therapist-profile-form .payroll-account-grid>.field{min-width:0}.therapist-profile-form .contract-upload-field{grid-column:span 2}.therapist-profile-form .contract-upload-field input{width:100%}.therapist-profile-form .payroll-account-grid input,.therapist-profile-form .payroll-account-grid select{width:100%}.therapist-profile-form #payrollSection .section-head{align-items:flex-start;margin-bottom:14px}.therapist-profile-form #payrollSection h2{margin:0 0 4px}.therapist-profile-form #payrollSection p{margin:0}
@media(max-width:1200px){.therapist-profile-form .payroll-account-grid{grid-template-columns:repeat(3,minmax(150px,1fr))!important}}
@media(max-width:700px){.therapist-profile-form .payroll-account-grid{grid-template-columns:1fr!important}.therapist-profile-form .contract-upload-field{grid-column:auto}}
.intake-unified-search{width:min(520px,100%)}.intake-filter-search{padding-top:7px;border-top:1px solid var(--line)}.column-settings label:has(input:disabled){font-weight:800;color:var(--green)}.intake-profile-form{display:grid;gap:14px}.intake-profile-form>section{border-bottom:1px solid var(--line)}.intake-profile-form .existing-child-panel{margin:0;background:#f7faf8}.intake-profile-form .form-actions{margin-top:0}
.today-table input,.today-table select{min-width:82px}.today-table .date-short{width:105px}.today-table .money-short{width:90px}.today-table td small{display:block;color:#64748b}.save-result{display:block;min-width:85px;font-size:12px;color:#166534}.stats.compact{grid-template-columns:repeat(auto-fit,minmax(90px,1fr))}.session-quick-form input[type=checkbox]{min-width:auto}
.section-form .form-section-grid{grid-template-columns:repeat(5,minmax(135px,1fr))}.section-form .form-section-grid .field-wide{grid-column:1/-1}.qualification-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.qualification-item{display:grid;grid-template-columns:1fr;gap:8px;align-content:start;min-width:0;padding:12px;border:1px solid var(--line);border-radius:8px;background:#f7faf8}.qualification-item .field{min-width:0}.qualification-item .field:first-child{display:grid;grid-template-columns:1fr auto;align-items:center}.qualification-item .field:first-child>label{grid-column:1;grid-row:1}.qualification-item .field:first-child>input{grid-column:2;grid-row:1}.qualification-item label{white-space:normal;line-height:1.25}.qualification-item input[data-date-input]{min-width:0}.qualification-help{margin:8px 0 0}.field .control[type="radio"],.field .control[type="checkbox"]{width:auto}.intake-grid{grid-template-columns:repeat(6,minmax(130px,1fr))}.intake-grid .field-wide{grid-column:1/-1}.form-grid:not(.schedule-entry-form){display:grid;grid-template-columns:repeat(5,minmax(140px,1fr));gap:12px}.form-grid:not(.schedule-entry-form)>div{display:flex;flex-direction:column;gap:5px;margin:0}.form-grid:not(.schedule-entry-form)>div:has(textarea){grid-column:span 2}.form-grid:not(.schedule-entry-form)>.actions{grid-column:1/-1;flex-direction:row}.progressive-fields{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:12px;align-items:end}.progressive-fields .field-wide{grid-column:1/-1}.available-slots-panel{grid-column:1/-1;border-top:1px solid var(--line);padding-top:12px}.available-slot-buttons{display:flex;flex-wrap:wrap;gap:8px;max-height:220px;overflow:auto}.room-status-toggle{display:flex;gap:6px;justify-content:center;align-items:center}.room-status-toggle input{width:auto}.room-closed{background:repeating-linear-gradient(135deg,#eef1f0,#eef1f0 8px,#e4e9e7 8px,#e4e9e7 16px);text-align:center}.closed-label{color:#66736e;font-weight:700}.timeline-columns{display:flex!important}.timeline-day-group{display:grid;flex:none;border-right:3px solid #789b90}.timeline-day-group:first-child{border-left:3px solid #789b90}.schedule-card{min-height:0}.schedule-card b,.schedule-card>span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25}.schedule-card b{font-size:12px}.schedule-card>span{font-size:12px}
.timeline-tail{flex:0 0 max(900px,calc(100vw - 340px));height:1px}
@media(max-width:1100px){.section-form .form-section-grid,.intake-grid,.progressive-fields,.form-grid:not(.schedule-entry-form){grid-template-columns:repeat(2,minmax(140px,1fr))}.qualification-row{grid-template-columns:repeat(4,260px)}}

/* 공통 입력·접근성 */
.date-control{display:inline-flex;align-items:center;gap:4px;position:relative;max-width:100%;flex-wrap:nowrap}.address-search-row,.address-common-tools{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.address-search-row input{width:105px}.address-mode-note{font-size:12px;color:var(--muted)}
button:focus-visible,.button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #55a98a;outline-offset:2px}

/* 사이드바의 현재 위치 */
.side-nav a.active{box-shadow:inset 4px 0 0 #55b993}.side-nav summary.active{background:#1d5848;color:#fff;box-shadow:inset 4px 0 0 #55b993}.sidebar-collapsed .side-nav details:has(summary.active) summary::before{color:#83d5b4}.sidebar-collapsed .side-nav>.nav-root.active{box-shadow:inset 4px 0 0 #55b993}

/* 근무시간 주간 편집 */
.work-week-wrap{max-height:72vh}.work-week-table th:first-child,.work-week-table td:first-child,.work-editor-table th:first-child{position:sticky;left:0;z-index:4;background:#eef4f1}.work-week-table td{vertical-align:top;min-width:145px}.work-week-table th small{display:block;margin-top:4px}.room-chip-row{display:flex;gap:3px;flex-wrap:wrap;margin-top:5px}.room-chip{display:inline-block;padding:3px 6px;border-radius:10px;background:#e3f0eb;color:#175b44;font-size:11px;margin:1px}.work-week-editor{padding:14px}.work-editor-table{min-width:1280px}.work-editor-table td{vertical-align:top}.change-date{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.room-closure-guide{margin:0 0 10px}.room-choice-row{display:flex;gap:5px;flex-wrap:wrap;max-width:520px}.room-choice{display:flex;flex-direction:column;align-items:center;padding:5px 7px;border:1px solid var(--line);border-radius:6px;background:#fff}.room-choice input{width:auto}.room-choice.closed{background:#eee;color:#777}.room-choice small{font-size:9px}.toggle{display:flex;align-items:center;gap:5px}.toggle input{width:auto}.delete-reason{display:none}.sticky-actions{position:sticky;bottom:0;background:#fff;padding:12px 0 0;z-index:7}

/* 교육 현황 매트릭스 */
.education-summary{grid-template-columns:repeat(6,minmax(90px,1fr))}.education-matrix-wrap{max-height:70vh}.education-matrix{min-width:max-content}.education-matrix th{vertical-align:top}.education-matrix th small,.completion-rate{display:block;font-weight:400;margin-top:3px}.education-matrix .sticky-name{position:sticky;left:0;z-index:5;min-width:120px;background:#eef4f1}.education-matrix tbody .sticky-name{background:#fff}.education-cell{display:flex;min-width:118px;min-height:58px;flex-direction:column;justify-content:center;gap:3px;padding:7px;border-radius:7px;color:var(--ink);background:#eef2f0}.education-cell span{font-size:11px}.education-cell.status-completed{background:#dcefe6}.education-cell.status-partial,.education-cell.status-review,.education-cell.status-due_soon{background:#fff0c7}.education-cell.status-missing,.education-cell.status-overdue{background:#fde4e4}.education-cell.status-not_applicable{background:#ededed;color:#707070}.row-actions{display:flex;align-items:center;gap:8px}.row-actions form{margin:0}.education-delete-form .link{padding:0}

/* 치료사 담당 이력 */
.assignment-stats{margin-top:14px;grid-template-columns:repeat(4,minmax(110px,1fr))}.history-tabs{display:flex;gap:5px;margin:10px 0}.history-tabs button.active{background:var(--green);border-color:var(--green);color:#fff}.history-table{max-height:360px}.history-table table{min-width:760px}.therapist-assignment-history h3{margin:16px 0 7px}.history-year{margin-top:10px}.history-year>summary{cursor:pointer;font-weight:800;padding:9px;background:#eef4f1;border-radius:6px}

.schedule-card.review-required{outline:2px solid #d17a22}.schedule-card.review-required::after{content:"정보 확인";font-size:10px;color:#934b06}
.schedule-card.source-review{outline:2px solid #d17a22;background:#fff4df}.schedule-card.source-review .source-review-reason{font-style:normal;font-size:10px;font-weight:700;color:#8b4b10}.schedule-card .source-child-action{font-size:10px;font-weight:800;color:#7b4310;text-decoration:underline}.schedule-card.schedule-conflict{outline:3px solid #c73535;background:#ffe8e8}.schedule-card .source-conflict-label{font-style:normal;font-size:10px;font-weight:800;color:#a82020}.schedule-source-summary{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:7px 0;padding:7px 10px;border:1px solid #e6c899;border-radius:7px;background:#fff8eb;font-size:12px}.schedule-source-summary b{color:#8b4b10}
.schedule-search-bar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;background:#f7faf8;border:1px solid var(--line);border-radius:8px;padding:9px;margin-bottom:10px}.schedule-search-bar input{min-width:210px}.schedule-search-hit{outline:4px solid #ef9b18!important;box-shadow:0 0 0 5px #fff3b0;position:relative;z-index:15;animation:schedulePulse .55s ease-in-out 3 alternate}.schedule-card.outside-work-warning{outline:3px solid #c73535;background:#ffe7e7}.schedule-card.outside-work-warning em{font-style:normal;font-weight:800;color:#a82020;font-size:10px}.day-jumps button.today-day{box-shadow:inset 0 0 0 2px #2f7d4a}.day-head.current-day{background:#cfe9df}.notice{padding:10px 12px;border:1px solid var(--line);border-radius:7px;margin:8px 0}@keyframes schedulePulse{to{filter:brightness(1.12);transform:scale(1.02)}}
.schedule-card[data-edit-url]{cursor:pointer}.schedule-card[data-edit-url]:focus{outline:3px solid #126b52}.form-grid.schedule-entry-form>.schedule-edit-summary{grid-column:1/-1;display:flex;grid-template-columns:none;justify-content:space-between;gap:12px;padding:9px 12px;margin:0;background:#eef5f2;border-radius:7px}.form-grid.schedule-entry-form>.schedule-form-grid{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,minmax(170px,1fr));gap:10px 12px;align-items:end;margin:0}.schedule-form-grid .field{margin:0}.schedule-form-grid output{min-height:40px;display:flex;align-items:center;padding:8px;border:1px solid var(--line);border-radius:6px;background:#f6f8f7}.compact-memo textarea{min-height:58px;max-height:120px;resize:none;overflow:auto}.form-grid.schedule-entry-form>.impact-preview{grid-column:1/-1;display:block;padding:12px;margin:0;border:1px solid var(--line);border-radius:7px}.form-save-dock{position:sticky;bottom:0;grid-column:1/-1;justify-content:flex-end;background:#fff;padding:10px;border-top:1px solid var(--line);z-index:8}
.week-changes{background:#fff;border:1px solid var(--line);border-radius:8px;margin:9px 0;padding:0}.week-changes>summary{cursor:pointer;padding:10px 12px;font-weight:800}.count-badge,.status-badge,.moved-badge{display:inline-flex;align-items:center;border-radius:999px;padding:2px 7px;background:#dceee7;color:#155f49;font-size:11px;font-weight:800}.moved-badge{background:#fff;border:1px solid #287c66;padding:0 5px}.week-change-grid{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:8px;padding:0 12px 12px}.week-change-item{display:flex;flex-direction:column;gap:3px;padding:9px;border:1px solid var(--line);border-left:4px solid #3b7e69;border-radius:6px;color:inherit;text-decoration:none}.week-change-item span,.week-change-item em{font-size:12px}.week-change-item em{font-style:normal;color:#126b52}.week-change-item.exception-suspended{border-left-color:#c24a4a;background:#fff6f6}.week-change-item.exception-moved{border-left-color:#287c66;background:#f3fbf8}.week-change-item.exception-holiday{border-left-color:#d79a2b;background:#fff8df}.occurrence-summary dl{display:grid;grid-template-columns:110px 1fr 110px 1fr;gap:8px 12px}.occurrence-summary dt{font-weight:800;color:#52655e}.occurrence-summary dd{margin:0}.occurrence-actions{margin-top:15px}.session-exception-form{display:grid!important;grid-template-columns:repeat(3,minmax(180px,1fr))!important}.candidate-grid{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:9px}.candidate-grid article{display:flex;flex-direction:column;gap:7px;border:1px solid var(--line);border-radius:7px;padding:10px}.history-card summary{cursor:pointer;font-weight:800}.history-card[open] summary{margin-bottom:12px}
@media(max-width:1100px){.week-change-grid,.candidate-grid{grid-template-columns:repeat(2,minmax(210px,1fr))}.session-exception-form{grid-template-columns:repeat(2,minmax(180px,1fr))!important}.occurrence-summary dl{grid-template-columns:100px 1fr}}
@media(max-width:700px){.week-change-grid,.candidate-grid,.session-exception-form{grid-template-columns:1fr!important}.occurrence-summary dl{grid-template-columns:1fr}.occurrence-summary dd{margin-bottom:7px}}
.daily-bulk-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px;margin:10px 0}.daily-bulk-toolbar #dailyDirtySummary{margin-left:auto}.daily-date-navigation{display:flex;align-items:center;gap:6px;white-space:nowrap}.daily-date-navigation form{margin:0}.daily-session-table{min-width:1280px}.daily-session-table th,.daily-session-table td{padding:6px;vertical-align:middle}.daily-session-table input,.daily-session-table select{min-width:78px}.daily-session-table .units-field{width:60px;min-width:60px}.daily-session-table input.approval-number{width:118px;min-width:118px;max-width:118px;font-variant-numeric:tabular-nums}.daily-session-table th:nth-child(9),.daily-session-table td:nth-child(9){min-width:168px}.daily-session-table .note-field{width:118px;min-width:100px}.daily-session-table small{display:block;color:#65726d}.daily-inline-meta{white-space:nowrap}.approval-time-control{display:flex;gap:4px;align-items:center}.daily-session-table .approval-time-control input.approval-time{width:78px;min-width:78px;max-width:78px;font-variant-numeric:tabular-nums}.approval-time-control button{padding:7px 8px;white-space:nowrap}.daily-sortable{cursor:pointer;user-select:none;white-space:nowrap}.daily-sortable:focus{outline:2px solid var(--green);outline-offset:-2px}.sort-indicator{display:inline-block;min-width:10px;color:var(--green)}.approval-state{display:block;font-size:11px;margin-top:3px}.approval-state.required{color:#a13b2f}.approval-state.not-required{color:#68736f}.dirty-row{background:#fff8d7!important;box-shadow:inset 4px 0 #e7a41b}.dirty-row .save-result{color:#8a5a00}.daily-save-dock{position:sticky;bottom:0;display:flex;justify-content:flex-end;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);padding:10px;z-index:12}.support-label{white-space:nowrap}.support-label.compact{font-weight:700}
.daily-session-table .approval-time-control input.actual-start-time{width:78px;min-width:78px;max-width:78px;font-variant-numeric:tabular-nums}.daily-row-actions{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.daily-row-actions .makeup-reschedule{white-space:nowrap}.occurrence-summary dl{display:grid;grid-template-columns:max-content 1fr;gap:8px 16px}.occurrence-summary dt{font-weight:700}.occurrence-summary dd{margin:0}
.daily-therapist-filter{display:flex;align-items:center;gap:6px;flex-wrap:wrap;flex:1;min-width:260px;padding-left:10px;border-left:1px solid var(--line)}.daily-therapist-filter b{white-space:nowrap}.daily-therapist-button{padding:7px 11px;border-color:#b9d5cb;background:#fff;white-space:nowrap}.daily-therapist-button.active{border-color:var(--coral);background:var(--coral);color:#fff;box-shadow:0 5px 12px rgba(244,112,103,.18)}.daily-approval-interval-warning{flex-basis:100%;display:none;padding:8px 10px;border-radius:8px;background:#f2f7f5;color:#466259;font-size:12px}.daily-approval-interval-warning:not(:empty){display:block}.daily-approval-interval-warning.danger{background:#fff1d6;color:#8a4c00;border:1px solid #f0bd60}.daily-session-row.approval-interval-warning{box-shadow:inset 4px 0 #f0a21f;background:#fff8e8!important}
.daily-therapist-alert-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;margin-left:3px;padding:0 5px;border-radius:999px;background:#fff1d6;color:#9a5000;font-size:10px;font-weight:800}.daily-therapist-alert-count[hidden]{display:none}.daily-therapist-button.active .daily-therapist-alert-count{background:#fff;color:#b14e45}.approval-time-stack{display:grid;gap:4px}.approval-window-status{display:block;max-width:180px;font-size:10px;line-height:1.3;color:#65726d}.approval-window-status.ok{color:#177052}.approval-window-status.wait{color:#8a5a00}.approval-window-status.danger{color:#b43b2f;font-weight:700}.daily-session-row.approval-schedule-warning{box-shadow:inset 4px 0 #d94b3d;background:#fff0ed!important}
.daily-session-table td.approval-time-cell-warning{background:#fff0bd!important;box-shadow:inset 0 0 0 2px #e29a14}.daily-session-table td.approval-time-cell-warning .approval-time-control{padding:5px;border-radius:7px;background:#ffe39a}.daily-session-table td.approval-time-cell-warning .approval-time{border-color:#bd7200;background:#fffdf4}.daily-session-table td.approval-time-cell-warning .approval-window-status{color:#8d3f00;font-weight:800}
@media(max-width:900px){.form-grid.schedule-entry-form>.schedule-form-grid{grid-template-columns:repeat(2,minmax(140px,1fr))}.daily-bulk-toolbar #dailyDirtySummary{margin-left:0}.daily-save-dock{left:0}.daily-session-table{min-width:1120px}}
@media(max-width:600px){.form-grid.schedule-entry-form>.schedule-form-grid{grid-template-columns:1fr}.form-grid.schedule-entry-form>.schedule-edit-summary{flex-direction:column}.form-save-dock{position:static}}
@media(max-width:900px){.date-control{flex-wrap:wrap}.education-summary{grid-template-columns:repeat(2,1fr)}.assignment-stats{grid-template-columns:repeat(2,1fr)}}

/* 건의사항 */
.eyebrow{margin:0 0 8px;color:var(--green);font-size:12px;font-weight:900;letter-spacing:.18em}.feedback-create-panel{margin-bottom:16px}.feedback-create-panel h2,.feedback-list-panel h2{margin:0 0 16px;font-size:20px}.feedback-create-form{display:grid;gap:12px}.feedback-form-grid{display:grid;grid-template-columns:minmax(180px,.65fr) minmax(320px,2fr);gap:12px}.feedback-create-form input,.feedback-create-form select,.feedback-create-form textarea,.feedback-reply-panel textarea{width:100%}.feedback-content-field textarea{min-height:150px;resize:vertical}.feedback-create-form .actions,.feedback-reply-panel .actions{display:flex;justify-content:flex-start}.feedback-thread-list{margin:0 -20px -20px}.feedback-thread-row{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:16px 20px;border-top:1px solid var(--line);color:inherit}.feedback-thread-row:hover{background:var(--pale)}.feedback-row-main{display:flex;align-items:center;gap:9px;flex-wrap:wrap;min-width:0}.feedback-row-main strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feedback-row-meta{color:var(--muted);font-size:12px;white-space:nowrap}.feedback-status{display:inline-block;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}.feedback-status-open{background:#fff0c7;color:#805b00}.feedback-status-resolved{background:#dcefe6;color:#175b44}.feedback-detail-head h1{margin-top:8px}.feedback-status-actions{display:flex;justify-content:flex-end;margin:-8px 0 12px}.feedback-status-actions form{margin:0}.feedback-conversation{display:grid;gap:12px;margin-bottom:16px}.feedback-comment{max-width:min(850px,88%);padding:16px 18px;border:1px solid var(--line);border-radius:10px;background:#fff}.feedback-comment.manager-comment{margin-left:auto;background:#eaf6f1;border-color:#b7d8cb}.feedback-comment-head{display:flex;justify-content:space-between;gap:16px;padding-bottom:8px;border-bottom:1px solid var(--line)}.feedback-comment-head span{color:var(--muted);font-size:12px}.feedback-comment-content{padding-top:11px;line-height:1.65;overflow-wrap:anywhere}.feedback-reply-panel{padding:18px}.feedback-reply-panel textarea{min-height:110px;resize:vertical}
@media(max-width:700px){.feedback-form-grid{grid-template-columns:1fr}.feedback-thread-row{align-items:flex-start;flex-direction:column}.feedback-row-meta{white-space:normal}.feedback-comment{max-width:100%}.feedback-detail-head{flex-direction:column}.feedback-content-field textarea{min-height:120px}}

/* 브라우저 페이지 하나만 세로 스크롤을 사용한다. 넓은 표의 가로 스크롤은 유지한다. */
html,body{height:auto;min-height:100%}.app-shell{overflow:visible}.app-main{height:auto;min-height:100vh}.app-main>main{overflow:visible}
.table-wrap,.room-summary,.timeline-scroll,.intake-data-grid,.therapist-grid-wrap,.work-week-wrap,.education-matrix-wrap,.history-table,.available-slot-buttons{max-height:none;overflow-x:auto;overflow-y:visible}
.time-labels,.timeline-track{height:720px}.timeline-position{left:1px;right:1px}.timeline-position.overlap-position{right:auto}
.time-labels span:first-child{transform:translateY(3px)}.time-labels span:last-child{transform:translateY(-100%)}
.schedule-card .schedule-note{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px;font-style:normal;color:#52655e;line-height:1.2}
.form-grid>.contract-form-grid{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:12px;align-items:start}.contract-form-grid .field-wide{grid-column:1/-1}.contract-treatment-field{grid-column:span 2}.contract-treatment-field>div{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.contract-treatment-field>div>div{display:block}.contract-treatment-field label:has(input){display:inline-flex;align-items:center;gap:5px;padding:8px 12px;border:1px solid #a9bbb5;border-radius:7px;background:#fff;cursor:pointer;white-space:nowrap}.contract-treatment-field label:has(input:checked){background:var(--green);border-color:var(--green);color:#fff}.contract-treatment-field input{width:auto;margin:0}.contract-note-field{grid-column:span 2}.contract-note-field textarea{min-height:58px;max-height:80px;resize:vertical}.form-grid>.contract-policy-details,.form-grid>.contract-source-details{grid-column:1/-1;display:block;border:1px solid var(--line);border-radius:8px;padding:12px}.contract-policy-details summary,.contract-source-details summary{cursor:pointer;font-weight:800}.contract-quote-grid{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:8px;margin:12px 0}.contract-quote-grid>div{display:flex;flex-direction:column;gap:4px;padding:10px;background:#f4f8f6;border-radius:6px}.contract-quote-grid span{font-size:12px;color:var(--muted)}.contract-source-details dl{margin-bottom:0}
@media(max-width:1100px){.form-grid>.contract-form-grid{grid-template-columns:repeat(2,minmax(150px,1fr))}.contract-quote-grid{grid-template-columns:repeat(3,minmax(120px,1fr))}}
@media(max-width:600px){.form-grid>.contract-form-grid,.contract-quote-grid{grid-template-columns:1fr}.contract-treatment-field,.contract-note-field{grid-column:1}}

/* 이용자 운영현황·프로필 */
:root{--surface:#fff;--canvas:#f4f7f5;--line-strong:#c6d5cf;--radius:10px;--control-height:40px;--space-card:20px}
.filter-panel{display:grid;grid-template-columns:repeat(6,minmax(130px,1fr));gap:10px;align-items:end;margin-bottom:14px;padding:16px}.child-filters{grid-template-columns:repeat(7,minmax(120px,1fr))}.filter-panel label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:800}.filter-panel label span{color:var(--muted)}.filter-actions{display:flex;gap:6px;align-items:center}.child-list-table{min-width:1120px}.child-list-table th{white-space:nowrap}.child-list-table td{vertical-align:middle}.person-primary{display:block;font-size:16px;font-weight:900;color:var(--ink)}.person-secondary{display:block;margin-top:5px;color:var(--muted);font-size:12px;white-space:nowrap}.chip-stack{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.info-chip,.support-chip{display:inline-flex;align-items:center;min-height:25px;padding:4px 8px;border-radius:999px;background:#e7f3ee;color:#155843;font-size:12px;font-weight:800;white-space:nowrap}.support-chip{background:#edf0fa;color:#3a4e83}.button.small{padding:6px 9px;font-size:12px}.status-consulting,.status-waiting{background:#fff0c7;color:#805b00}.status-ended,.status-consulted{background:#ecefee;color:#64706c}.status-paused{background:#fde4e4;color:#9b2f2f}
.child-profile-form{display:grid;gap:14px}.profile-card{padding:var(--space-card);margin:0!important;border-radius:var(--radius);box-shadow:none}.card-heading{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:16px}.card-heading h2{margin:0;font-size:18px}.card-heading p{margin:5px 0 0;color:var(--muted);font-size:12px}.profile-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px 14px}.span-2{grid-column:span 2}.span-3{grid-column:span 3}.span-4{grid-column:span 4}.span-12{grid-column:1/-1}.segment-field>div{display:flex;gap:6px;flex-wrap:nowrap;width:100%}.segment-field>div>div{flex:1;min-width:0}.segment-field label:has(input){display:flex;justify-content:center;align-items:center;width:100%;height:var(--control-height);padding:7px;border:1px solid var(--line-strong);border-radius:8px;background:#fff;cursor:pointer;white-space:nowrap}.segment-field label:has(input:checked){background:var(--green);border-color:var(--green);color:#fff}.segment-field input{position:absolute;opacity:0;pointer-events:none}.address-unified{display:grid;grid-template-columns:auto 110px minmax(300px,1fr) minmax(220px,.55fr);gap:8px;align-items:end}.address-unified button{height:var(--control-height);white-space:nowrap}.profile-split{display:grid;grid-template-columns:1fr 1fr;gap:14px}.profile-chip-list{display:flex;gap:7px;flex-wrap:wrap}.contract-summary{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.contract-summary span{color:var(--muted);font-size:12px}.empty-note{color:var(--muted);padding:8px 0}.consultation-card{margin-top:14px!important}.consultation-form{display:grid;gap:12px}.consultation-meta{display:grid;grid-template-columns:170px minmax(180px,.7fr) minmax(280px,1.3fr);gap:16px}.consultation-columns{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ai-field-head{display:flex;justify-content:space-between;align-items:center}.consultation-columns textarea{width:100%;min-height:165px}.consultation-note{margin-top:12px}.consultation-note textarea{width:100%;min-height:64px}.consultation-history{margin-top:16px;border-top:1px solid var(--line);padding-top:13px}.consultation-history summary{cursor:pointer;font-weight:800}.consultation-history article{padding:14px 0;border-bottom:1px solid var(--line)}.consultation-history article p{line-height:1.55}.ai-summary-saved{padding:12px;background:#eef6f2;border-radius:8px;line-height:1.55}.schedule-delete-quick{display:flex;justify-content:flex-end;margin:-48px 0 12px}.schedule-delete-quick .danger-button{background:#fff}.intake-profile-form .profile-grid textarea{width:100%}.intake-profile-form .voucher-options>div{display:flex;gap:10px;flex-wrap:wrap}.other-voucher-field{max-width:360px;margin-top:10px}
@media(max-width:1250px){.filter-panel{grid-template-columns:repeat(3,minmax(150px,1fr))}.profile-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.profile-grid .span-2{grid-column:span 2}.profile-grid .span-3,.profile-grid .span-4{grid-column:span 3}.profile-grid .span-12{grid-column:1/-1}.address-unified{grid-template-columns:100px minmax(260px,1fr) auto}.address-detail-field{grid-column:2/4}}
@media(max-width:800px){.filter-panel{grid-template-columns:1fr 1fr}.profile-grid{grid-template-columns:1fr 1fr}.profile-grid .span-2,.profile-grid .span-3,.profile-grid .span-4{grid-column:span 1}.profile-grid .span-12{grid-column:1/-1}.profile-split,.consultation-columns{grid-template-columns:1fr}.address-unified{grid-template-columns:95px 1fr auto}.consultation-meta{grid-template-columns:1fr 1fr}.consultation-meta .field:last-child{grid-column:1/-1}}
@media(max-width:560px){.filter-panel,.profile-grid,.address-unified,.consultation-meta{grid-template-columns:1fr}.profile-grid .span-2,.profile-grid .span-3,.profile-grid .span-4,.profile-grid .span-12,.address-detail-field{grid-column:1}.segment-field>div{flex-wrap:wrap}.address-unified button{width:100%}.contract-summary{flex-direction:column}}

/* 신규접수: 실제 입력 길이에 맞춘 데스크톱 한 화면 구성 */
.compact-page-head{margin-bottom:10px}.compact-intake-form{display:grid;gap:10px}.compact-intake-card{padding:18px 26px;margin:0}.compact-intake-card h2{margin:0 0 12px;font-size:20px}.intake-basic-line{display:grid;grid-template-columns:132px 150px 150px 148px minmax(260px,1fr);gap:10px;align-items:start}.intake-contact-line{display:grid;grid-template-columns:180px 180px minmax(420px,1fr);gap:10px;margin-top:10px}.compact-intake-form .field label{display:block;margin-bottom:4px;font-weight:700}.compact-intake-form input,.compact-intake-form select,.compact-intake-form textarea{width:100%}.compact-intake-form .segment-field ul{display:flex;gap:4px;margin:0;padding:0;list-style:none}.compact-intake-form .segment-field li label{display:flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:6px;padding:8px 10px;white-space:nowrap}.identity-inputs{display:grid;grid-template-columns:105px auto minmax(90px,1fr);gap:4px;align-items:center}.identity-inputs input{min-width:0}.identity-separator{font-weight:800;color:var(--muted)}.address-inline>div{display:grid;grid-template-columns:minmax(260px,1fr) 84px;gap:6px}.address-inline button{white-space:nowrap}.intake-progress-line{display:grid;grid-template-columns:150px minmax(620px,1fr) 180px;gap:12px;align-items:start}.treatment-chip-list{display:flex;flex-wrap:wrap;gap:5px}.choice-chip{position:relative;margin:0!important}.choice-chip input{position:absolute;opacity:0;pointer-events:none}.choice-chip span{display:block;padding:7px 11px;border:1px solid #b8cbc4;border-radius:7px;background:#fff;cursor:pointer;white-space:nowrap;font-weight:600}.choice-chip input:checked+span{background:#116b52;color:#fff;border-color:#116b52}.consultation-layout{display:grid;grid-template-columns:1.35fr 1fr;gap:12px;margin-top:10px}.consultation-layout textarea{min-height:122px;resize:vertical}.label-action{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.label-action label{margin:0!important}.existing-child-inline{display:flex;gap:12px;align-items:center;margin-top:8px}.existing-child-inline #existingChildFields{display:grid;grid-template-columns:180px minmax(300px,1fr);gap:6px;flex:1}.compact-intake-form .form-actions{margin-top:0}.compact-intake-form small{display:block;color:#65756f;margin-top:3px}
@media(max-width:1200px){.intake-basic-line{grid-template-columns:repeat(3,1fr)}.identity-compact{grid-column:span 2}.intake-contact-line{grid-template-columns:1fr 1fr}.address-inline{grid-column:1/-1}.intake-progress-line{grid-template-columns:150px 1fr}.other-treatment{grid-column:2}.consultation-layout{grid-template-columns:1fr}}
.billing-month-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.billing-month-bar strong{font-size:18px;margin-right:auto}.billing-month-bar form{margin:0}.billing-summary{display:grid;grid-template-columns:repeat(4,minmax(145px,1fr));gap:10px;margin:12px 0}.billing-summary>div{display:flex;flex-direction:column;padding:14px;background:#fff;border:1px solid var(--line);border-radius:9px}.billing-summary b{font-size:20px}.billing-summary span{color:var(--muted);font-size:12px}.billing-tabs{display:flex;gap:4px;margin:10px 0}.billing-tabs a{padding:9px 14px;border:1px solid var(--line);border-radius:7px;background:#fff}.billing-tabs a.active{background:var(--green);color:#fff}.billing-charge-summary{display:grid;grid-template-columns:140px 1fr 140px 1fr;gap:8px 16px}.billing-charge-summary dt{font-weight:800}.billing-charge-summary dd{margin:0}.inline-form{display:inline}
.billing-summary-compact{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin:10px 0 0}.billing-summary-compact>div{min-width:0;padding:10px 11px}.billing-summary-compact b{font-size:18px;white-space:nowrap}.billing-summary-compact span,.billing-summary-compact small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.billing-summary-compact span{font-size:11px}.billing-summary-compact small{margin-top:3px;color:var(--muted);font-size:11px}.billing-summary-compact .billing-kpi-total{background:#fff5f2;border-color:#f0c2b8}.billing-ledger-summary{margin:12px 0}.billing-ledger-summary .billing-kpi-total b{color:#b64b40}@media(max-width:1200px){.billing-summary-compact{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:600px){.billing-summary-compact{grid-template-columns:repeat(2,minmax(0,1fr))}}
.billing-ledger-head{margin-bottom:8px}.billing-ledger-head h1{margin:0}.billing-money-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:0}.billing-money-head h2{margin:0;white-space:nowrap}.billing-month-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}.billing-month-actions strong{white-space:nowrap}.billing-month-actions form{margin:0}.billing-tabs-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 0}.billing-tabs-row .billing-tabs{margin:0}.billing-tab-actions{display:flex;align-items:center;gap:6px;white-space:nowrap}.billing-tab-actions .button{padding:7px 10px;font-size:12px}@media(max-width:1100px){.billing-money-head,.billing-tabs-row{align-items:flex-start;flex-direction:column}.billing-money-head,.billing-tab-actions{width:100%}.billing-month-actions{justify-content:flex-start}.billing-tab-actions{justify-content:flex-end}}@media(max-width:600px){.billing-tab-actions{justify-content:flex-start;flex-wrap:wrap}}
.schedule-card.schedule-highlight{outline:3px solid #f2a900;box-shadow:0 0 0 5px rgba(242,169,0,.2);animation:schedule-pulse 1.1s ease-in-out 2}@keyframes schedule-pulse{50%{transform:scale(1.02)}}
.session-result-table tbody tr td{transition:background-color .15s}.session-status-row-scheduled td{background:#f4f8fd}.session-status-row-completed td,.session-status-row-paid td,.session-status-row-makeup_completed td{background:#edf8f2}.session-status-row-approval_pending td{background:#fff7dc}.session-status-row-cancelled td,.session-status-row-closed td{background:#f1f2f2;color:#69736f}.session-status-row-same_day_cancel td{background:#ffeded}.session-status-row-absent td{background:#fff1e5}.session-status-row-makeup_planned td,.session-status-row-makeup td{background:#f1edfb}.session-status-row-suspended td{background:#f5eeee}.session-status-row-carryover td{background:#eaf2fb}.status-scheduled{background:#dfeaf7;color:#28527e}.status-paid,.status-makeup_completed{background:#d6eee2;color:#145c42}.status-approval_pending{background:#ffe8a6;color:#765400}.status-cancelled,.status-closed{background:#dfe2e1;color:#59615e}.status-same_day_cancel{background:#ffd3d3;color:#942e2e}.status-absent{background:#ffe0c2;color:#8a4b0f}.status-makeup_planned,.status-makeup{background:#e3daf7;color:#5d438c}.status-suspended{background:#eadede;color:#754545}.status-carryover{background:#d8e8f7;color:#315f89}
.service-history-group{padding:12px 0;border-top:1px solid var(--line)}.service-history-group:first-of-type{border-top:0}.service-history-group h3,.service-history-group p{margin:0 0 5px}.service-assignment-row{display:grid;grid-template-columns:1.1fr 1fr auto;gap:14px;align-items:center;padding:11px;background:#f5f9f7;border-radius:8px;margin-top:8px}.service-assignment-row>div{display:flex;flex-direction:column;gap:4px}.service-assignment-row .row-actions{flex-direction:row;white-space:nowrap}
.quick-assignment-form{padding:16px 20px}.quick-assignment-form>section{padding:5px 0 16px}.quick-assignment-form>section+section{border-top:1px solid var(--line);padding-top:16px}.quick-assignment-form h2{margin:0 0 12px;font-size:18px}.quick-assignment-form h3{margin:0;font-size:16px}.quick-assignment-grid{display:grid;grid-template-columns:180px 180px minmax(320px,1fr) 145px 145px;gap:10px;align-items:start}.quick-treatment-field ul{display:flex;gap:5px;flex-wrap:wrap;margin:0;padding:0;list-style:none}.quick-treatment-field label:has(input){display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:7px;padding:8px 10px;background:#fff}.quick-treatment-field label:has(input:checked){background:var(--green);color:#fff}.assignment-line{grid-template-columns:130px minmax(300px,1fr) 130px 180px}.quick-assignment-details{border:1px solid var(--line);border-radius:8px;padding:10px 12px}.quick-assignment-details summary{cursor:pointer;font-weight:800}.quick-assignment-details[open] .quick-assignment-grid{margin-top:12px;grid-template-columns:180px 1fr}.quick-note-field textarea{min-height:58px}.quick-slot{display:flex;flex-direction:column;gap:2px;min-width:125px;text-align:left}.quick-slot.selected{background:var(--green);border-color:var(--green);color:#fff}.quick-slot span{font-size:11px}.quick-assignment-form .available-slots-panel{margin-top:12px}.quick-assignment-form .form-actions{position:static;padding-bottom:0}@media(max-width:1100px){.quick-assignment-grid,.assignment-line{grid-template-columns:repeat(2,minmax(180px,1fr))}.quick-treatment-field,.therapist-match-field{grid-column:1/-1}}@media(max-width:650px){.quick-assignment-grid,.assignment-line,.quick-assignment-details[open] .quick-assignment-grid{grid-template-columns:1fr}.quick-treatment-field,.therapist-match-field{grid-column:auto}}
.quick-choice-band{display:grid;grid-template-columns:minmax(280px,.7fr) minmax(520px,1.3fr);gap:14px;padding:16px;background:#edf7f2;border:2px solid #9fcbbb;border-radius:10px;margin-bottom:12px}.quick-choice-band b{font-size:16px;color:#114f3d}.quick-choice-band select{min-height:42px;font-weight:800}.quick-choice-band small{margin-top:5px}.quick-choice-band .quick-treatment-field{grid-column:auto}.quick-contract-meta{grid-template-columns:180px 150px 150px}@media(max-width:1000px){.quick-choice-band{grid-template-columns:1fr}.quick-contract-meta{grid-template-columns:repeat(3,minmax(150px,1fr))}}@media(max-width:650px){.quick-contract-meta{grid-template-columns:1fr}}
.quick-treatment-field>.control,.quick-treatment-field>div{display:flex!important;flex-flow:row wrap!important;align-items:center;gap:6px;margin-top:6px}.quick-treatment-field>.control>div,.quick-treatment-field>div>div{display:block!important;margin:0}.quick-treatment-field>.control label,.quick-treatment-field>div label{display:inline-flex!important;align-items:center;gap:5px;white-space:nowrap;margin:0;padding:8px 11px;border:1px solid #b8cec6;border-radius:999px;background:#fff;cursor:pointer}.quick-treatment-field>.control label:has(input:checked),.quick-treatment-field>div label:has(input:checked){background:var(--green);border-color:var(--green);color:#fff}

/* 아동 중심 서비스 통합 화면 */
.profile-anchor-nav{position:sticky;top:0;z-index:5;display:flex;gap:6px;padding:8px 0;background:#f4f7f5}.profile-anchor-nav a{padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;text-decoration:none}.compact-profile-card{padding:16px 18px}.profile-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 20px;margin:0}.profile-summary-grid>div{min-width:0}.profile-summary-grid dt{color:var(--muted);font-size:.82rem}.profile-summary-grid dd{margin:3px 0 0;overflow-wrap:anywhere}.service-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:18px}.service-card{margin:0;padding:16px}.service-card header,.service-card footer{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.service-card h3{margin:12px 0 10px}.service-card dl{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px}.service-card dl>div{min-width:0}.service-card dt{font-size:.78rem;color:var(--muted)}.service-card dd{margin:3px 0 0}.service-card footer{justify-content:flex-start;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}.service-area-badge,.funding-badge,.schedule-edit-badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:.82rem;font-weight:700;text-decoration:none}.service-area-badge{background:#e7f3ef;color:#075b47}.funding-general{background:#eeeaf8;color:#654c91}.funding-voucher{background:#e2f2e8;color:#166744}.schedule-edit-badge{background:#f2f8f5;border:1px solid #9ec8b9;color:#075b47}.schedule-edit-badge:hover{background:#dff1ea}.schedule-badge-list{display:flex;gap:5px;flex-wrap:wrap}.service-empty{grid-column:1/-1;text-align:center}.ended-service-history{margin-top:14px}.consultation-summary{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}.sensitive-actions form{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin-top:10px}.sensitive-actions label{display:grid;gap:4px}.sensitive-actions form+form{border-top:1px solid var(--line);padding-top:10px}

/* 치료영역·결제구분 가로형 칩 */
.treatment-area-chip-field ul,.treatment-area-chip-field>div,.contract-funding-field ul,.quick-funding-choice ul{display:flex!important;flex-wrap:wrap;gap:6px 8px;list-style:none;margin:6px 0 0;padding:0}.treatment-area-chip-field ul,.treatment-area-chip-field>div{flex-wrap:nowrap;overflow-x:auto;padding-bottom:3px}.treatment-area-chip-field li,.treatment-area-chip-field>div>div,.contract-funding-field li,.quick-funding-choice li{margin:0}.treatment-area-chip-field li,.treatment-area-chip-field>div>div{flex:0 0 auto}.treatment-area-chip-field ul label,.treatment-area-chip-field>div label,.contract-funding-field label,.quick-funding-choice label{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;border:1px solid #b8cec6;border-radius:999px;background:#fff;cursor:pointer;white-space:nowrap}.treatment-area-chip-field>label{display:block;padding:0;border:0;border-radius:0;background:transparent;cursor:default}.treatment-area-chip-field label:has(input:checked),.contract-funding-field label:has(input:checked),.quick-funding-choice label:has(input:checked){background:#146b53;color:#fff;border-color:#146b53}.treatment-area-chip-field input,.contract-funding-field input,.quick-funding-choice input{accent-color:#146b53}.voucher-service-fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px;padding:12px;border-radius:10px;background:#f3f8f6}.voucher-service-fields[hidden],.contract-voucher-money[hidden],.contract-extra-fee[hidden],.general-money-field[hidden]{display:none!important}.quick-choice-band{grid-template-columns:minmax(220px,.45fr) minmax(260px,.65fr) minmax(500px,1.3fr)}
@media(max-width:1100px){.service-card-grid{grid-template-columns:1fr}.profile-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.voucher-service-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.quick-choice-band{grid-template-columns:1fr 1fr}.quick-treatment-field{grid-column:1/-1}}
.month-switcher{display:flex;align-items:center;justify-content:center;gap:18px;padding:10px;margin-bottom:10px}.month-switcher b{font-size:18px}.holiday-form{padding:14px}.holiday-form-grid{display:grid;grid-template-columns:150px 220px minmax(260px,1fr) 250px auto;gap:12px;align-items:end}.holiday-form-grid .form-actions{margin:0}.holiday-notice{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff3cd;border-color:#e3bd54}.holiday-notice a{margin-left:auto}.center-holiday{background:#f7eee6!important}.day-head.center-holiday{color:#8a481f;border-color:#d8a77e}.holiday-cell-label{display:flex;align-items:center;justify-content:center;min-height:90px;color:#9a5a32;font-weight:800}.timeline-column.center-holiday .timeline-track{background:repeating-linear-gradient(135deg,#faf4ee,#faf4ee 8px,#f1e4d8 8px,#f1e4d8 16px)}.inactive-row{opacity:.62}@media(max-width:1100px){.holiday-form-grid{grid-template-columns:1fr 1fr}}

/* 정기수업 등록: 아동을 먼저 찾고 기존 일정을 보면서 이어서 추가한다. */
.form-grid.schedule-entry-form>.schedule-form-grid{grid-template-columns:repeat(12,minmax(0,1fr))}
.schedule-form-grid>div{min-width:0}.schedule-form-grid>div>.field{display:flex;flex-direction:column;gap:5px}
.schedule-child-field{grid-column:span 3;display:flex;flex-direction:column;gap:5px}
.schedule-funding-field{grid-column:span 2}.schedule-contract-field{grid-column:span 3}.schedule-assignment-field{grid-column:span 4}
.schedule-weekday-field{grid-column:span 1}.schedule-room-field{grid-column:span 2}.schedule-time-field{grid-column:span 2}.schedule-start-field{grid-column:span 2}
.schedule-period-field{grid-column:span 4;display:flex;flex-direction:column;gap:5px}.schedule-active-field{grid-column:span 1}.schedule-edit-scope-field{grid-column:span 3}
.schedule-child-select{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.schedule-period-field output{min-height:38px;padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:#f4f8f6;color:#31554a}
.form-grid.schedule-entry-form>.existing-schedules-panel{grid-column:1/-1;border-top:1px solid var(--line);padding-top:12px}
.existing-schedule-list{display:grid;grid-template-columns:repeat(3,minmax(240px,1fr));gap:8px}
.existing-schedule-item{position:relative;display:flex;flex-direction:column;gap:4px;min-width:0;padding:11px 64px 11px 12px;border:1px solid #b9d5ca;border-left:4px solid var(--green);border-radius:7px;background:#f5faf8}
.existing-schedule-item.inactive{opacity:.65;border-color:#cbd2cf;border-left-color:#87928e;background:#f4f5f5}
.existing-schedule-item b,.existing-schedule-item span,.existing-schedule-item small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 새 서비스·치료사·정기수업: 가로형 고밀도 등록 화면 */
.quick-assignment-form{display:grid;gap:10px;padding:0;min-width:0}.quick-assignment-form *{box-sizing:border-box}.quick-assignment-form>section.quick-section-card{min-width:0;margin:0;padding:14px 16px;border:1px solid #b9d4ca;border-radius:10px;background:#fff}.quick-assignment-form>section.quick-section-card+section.quick-section-card{border-top:1px solid #b9d4ca;padding-top:14px}.quick-section-card h2{margin:0 0 10px;font-size:18px}.quick-section-card h2 small{font-size:12px;color:var(--muted)}
.quick-choice-band{display:grid;grid-template-columns:170px 280px minmax(0,1fr);gap:12px;align-items:start;margin:0;padding:11px 12px;border:1px solid #a7cdbf;border-radius:8px;background:#eef8f4}.quick-choice-band>*{min-width:0}.quick-choice-band b{font-size:14px}.quick-choice-band select{width:100%;min-width:0;min-height:38px}.quick-choice-band small{white-space:normal;overflow-wrap:anywhere}.quick-funding-choice>div,.quick-funding-choice ul{flex-wrap:nowrap!important;gap:4px!important}.quick-funding-choice label{padding:6px 9px!important}
.quick-treatment-field>.control,.quick-treatment-field>div{display:flex!important;flex-flow:row nowrap!important;gap:4px;margin-top:5px;min-width:0}.quick-treatment-field>.control>div,.quick-treatment-field>div>div{flex:0 0 auto}.quick-treatment-field>.control label,.quick-treatment-field>div label{padding:6px 8px;font-size:13px;line-height:1.15}
.quick-pricing-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-top:10px;align-items:start}.quick-pricing-grid>*{min-width:0}.quick-pricing-grid input,.quick-pricing-grid select{width:100%;min-width:0}.quick-pricing-grid small,.quick-pricing-grid .errorlist{white-space:normal;overflow-wrap:anywhere}.voucher-only-field[hidden],.general-money-field[hidden],.aba-extra-field[hidden]{display:none!important}.quick-policy-amount output,.quick-selected-slot-field output{display:flex;align-items:center;min-height:38px;width:100%;padding:8px 10px;border:1px solid #a9c5ba;border-radius:6px;background:#f4f9f7;font-weight:800;color:#145742}.quick-policy-guide{margin:8px 0 0;padding:7px 9px;border-radius:6px;background:#f5f8f7}.quick-policy-guide.policy-error{background:#fff0f0;color:#a22}
.quick-schedule-grid{display:grid;grid-template-columns:280px minmax(260px,360px) minmax(260px,1fr);gap:12px;align-items:start}.quick-schedule-grid>*{min-width:0}.quick-weekday-field>.quick-weekday-buttons,.quick-weekday-field>div{display:flex!important;flex-flow:row nowrap!important;gap:4px;margin-top:5px}.quick-weekday-field>.quick-weekday-buttons>div,.quick-weekday-field>div>div{margin:0}.quick-weekday-field label{display:inline-flex;align-items:center;justify-content:center;gap:3px;width:42px;padding:7px 5px;border:1px solid #aec9bf;border-radius:6px;background:#fff;cursor:pointer}.quick-weekday-field label:has(input:checked){background:var(--green);border-color:var(--green);color:#fff}.therapist-match-field select{width:100%;max-width:360px}.quick-selected-slot-field output{font-weight:700}.quick-assignment-form .available-slots-panel{margin:10px 0 0;padding:10px 12px;border:1px solid #d1e0da;border-radius:8px;background:#f8fbfa}.available-slot-buttons{display:flex;flex-wrap:wrap;gap:6px}.quick-slot{min-width:105px;padding:7px 9px}.quick-room-choices{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:8px;padding-top:8px;border-top:1px dashed #b7cec5}.quick-room-choices[hidden]{display:none!important}.quick-room-choices button{padding:6px 9px}.quick-note-field{margin-top:10px;width:100%}.quick-note-field textarea{display:block;width:100%;min-height:82px;resize:vertical}
.current-child-schedules{padding-top:14px!important}.current-schedule-chips{display:flex;flex-wrap:wrap;gap:7px}.current-schedule-link{display:inline-flex;align-items:center;gap:3px;min-width:0;padding:8px 10px;border:1px solid #a9cdbf;border-radius:7px;background:#f4faf7;color:#0d6149;text-decoration:none}.current-schedule-link:hover,.current-schedule-link:focus-visible{background:#e2f3eb;text-decoration:underline;outline:2px solid #70a994;outline-offset:1px}.quick-form-actions{display:flex!important;justify-content:flex-end!important;gap:8px;margin:0;padding:2px 0 0;position:static!important}.quick-form-actions .button,.quick-form-actions button{margin:0}
@media(max-width:1500px){.quick-choice-band{grid-template-columns:160px 250px minmax(0,1fr)}.quick-treatment-field>.control,.quick-treatment-field>div{flex-wrap:wrap!important}.quick-treatment-field>.control>div,.quick-treatment-field>div>div{flex-basis:auto}.quick-schedule-grid{grid-template-columns:270px minmax(240px,320px) minmax(240px,1fr)}}
@media(max-width:1100px){.quick-choice-band{grid-template-columns:160px minmax(230px,1fr)}.quick-treatment-field{grid-column:1/-1}.quick-schedule-grid{grid-template-columns:1fr 1fr}.quick-selected-slot-field{grid-column:1/-1}}
@media(max-width:650px){.quick-choice-band,.quick-schedule-grid,.quick-pricing-grid{grid-template-columns:1fr}.quick-treatment-field{grid-column:auto}.quick-form-actions{flex-direction:column-reverse}.quick-form-actions .button,.quick-form-actions button{width:100%;text-align:center;justify-content:center}}
.existing-schedule-item>.button{position:absolute;top:10px;right:10px;padding:5px 9px}
@media(max-width:1200px){.schedule-child-field,.schedule-assignment-field{grid-column:span 4}.schedule-funding-field,.schedule-weekday-field,.schedule-room-field,.schedule-time-field,.schedule-start-field,.schedule-active-field{grid-column:span 2}.schedule-contract-field,.schedule-period-field,.schedule-edit-scope-field{grid-column:span 4}.existing-schedule-list{grid-template-columns:repeat(2,minmax(220px,1fr))}}
@media(max-width:700px){.form-grid.schedule-entry-form>.schedule-form-grid{grid-template-columns:1fr}.schedule-form-grid>div,.schedule-child-field,.schedule-funding-field,.schedule-contract-field,.schedule-assignment-field,.schedule-weekday-field,.schedule-room-field,.schedule-time-field,.schedule-start-field,.schedule-period-field,.schedule-active-field,.schedule-edit-scope-field{grid-column:1}.existing-schedule-list{grid-template-columns:1fr}}

/* 아동관리/진행아동: 진행서비스 정렬 보정 */
.form-grid.contract-entry-form>.contract-form-grid{display:grid;grid-column:1/-1;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 14px;align-items:start;max-width:1240px;width:100%}
.contract-entry-form .contract-form-grid>.field{min-width:0;display:flex;flex-direction:column;gap:5px}
.contract-entry-form .contract-form-grid>.field input:not([type=radio]),.contract-entry-form .contract-form-grid>.field select,.contract-entry-form .contract-form-grid>.field textarea{width:100%;min-width:0}
.contract-entry-form .contract-treatment-field{grid-column:1/-1}
.contract-entry-form .contract-treatment-field>div{display:flex;flex-wrap:wrap;gap:6px 8px}
.contract-entry-form .contract-treatment-field label:has(input),.contract-entry-form .contract-funding-field label:has(input){padding:6px 10px;border-radius:999px}
.contract-entry-form .contract-note-field{grid-column:span 2}
.contract-entry-form>.contract-policy-details,.contract-entry-form>.contract-source-details{max-width:1240px;width:100%}
.schedule-entry-form>section.quick-section-card,.schedule-entry-form>.schedule-edit-summary,.schedule-entry-form>.available-slots-panel,.schedule-entry-form>.existing-schedules-panel{max-width:1240px;width:100%}
.schedule-entry-form .schedule-choice-band{grid-template-columns:minmax(190px,1fr) minmax(150px,180px) minmax(260px,2fr)}
.form-error-summary{grid-column:1/-1;width:min(100%,1240px);padding:12px 15px;border:1px solid #e3a8a8;border-radius:8px;background:#fff1f1;color:#932d2d;line-height:1.5}
.form-error-summary ul{margin:6px 0 0;padding-left:20px}
.form-error-summary:focus{outline:2px solid #d45b55;outline-offset:2px}
@media(max-width:900px){.form-grid.contract-entry-form>.contract-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-entry-form .schedule-choice-band{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-entry-form .schedule-contract-field{grid-column:1/-1}}
@media(max-width:600px){.form-grid.contract-entry-form>.contract-form-grid,.schedule-entry-form .schedule-choice-band{grid-template-columns:1fr}.contract-entry-form .contract-note-field,.schedule-entry-form .schedule-contract-field{grid-column:1}}
/* 신규 등록과 기존 정기수업 수정은 같은 서비스 설정 화면 구성을 사용한다. */
.schedule-entry-form>section.quick-section-card,.schedule-entry-form>.schedule-edit-summary{max-width:none;width:100%}
.schedule-entry-form .service-setup-choice-band{grid-template-columns:160px 280px minmax(0,1fr)}
.schedule-child-title-link{color:inherit;text-decoration:underline;text-decoration-color:#f2766c;text-decoration-thickness:2px;text-underline-offset:5px}
.schedule-child-title-link:hover,.schedule-child-title-link:focus-visible{color:#cf544a}
.schedule-entry-form .schedule-child-field{width:min(100%,640px);margin:8px 0 16px}
.schedule-entry-form .schedule-child-field>label{font-size:14px}
.schedule-entry-form .schedule-child-field>input{min-height:42px;font-size:14px}
.schedule-entry-form .schedule-native-funding,.schedule-entry-form .schedule-native-weekday{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.schedule-entry-form .schedule-funding-buttons,.schedule-entry-form .schedule-weekday-buttons{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:5px}
.schedule-entry-form .schedule-funding-buttons button,.schedule-entry-form .schedule-weekday-buttons button,.schedule-entry-form .service-choice-chip{border:1px solid #eccbc3;background:#fff;color:#383439;font-weight:700}
.schedule-entry-form .schedule-funding-buttons button{border-radius:999px;min-width:70px}
.schedule-entry-form .schedule-weekday-buttons button{width:38px;padding:8px 4px}
.schedule-entry-form .schedule-funding-buttons button.active,.schedule-entry-form .schedule-weekday-buttons button.active,.schedule-entry-form .service-choice-chip.active{background:#f2766c;border-color:#f2766c;color:#fff}
.schedule-entry-form .schedule-treatment-choices{display:flex!important;flex-wrap:wrap!important;align-items:center;gap:5px;margin-top:5px;min-height:38px}
.schedule-entry-form .service-choice-chip{display:inline-flex;align-items:center;border-radius:999px;padding:7px 11px;white-space:nowrap;font-size:13px}
.schedule-entry-form .quick-schedule-grid{grid-template-columns:250px minmax(240px,330px) minmax(250px,1fr)}
.schedule-entry-form .schedule-time-grid{grid-template-columns:repeat(3,minmax(150px,220px));justify-content:start}
.schedule-entry-form .schedule-period-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.schedule-entry-form .schedule-period-grid .schedule-contract-field{min-width:220px}
.schedule-entry-form .form-save-dock{position:static;border:0;background:transparent;padding:2px 0;gap:8px}
.schedule-entry-form .current-schedule-link.inactive{opacity:.6}
.schedule-entry-form .quick-schedule-grid{grid-template-columns:280px minmax(260px,360px) minmax(260px,1fr)}
.schedule-entry-form .schedule-period-grid{grid-template-columns:repeat(5,minmax(0,1fr))}
.schedule-entry-form .schedule-period-grid>*{grid-column:auto;min-width:0}
.schedule-entry-form .schedule-service-summary{grid-template-columns:repeat(5,minmax(0,1fr))}
.schedule-entry-form .schedule-service-summary .field{min-width:0}
.schedule-entry-form .schedule-service-summary output{display:flex;align-items:center;min-height:38px;padding:8px 10px;border:1px solid #a9c5ba;border-radius:6px;background:#f4f9f7;font-weight:700}
.week-changes>summary{display:flex;align-items:center;gap:12px;flex-wrap:wrap;list-style:none}
.week-changes>summary::-webkit-details-marker{display:none}
.week-changes>summary::before{content:"▸";flex:none;font-size:12px}
.week-changes[open]>summary::before{content:"▾"}
.week-change-heading{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.week-changes .schedule-source-summary{display:flex;flex:1 1 600px;justify-content:flex-end;align-items:center;gap:4px 12px;min-width:0;margin:0;padding:0;border:0;background:none;font-size:11px;font-weight:400}
.week-changes .schedule-source-summary>*{white-space:nowrap}
@media(max-width:1100px){.week-changes .schedule-source-summary{justify-content:flex-start;flex-basis:100%;padding-left:17px}}
.schedule-entry-form .schedule-period-grid .schedule-contract-field{min-width:0}
.schedule-entry-form .schedule-time-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.schedule-entry-form .schedule-time-grid>*{grid-column:auto;min-width:0}
@media(max-width:1100px){.schedule-entry-form .schedule-period-grid,.schedule-entry-form .schedule-service-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-entry-form .quick-schedule-grid{grid-template-columns:1fr 1fr}}
@media(max-width:650px){.schedule-entry-form .schedule-period-grid,.schedule-entry-form .schedule-service-summary,.schedule-entry-form .schedule-time-grid,.schedule-entry-form .quick-schedule-grid{grid-template-columns:1fr}}
.schedule-save-warning{width:min(440px,calc(100vw - 32px));max-height:min(75vh,640px);padding:20px;border:1px solid #e4c6bf;border-radius:12px;box-shadow:0 20px 60px #30251f38;color:var(--ink);background:#fff}
.schedule-save-warning::backdrop{background:#26332ecc}
.schedule-save-warning h2{margin:0 0 10px;font-size:19px}
.schedule-save-warning p{margin:0 0 10px}
.schedule-save-warning ul{max-height:40vh;overflow:auto;margin:0 0 16px;padding-left:20px}
.schedule-save-warning li+li{margin-top:6px}
.schedule-save-warning form{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
@media(max-width:1000px){.schedule-entry-form .service-setup-choice-band{grid-template-columns:160px minmax(200px,1fr)}.schedule-entry-form .quick-treatment-field{grid-column:1/-1}.schedule-entry-form .quick-schedule-grid{grid-template-columns:1fr 1fr}.schedule-entry-form .quick-selected-slot-field{grid-column:1/-1}}
@media(max-width:650px){.schedule-entry-form .service-setup-choice-band,.schedule-entry-form .quick-schedule-grid,.schedule-entry-form .schedule-time-grid{grid-template-columns:1fr}.schedule-entry-form .quick-treatment-field,.schedule-entry-form .quick-selected-slot-field{grid-column:1}}
.child-list-table{table-layout:fixed;width:100%;min-width:1120px}
.child-list-table th,.child-list-table td{vertical-align:middle;white-space:normal;word-break:break-word;overflow-wrap:anywhere}
.child-col-name{width:16%}
.child-col-area{width:13%}
.child-col-therapist{width:13%}
.child-col-support{width:13%}
.child-col-schedule{width:19%}
.child-col-status{width:18%}
.child-col-manage{width:8%}
.child-list-table th:nth-child(6),.child-list-table td:nth-child(6){width:18%}
.child-list-table th:nth-child(7),.child-list-table td:nth-child(7){width:8%}
.child-list-table th:nth-child(1),.child-list-table td:nth-child(1){min-width:0}
.child-list-table th{overflow-wrap:anywhere;padding-right:8px}
.child-list-table td{overflow-wrap:anywhere;padding-right:10px}
.child-list-table .chip-stack{align-items:stretch;display:flex;flex-direction:column;gap:5px}
.child-list-table .chip-stack span{white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;padding-right:4px}
.child-list-table .child-col-status,.child-list-table .child-col-manage{white-space:nowrap;word-break:keep-all}

/* 진행서비스(아동 카드) 라벨/값 균형 */
.service-card dl{grid-template-columns:125px 1fr}
.service-card dd{min-width:0;overflow-wrap:anywhere}
.service-assignment-row{grid-template-columns:minmax(0,2.2fr) minmax(0,1.8fr) minmax(0,1.1fr);gap:12px;align-items:stretch}
.service-assignment-row > div{min-width:0}
.service-assignment-row > div:not(:last-child){min-width:0}
.service-assignment-col{min-width:0}
.service-assignment-row span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.service-assignment-row .row-actions{justify-content:flex-end;white-space:normal}

/* 행렬이 같은 뷰에서 보이도록 진행서비스 칸 너비 고정 */
.service-assignment-therapist{min-width:0}
.service-assignment-summary{min-width:0}

/* 통계·회계 운영화면 */
.accounting-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:16px 0}
.accounting-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-bottom:14px}
.accounting-metrics>a,.accounting-metrics>div{display:flex;flex-direction:column;gap:6px;padding:16px;border:1px solid var(--border,#d8e2dd);border-radius:12px;background:#fff;color:inherit;text-decoration:none}
.accounting-metrics b{font-size:1.45rem;color:#176b43}
.accounting-filters{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr));align-items:end}
.operational-filter-card{padding:12px;margin-bottom:12px}
.operational-filter-form{display:grid;gap:9px}
.operational-period-row,.operational-filter-row{display:grid;gap:8px;align-items:end}
.operational-period-row{grid-template-columns:200px 200px minmax(390px,1fr)}
.operational-period-row label{display:flex;align-items:center;gap:6px;white-space:nowrap;font-weight:700}
.operational-period-row input,.operational-period-row select{width:135px;min-width:0}
.operational-period-buttons{display:flex;align-items:center;gap:5px;flex-wrap:nowrap}
.operational-period-buttons .button{padding:8px 12px;white-space:nowrap}
.operational-period-buttons .active{background:var(--green);border-color:var(--green);color:#fff}
.operational-filter-row{grid-template-columns:repeat(5,minmax(125px,1fr)) 90px}
.operational-filter-row select,.operational-filter-row button{width:100%;min-width:0}
.operational-summary-metrics{grid-template-columns:repeat(5,minmax(130px,1fr))}
.operational-summary-metrics>a,.operational-summary-metrics>div{min-width:0;padding:14px}
.operational-summary-metrics span{white-space:nowrap}
.operational-filter-row-compact{grid-template-columns:repeat(3,minmax(160px,240px)) 90px;justify-content:start}
.operational-kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(135px,1fr));gap:10px;margin-bottom:14px}
.operational-kpi{display:flex;flex-direction:column;gap:5px;min-width:0;padding:15px;border:1px solid var(--line);border-radius:10px;background:#fff;color:inherit;text-decoration:none}
.operational-kpi>span{font-size:13px;color:var(--muted);white-space:nowrap}.operational-kpi>b{font-size:1.45rem;color:var(--green);white-space:nowrap}.operational-kpi>small{min-height:28px;font-size:11px;line-height:1.3}.operational-kpi-total{border-color:#8ebdab;background:#f1f8f5}.comparison-up{color:#b3261e}.comparison-down{color:#176bb0}.comparison-same{color:var(--muted)}
.operational-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:14px}.operational-chart-card{min-width:0;padding:17px}.operational-chart-card+.operational-chart-card{margin-top:0}.operational-chart-card .section-head{align-items:flex-start}.operational-chart-card h2{margin:0 0 4px}.operational-chart-card p{margin:0;color:var(--muted);font-size:12px}.operational-chart-card .section-head>a{white-space:nowrap;font-size:13px}
.stat-bar-list{display:grid;gap:10px;margin-top:15px}.stat-bar-row{display:grid;grid-template-columns:120px minmax(120px,1fr) 52px;gap:9px;align-items:center;min-width:0}.stat-bar-row.revenue-row{grid-template-columns:120px minmax(120px,1fr) 100px}.stat-bar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:700}.stat-bar-track{position:relative;height:19px;overflow:hidden;border-radius:999px;background:#edf2f0}.stat-bar-fill{display:block;width:var(--bar-width);height:100%;min-width:2px;border-radius:999px;transition:width .2s}.stat-bar-fill.people{background:#3b9274}.stat-bar-fill.revenue{background:#5c79b9}.stat-bar-row>b{text-align:right;white-space:nowrap;font-size:13px}
.operational-breakdown-card{padding:17px}.operational-breakdown-table{min-width:720px}.operational-breakdown-table th:not(:first-child),.operational-breakdown-table td:not(:first-child){text-align:right}.operational-breakdown-table tfoot th{position:static;background:#f0f7f4;border-top:2px solid #b7cec5}.operational-source-note{margin:12px 2px 0;color:var(--muted);font-size:12px}
.compact-form p{display:grid;grid-template-columns:minmax(130px,.55fr) minmax(0,1.45fr);gap:10px;align-items:center;margin:8px 0}
.compact-form p>label{font-weight:700}
.compact-form ul.errorlist{grid-column:2;color:#b42318}
.bulk-policy-form .checkboxselectmultiple,.chip-row{display:flex;flex-wrap:wrap;gap:8px}
.pay-statement{max-width:1100px;margin:0 auto;background:#fff;padding:28px;border:1px solid #dce5e0;border-radius:14px}
.pay-statement header{text-align:center;border-bottom:2px solid #2a7652;margin-bottom:18px}
.pay-statement dl{display:grid;grid-template-columns:1fr auto;gap:8px 16px}
.pay-statement dt,.pay-statement dd{margin:0;padding:6px;border-bottom:1px solid #edf1ef}
.payroll-review{background:#fff3cd;color:#7a4d00}.payroll-confirmed,.payroll-paid{background:#dff4e8;color:#176b43}
.payroll-history-filter{display:flex;align-items:end;gap:8px;padding:12px;margin-bottom:12px}.payroll-history-filter label{display:grid;gap:4px;font-weight:700}.payroll-history-filter select{min-width:240px}.payroll-policy-summary{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px;margin-bottom:14px}.payroll-policy-summary>div{display:flex;flex-direction:column;gap:5px;padding:14px 16px;border:1px solid var(--line);border-radius:9px;background:#fff}.payroll-policy-summary span{font-size:13px;color:var(--muted)}.payroll-policy-summary b{font-size:1.4rem;color:var(--green)}.payroll-policy-summary .warning{border-color:#e6b5a9;background:#fff7f4}.payroll-policy-summary .warning b{color:#a7422e}.payroll-overview-card,.payroll-history-card{padding:16px}.payroll-overview-card .section-head,.payroll-history-card .section-head{align-items:flex-start;margin-bottom:12px}.payroll-overview-card h2,.payroll-history-card h2{margin:0 0 4px}.payroll-overview-card p,.payroll-history-card p{margin:0;color:var(--muted);font-size:12px}.payroll-overview-table{min-width:1180px}.payroll-overview-table td:last-child{white-space:normal}.payroll-history-card{margin-top:14px}.payroll-history-tabs{margin-bottom:10px}.payroll-history-tabs button{padding:8px 13px;border-radius:7px}.payroll-history-tabs button.active{background:var(--green);border-color:var(--green);color:#fff}
@media(max-width:1100px){.operational-period-row{grid-template-columns:1fr 1fr}.operational-period-buttons{grid-column:1/-1}.operational-filter-row{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1100px){.operational-kpi-grid{grid-template-columns:repeat(3,minmax(145px,1fr))}.operational-chart-grid{grid-template-columns:1fr}.payroll-policy-summary{grid-template-columns:repeat(2,minmax(150px,1fr))}}
@media(max-width:900px){.accounting-two{grid-template-columns:1fr}.accounting-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.compact-form p{grid-template-columns:1fr}.operational-summary-metrics{grid-template-columns:repeat(5,minmax(115px,1fr));overflow-x:auto}}
@media(max-width:600px){.operational-period-row,.operational-filter-row{grid-template-columns:1fr}.operational-period-buttons{grid-column:auto;overflow-x:auto}.operational-summary-metrics{grid-template-columns:repeat(2,minmax(130px,1fr))}.operational-kpi-grid{grid-template-columns:repeat(2,minmax(130px,1fr))}.stat-bar-row,.stat-bar-row.revenue-row{grid-template-columns:90px minmax(90px,1fr) 82px}}
@media print{.sidebar,.topbar,.no-print,.message,.filters{display:none!important}.app-main{margin:0!important}.app-main main{padding:0!important}.pay-statement{border:0;padding:0;max-width:none}body{background:#fff}.table-wrap{overflow:visible}table{font-size:10pt}}

/* 설정: 센터 기본정보 · 사용자 권한 · 변경이력 */
.center-profile-form{max-width:1100px}.center-profile-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:14px;margin-top:18px}.center-profile-grid .field{display:flex;flex-direction:column;gap:5px}.center-profile-grid .field-wide{grid-column:1/-1}.center-asset-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:22px}.center-asset-grid section{display:grid;gap:10px;align-content:start;padding:18px;border:1px solid var(--line);border-radius:10px;background:#f9fbfa}.center-asset-grid h3{margin:0}.center-logo-preview{width:min(260px,100%);height:100px;object-fit:contain;object-position:left center;background:#fff;border:1px solid var(--line);border-radius:8px}.center-stamp-preview{width:120px;height:120px;object-fit:contain;object-position:center;background:#fff;border:1px solid var(--line);border-radius:8px}.asset-placeholder{display:flex;align-items:center;justify-content:center;width:min(260px,100%);height:100px;border:1px dashed #a9bbb5;border-radius:8px;background:#fff;color:var(--muted)}.asset-placeholder.stamp{width:120px;height:120px;border-radius:8px;color:#d45f56;font-weight:800}.permission-table td{vertical-align:middle}.permission-table td:first-child small{display:block}.permission-toggle,.permission-groups label{display:flex;align-items:center;gap:5px;white-space:nowrap}.permission-toggle input,.permission-groups input{width:auto}.permission-groups{display:flex;gap:9px;flex-wrap:wrap}.permission-help{margin:14px 0 0}.audit-filter input{width:min(540px,100%)}.audit-list{display:grid;gap:12px}.audit-entry{margin:0}.audit-entry header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.audit-entry header>div{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.audit-entry header time,.audit-entry header span{color:var(--muted);font-size:.85rem}.audit-diff{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}.audit-diff section{min-width:0;border:1px solid var(--line);border-radius:8px;background:#f8faf9}.audit-diff h3{font-size:.88rem;margin:0;padding:8px 10px;border-bottom:1px solid var(--line)}.audit-diff pre{margin:0;padding:10px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:.78rem;max-height:260px;overflow:auto}
@media(max-width:900px){.center-profile-grid{grid-template-columns:1fr 1fr}.center-asset-grid,.audit-diff{grid-template-columns:1fr}}

/* 치료사 상세: 삭제 기능은 일반 작업과 분리해 페이지 하단에 둔다. */
.therapist-danger-zone{margin-top:18px;border-color:#e2c3c3;background:#fffafa}
.therapist-danger-zone>summary{cursor:pointer;color:#8c3030;font-weight:800;list-style-position:inside}

.payroll-period-card{margin-bottom:14px;padding:12px 14px}.payroll-period-form{display:flex;align-items:end;gap:8px;flex-wrap:wrap}.payroll-period-form label{display:flex;align-items:center;gap:6px;font-weight:700;white-space:nowrap}.payroll-period-form select{min-width:120px}.payroll-period-buttons{display:flex;gap:5px;flex-wrap:nowrap}.payroll-period-buttons .active{background:var(--green);border-color:var(--green);color:#fff}
.therapist-danger-content{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding-top:14px}
.therapist-danger-content>p{margin:0;flex:1 1 420px}
.therapist-danger-content form{margin:0}
.therapist-delete-form{margin-left:auto!important}
.delete-blocked-notice{flex:1 0 100%;padding:12px 14px;border:1px solid #e5a3a3;border-radius:8px;background:#fff2f2;color:#7f2929}
.delete-blocked-notice p{margin:6px 0 10px}
.therapist-pay-stats{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:1100px){.therapist-pay-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* 신규접수 중복 검토·이용자 수정 밀도 개선 */
.segment-field>div,.segment-field>ul{border:0!important;padding:0!important;background:transparent!important;box-shadow:none!important}
.date-with-today{display:grid;grid-template-columns:minmax(120px,1fr) auto;gap:6px}.date-with-today button{white-space:nowrap}
.consultation-meta{grid-template-columns:150px minmax(160px,.65fr) minmax(240px,1.35fr);gap:12px}.consultation-columns textarea{min-height:150px}.consultation-note textarea{min-height:56px}
.duplicate-review-panel{grid-column:1/-1;margin-top:10px;padding:12px 14px;border:1px solid #d7ad55;border-radius:8px;background:#fff8df}.duplicate-review-panel p{margin:4px 0}.duplicate-candidate{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid #ead9aa}.duplicate-candidate:first-of-type{margin-top:9px}.duplicate-warning{color:#8b5618;font-size:12px}.duplicate-candidate span{min-width:0}.duplicate-candidate a{white-space:nowrap}
.claim-filter{display:flex;align-items:end;gap:8px;margin-bottom:12px}.claim-filter label{display:grid;gap:5px;font-weight:700}.claim-filter select{min-width:260px}.billing-summary .warning{border-color:#e1a94d;background:#fff7df}.claim-amount-missing td{background:#fff3d2!important}.claim-amount-missing b{color:#9a4e00}
@media(max-width:560px){.segment-field>div,.segment-field>ul{flex-wrap:nowrap!important}.profile-card{padding:14px}.date-with-today{grid-template-columns:1fr auto}.duplicate-candidate{align-items:flex-start;flex-direction:column}}

/* 신규접수: 기타 희망치료는 기타 버튼 바로 옆에 표시하고 상담 입력 상단을 맞춘다. */
.intake-progress-line{grid-template-columns:150px minmax(0,1fr)}
.intake-progress-line .treatment-choice-field{min-width:0}
.intake-progress-line .treatment-chip-list{align-items:center}
.intake-progress-line .other-treatment{display:inline-flex;align-items:center;gap:6px;margin:0 0 0 1px;max-width:240px}
.intake-progress-line .other-treatment label{display:none}
.intake-progress-line .other-treatment input{width:150px;min-width:0}
.consultation-layout{align-items:stretch}
.consultation-layout>.field{display:flex;flex-direction:column;min-width:0}
.consultation-layout>.field>textarea{flex:1;min-height:122px}
/* Voucher stripe and progress outline are independent visual channels. */
.schedule-card{border:1px solid #64748b;box-sizing:border-box;color:#172033!important;opacity:1}
.schedule-card[class]{background:#fff!important;border-left:5px solid var(--voucher-color,#64748b)!important}
.voucher-development{--voucher-color:#2f9e75}
.voucher-woori{--voucher-color:#c99a0a}
.voucher-family{--voucher-color:#d65b9e}
.voucher-school{--voucher-color:#418bd4}
.voucher-general{--voucher-color:#9470c4}
.voucher-dream{--voucher-color:#e69043}
.voucher-military{--voucher-color:#259fa3}
.schedule-legend-support span{background:#fff!important;border-left:4px solid var(--voucher-color,#64748b);padding:2px 5px}
.schedule-card.status-scheduled{border-color:#64748b}
.schedule-card.status-completed,.schedule-card.status-makeup_completed{border-color:#15803d}
.schedule-card.status-paid{border-color:#1d4ed8}
.schedule-card.status-approval_pending{border-color:#eab308}
.timeline-day-group.next-week-preview{margin-left:26px;border-left:4px solid #eab308;box-shadow:-13px 0 0 #fff9f0}.timeline-day-group.next-week-preview .timeline-column-head{background:#fff6c7}.visible-schedule-day{display:inline-flex;align-items:center;min-height:34px;padding:6px 11px;border:1px solid #e8d8d1;border-radius:8px;background:#fff8f5;color:#6f4b43;font-weight:800;white-space:nowrap}
.schedule-case-totals{display:inline-flex;flex:1 1 auto;align-items:center;justify-content:center;gap:20px;min-width:260px;white-space:nowrap;color:#46505c;font-size:14px;font-weight:700}.schedule-case-totals b{color:#202a36;font-size:15px;font-variant-numeric:tabular-nums}
.schedule-card.status-makeup,.schedule-card.status-makeup_planned{border-color:#a21caf;border-style:dashed}
.schedule-card.status-cancelled,.schedule-card.status-suspended,.schedule-card.status-same_day_cancel,.schedule-card.status-absent{border-color:#dc2626;border-style:dashed}
.schedule-color-key{display:block;text-align:left;font-size:12px;margin:5px 0}
.schedule-color-key-tabs{display:block;text-align:left;margin-bottom:6px}
.schedule-color-key-tabs .dashboard-view-tabs{margin:0;width:fit-content}
.schedule-color-key-tabs .dashboard-view-tabs a{min-width:105px;min-height:34px;padding:6px 12px}
.schedule-color-key-legend{display:flex;gap:7px;align-items:center;justify-content:flex-start;flex-wrap:wrap}
.schedule-therapist-link{color:inherit;text-decoration:underline;text-decoration-color:#69a993;text-underline-offset:3px;cursor:pointer}.schedule-therapist-link:hover{color:#167255}
.schedule-search-bar>.schedule-color-key-legend{margin-left:10px;flex:0 1 auto;justify-content:flex-start;min-width:0;gap:4px;font-size:16px}.schedule-color-key-legend .schedule-legend-group span{font-size:16px}.schedule-color-key-legend>small{font-size:11px}.schedule-legend-group{display:flex;align-items:center;gap:4px;flex:0 0 auto}.schedule-legend-status{margin-left:16px}.schedule-tabs-slot{display:flex;justify-content:flex-start;align-items:center;min-height:40px;width:100%}.schedule-tabs-slot .schedule-color-key-tabs{margin:0;flex:0 0 auto}.schedule-tabs-slot .schedule-filters{margin:0 0 0 auto;display:flex;align-items:center;gap:5px;flex:0 1 auto;flex-wrap:nowrap}.schedule-filters select{width:150px;flex:0 0 150px}.schedule-filters input[type=date]{width:145px;flex:0 0 145px}.schedule-filters label{flex:0 0 auto;white-space:nowrap}.schedule-search-bar>.schedule-intake-button{margin-left:0;flex:0 0 auto;white-space:nowrap}
.schedule-color-key span{padding:3px 8px;border-radius:5px;color:#172033}
.schedule-color-key .outline{background:white;border:3px solid}
.schedule-color-key .schedule-intake-button{margin-left:auto;white-space:nowrap}
.availability-exception-form>.availability-exception-grid{grid-column:1/-1;display:grid!important;grid-template-columns:repeat(2,minmax(240px,360px));gap:14px;align-items:end;justify-self:start;width:min(760px,100%)}
.availability-exception-form>.availability-exception-grid>.field:first-child{grid-column:1/-1}
.availability-exception-form .availability-exception-grid>div{display:flex;flex-direction:column;gap:5px;margin:0;min-width:0}
.availability-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;align-items:start}
.availability-layout>.availability-exception-form,.availability-layout>.availability-work-windows{margin:0;min-width:0}
.availability-exception-form .availability-exception-grid input,.availability-exception-form .availability-exception-grid select{width:100%;box-sizing:border-box}
.availability-work-windows{margin-top:14px}
.availability-work-day{display:flex;gap:18px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}
.availability-work-day b{width:70px;flex:0 0 70px}
@media(max-width:1100px){.availability-layout{grid-template-columns:1fr}}
@media(max-width:900px){.availability-exception-form>.availability-exception-grid{grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.availability-exception-form>.availability-exception-grid>div:first-child{grid-column:1/-1}}
@media(max-width:600px){.availability-exception-form .availability-exception-grid{grid-template-columns:1fr}.availability-exception-form .availability-exception-grid>div:first-child{grid-column:auto}.availability-work-day{align-items:flex-start;flex-direction:column;gap:4px}.availability-work-day b{width:auto}}
.finance-chart-row{display:grid;grid-template-columns:minmax(90px,1fr) minmax(100px,2fr) auto;gap:12px;align-items:center;margin:14px 0;font-size:13px}
.finance-track{height:13px;background:#f0f1f6;border-radius:6px;margin:3px 0;overflow:hidden}
.finance-track i{display:block;height:100%;background:#4361ee;border-radius:6px;min-width:0}
.finance-track.previous i{background:#b4c0fa}.finance-track.wage i{background:#ee9860}
.tax-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.tax-summary>div{background:#faf9f5;padding:12px;border-radius:10px}.tax-summary b{display:block;margin-top:6px;font-size:20px}
.expense-quick-row{display:grid;grid-template-columns:140px 125px minmax(150px,1fr) 110px 115px 110px auto;gap:10px;align-items:end}
.expense-quick-row label,.expense-extra-row label,.expense-policy-form label{display:flex;flex-direction:column;gap:5px;min-width:0;font-size:13px}
.expense-quick-row input,.expense-quick-row select{width:100%;min-width:0!important;box-sizing:border-box}
.expense-extra{margin:10px 0 16px}.expense-extra summary{cursor:pointer;font-size:13px}
.voucher-filter-form{display:grid;gap:12px}.voucher-filter-line,.voucher-filter-chips{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.intake-inline-tools{display:flex;align-items:center;gap:8px;margin-left:auto;flex-wrap:wrap}.intake-inline-tools label{display:flex;align-items:center;gap:4px;white-space:nowrap}.intake-inline-tools select{width:65px!important}.intake-inline-tools small{font-size:11px;color:var(--muted)}
.approval-comparison td{vertical-align:top}.approval-comparison .comparison-review{background:#fff2e8}.approval-comparison small{display:block;color:var(--muted)}
.intake-filter-search .intake-unified-search{width:auto;flex:1 1 220px;min-width:200px;max-width:520px}.intake-inline-tools small{max-width:200px}.intake-inline-tools{flex-wrap:nowrap}
.voucher-filter-line label{display:flex;align-items:center;gap:6px;white-space:nowrap}.voucher-filter-line input[name=start],.voucher-filter-line input[name=end]{width:125px}.voucher-filter-line input[name=child]{width:145px}
.voucher-filter-chip{display:inline-flex;align-items:center;gap:5px;padding:7px 12px;border:1px solid var(--line);border-radius:8px;cursor:pointer;white-space:nowrap}.voucher-filter-chip:has(input:checked){background:var(--green);border-color:var(--green);color:white}.voucher-filter-chip input{width:14px;height:14px;margin:0}.voucher-filter-chips small{color:var(--muted)}.voucher-prepare{margin-top:16px}.voucher-prepare summary{cursor:pointer;font-weight:700}
.voucher-filter-form{display:block;overflow-x:auto}.voucher-filter-line{flex-wrap:nowrap;width:max-content;min-width:100%}.voucher-filter-line .voucher-filter-chips{flex-wrap:nowrap;gap:4px}.voucher-filter-line .voucher-filter-chip{padding:6px 8px}.voucher-child-table{width:100%;table-layout:fixed}.voucher-child-table th:nth-child(1){width:15%}.voucher-child-table th:nth-child(2){width:17%}.voucher-child-table th:nth-child(3){width:25%}.voucher-child-table th:nth-child(4){width:43%}.voucher-child-details{width:100%;max-width:none}.voucher-child-details summary{cursor:pointer;white-space:nowrap}.voucher-child-details ul{margin:8px 0 0;padding:0;list-style:none}.voucher-child-details li{padding:5px 0;border-top:1px solid var(--line);white-space:nowrap}.voucher-service-periods{display:flex;gap:8px;flex-wrap:wrap}.voucher-original-contracts{margin-top:12px}.voucher-original-contracts summary{cursor:pointer}.voucher-original-contracts ul{margin:8px 0 0;padding-left:20px}.voucher-service-filter{display:flex;align-items:center;gap:8px;flex-wrap:nowrap}.voucher-service-filter label{display:flex;align-items:center;gap:6px;white-space:nowrap}.voucher-service-filter select{width:auto;max-width:120px}
.expense-extra-row,.expense-policy-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:end;margin:12px 0}
.expense-policy-form textarea{height:40px;min-height:40px}.expense-quick-card th{white-space:nowrap}
@media(max-width:1100px){.expense-quick-row{grid-template-columns:repeat(3,minmax(0,1fr))}.expense-extra-row,.expense-policy-form{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.expense-quick-row,.expense-extra-row,.expense-policy-form{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* 정기수업 등록: 결제구분과 요일을 한눈에 선택하는 동일한 버튼 형태로 표시한다. */
.quick-choice-band{grid-template-columns:190px 280px minmax(0,1fr)}
.quick-funding-choice>div,.quick-funding-choice ul{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px!important;
  width:100%;
  margin-top:6px;
  padding:0;
}
.quick-funding-choice li,.quick-funding-choice>div>div{min-width:0;margin:0}
.quick-funding-choice label,.quick-weekday-field label{
  position:relative;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:42px;
  border:1px solid #e2c9c3;
  border-radius:9px;
  background:#fff;
  color:var(--ink);
  font-weight:800;
  line-height:1;
  white-space:nowrap;
  cursor:pointer;
  transition:background .15s ease,border-color .15s ease,box-shadow .15s ease;
}
.quick-funding-choice label{width:100%;padding:9px 12px!important}
.quick-weekday-field label{width:44px;padding:9px 6px}
.quick-funding-choice input[type="radio"],.quick-weekday-field input[type="radio"]{
  position:absolute;
  width:1px;
  height:1px;
  margin:0;
  opacity:0;
  pointer-events:none;
}
.quick-funding-choice label:has(input:checked),.quick-weekday-field label:has(input:checked){
  color:#fff;
  background:var(--green);
  border-color:var(--green);
  box-shadow:0 6px 14px rgba(244,119,107,.2);
}
.quick-funding-choice label:has(input:focus-visible),.quick-weekday-field label:has(input:focus-visible){
  outline:3px solid rgba(244,119,107,.25);
  outline-offset:2px;
}
.quick-weekday-field>.quick-weekday-buttons,.quick-weekday-field>div{
  display:flex!important;
  flex-flow:row wrap!important;
  gap:6px!important;
  margin-top:6px;
}
.quick-schedule-grid{grid-template-columns:320px minmax(260px,360px) minmax(260px,1fr)}
@media(max-width:1500px){.quick-choice-band{grid-template-columns:190px 250px minmax(0,1fr)}.quick-schedule-grid{grid-template-columns:310px minmax(240px,320px) minmax(240px,1fr)}}
@media(max-width:1100px){.quick-choice-band{grid-template-columns:190px minmax(230px,1fr)}}
.intake-form section.compact-intake-card{min-width:0;padding:18px 26px}
.service-workflow-form{padding:0;gap:10px}
.service-workflow-form>section.quick-section-card{width:100%;margin:0;padding:14px 16px;border:1px solid #b9d4ca;border-radius:10px;background:#fff}
.service-workflow-form>section.quick-section-card h2{margin:0 0 10px;font-size:18px}
.service-workflow-form>section.quick-section-card h2 small{font-size:12px;font-weight:500;color:var(--muted)}
.service-workflow-form .intake-service-band{padding:12px;border:1px solid #f1bfb4;border-radius:8px;background:#fff6f2}
.service-workflow-form .intake-record-fields{margin-top:10px;padding-top:10px;border-top:1px solid #efd0c7}
.service-workflow-form .intake-followup-card .muted{display:block;margin-top:8px}
.service-workflow-form .form-actions{position:static;justify-content:flex-end;margin:0;padding:2px 0 0;background:transparent}
.service-workflow-form .choice-chip input:checked+span{background:#f2766c;border-color:#f2766c;color:#fff}
.service-workflow-form .identity-inputs{grid-template-columns:90px auto minmax(150px,1fr)}
.identity-inputs{grid-template-columns:90px auto minmax(150px,1fr)}.identity-separator{font-weight:800;color:var(--muted)}
.intake-followup-line{display:grid;grid-template-columns:140px 150px 220px 180px minmax(180px,1fr);gap:10px;align-items:end}.follow-up-panel{margin-top:16px;padding-top:12px;border-top:1px solid #eadbd5}.follow-up-panel h3{margin:0 0 10px}.followup-grid{display:flex;flex-wrap:wrap;gap:8px}.followup-item{display:flex;flex-direction:column;gap:2px;border:1px solid #eadbd5;border-radius:8px;padding:8px 10px;min-width:180px;color:inherit;text-decoration:none}.followup-item:hover{border-color:#f4776b}.schedule-action-dialog{min-width:520px;max-width:min(760px,calc(100vw - 40px));border:0;border-radius:14px;padding:22px}.schedule-action-dialog h3{margin-top:0}.schedule-action-dialog textarea{display:block;width:100%;box-sizing:border-box;min-height:150px;resize:vertical}.occurrence-note{white-space:normal;background:#fff8f5;border-radius:8px;padding:10px}.dashboard-followups{margin:10px 0}.dashboard-followups .section-head{display:flex;justify-content:space-between}
/* 접수목록의 필수 열은 항상 좌측에 고정하고, 선택 열만 뒤에서 이동합니다. */
.intake-data-grid th[data-key="intake_date"],.intake-data-grid td[data-key="intake_date"]{position:sticky;left:0;z-index:6;width:110px;min-width:110px;background:#fff}
.intake-data-grid th[data-key="name"],.intake-data-grid td[data-key="name"]{position:sticky;left:110px;z-index:6;width:150px;min-width:150px;background:#fff}
.intake-data-grid th[data-key="phone"],.intake-data-grid td[data-key="phone"]{position:sticky;left:260px;z-index:6;width:150px;min-width:150px;background:#fff}
.intake-data-grid th[data-key="intake_date"],.intake-data-grid th[data-key="name"],.intake-data-grid th[data-key="phone"]{z-index:8;background:#eef4f1}
.intake-record-fields{display:grid;grid-template-columns:230px 230px minmax(0,1fr);gap:12px;align-items:start;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.intake-record-fields .field>label{font-size:13px;font-weight:700}.intake-record-fields ul{display:flex;flex-wrap:nowrap;gap:7px;list-style:none;padding:0;margin:6px 0 0}.intake-record-fields li label{display:flex;align-items:center;gap:4px;white-space:nowrap}.intake-record-fields input[type="text"]{width:100%}
.intake-record-fields #id_disability_status,.intake-record-fields #id_voucher_status{display:flex;flex-wrap:nowrap;gap:7px;margin-top:6px}.intake-record-fields #id_disability_status>div,.intake-record-fields #id_voucher_status>div{margin:0}.intake-record-fields #id_disability_status label,.intake-record-fields #id_voucher_status label{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:58px;padding:8px 11px;border:1px solid #e8d2cc;border-radius:8px;background:#fff;white-space:nowrap;cursor:pointer;font-weight:700}.intake-record-fields #id_disability_status input,.intake-record-fields #id_voucher_status input{position:absolute;opacity:0;pointer-events:none;width:1px}.intake-record-fields #id_disability_status label:has(input:checked),.intake-record-fields #id_voucher_status label:has(input:checked){color:#fff;background:#f4776b;border-color:#f4776b;box-shadow:0 6px 14px rgba(244,119,107,.22)}
.voucher-choice-list{display:flex;align-items:center;gap:6px;margin-top:6px;min-width:0;white-space:nowrap}.voucher-choice-chip span{padding:8px 10px;border-color:#e8d2cc;border-radius:8px;font-size:13px}.voucher-choice-chip input:checked+span{color:#fff;background:#f4776b;border-color:#f4776b;box-shadow:0 6px 14px rgba(244,119,107,.22)}.other-voucher-inline{display:inline-flex;min-width:0}.other-voucher-inline[hidden]{display:none}.other-voucher-inline input{width:165px!important;min-width:0;padding:8px 10px}
.intake-note-field{margin-top:12px}.intake-note-field textarea{width:100%;min-height:72px;resize:vertical}
.intake-record-fields .voucher-record-field[hidden]{display:none}.consultation-single-column{display:block}.consultation-single-column .consultation-source{width:100%}.intake-ai-dialog{width:min(980px,calc(100vw - 40px));border:1px solid var(--line);border-radius:12px;padding:20px}.intake-ai-dialog::backdrop{background:rgba(20,35,30,.45)}.intake-ai-compare{display:grid;grid-template-columns:1fr 1fr;gap:14px}.intake-ai-compare>div{display:grid;gap:6px}.intake-ai-compare textarea{width:100%;min-height:260px;resize:vertical}.intake-ai-dialog .actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.intake-validation-dialog{width:min(460px,calc(100vw - 32px));border:1px solid var(--line);border-radius:12px;padding:20px;box-shadow:0 18px 50px rgba(31,50,43,.2)}.intake-validation-dialog::backdrop{background:rgba(20,35,30,.42)}.intake-validation-dialog h3{margin:0 0 8px}.intake-validation-dialog ul{margin:12px 0;padding-left:20px;color:#a42626}.intake-validation-dialog .actions{display:flex;justify-content:flex-end;margin-top:16px}
@media(max-width:1100px){.intake-record-fields{grid-template-columns:1fr 1fr}.intake-record-fields .voucher-record-field{grid-column:1/-1}.intake-followup-line{grid-template-columns:1fr 1fr}.intake-followup-line .followup-note{grid-column:1/-1}}

/* 오늘 수업: 금액과 선납 상태를 한 행에서 빠르게 판별한다. */
.daily-revenue-summary{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:8px;margin:10px 0}
.daily-revenue-summary>div{padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:#fff8f5}
.daily-revenue-summary span,.daily-revenue-summary b{display:block}.daily-revenue-summary span{font-size:12px;color:var(--muted)}.daily-revenue-summary b{margin-top:2px;font-size:18px;color:#b64b40}.daily-revenue-summary .total{background:#fff0c9;border-color:#e5b83e}.daily-revenue-summary .total b{font-size:20px;color:#8a5a00}
.daily-select-heading,.daily-select-cell{width:34px;min-width:34px;max-width:34px;text-align:center}.daily-select-cell input[type=checkbox],#selectAllApproval{width:16px!important;min-width:16px!important;height:16px;margin:0}
.session-sequence{display:block;font-weight:800;white-space:nowrap;color:#315f52}.month-payment-badge{display:inline-block;padding:3px 7px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}.month-payment-badge+small{white-space:nowrap}.month-payment-paid{background:#d9f2e6;color:#146b4b}.month-payment-partial{background:#fff0c9;color:#8a5a00}.month-payment-unpaid{background:#ffe1dd;color:#b33f35}.month-payment-not-billed{background:#edf0ef;color:#68736f}
.session-count-line{display:flex;align-items:center;gap:6px;white-space:nowrap}.session-count-line .session-sequence{display:inline-block;width:56px;min-width:56px;font-variant-numeric:tabular-nums}.session-count-line .units-field{margin-top:0}
.daily-session-table .units-field{margin-top:3px;width:42px;min-width:42px;padding:4px}.daily-session-table td:nth-child(8){min-width:105px}.daily-session-table td:nth-child(4){white-space:nowrap}
.daily-money-stack{display:flex;flex-direction:column;gap:2px;white-space:nowrap}.daily-money-stack span{font-size:11px;color:var(--muted)}.daily-money-stack b{font-size:13px;color:var(--ink)}.daily-payment-line{display:flex;align-items:center;gap:5px;margin-top:4px;white-space:nowrap}.daily-payment-line small{font-size:10px!important}.daily-payment-line .month-payment-amount{color:var(--muted)}.quick-payment-button{padding:4px 7px!important;font-size:11px!important}.quick-payment-dialog{width:min(620px,calc(100vw - 32px));border:1px solid var(--line);border-radius:14px;padding:20px;box-shadow:0 18px 50px rgba(31,50,43,.2)}.quick-payment-dialog::backdrop{background:rgba(20,35,30,.42)}.quick-payment-dialog form{display:grid;gap:10px}.quick-payment-dialog h3{margin:0}.quick-payment-dialog label{display:grid;gap:4px;font-weight:700}.quick-payment-dialog input,.quick-payment-dialog select{width:100%;box-sizing:border-box}.quick-payment-dialog .form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:6px}.quick-payment-dialog .danger-text{min-height:18px;margin:0}
.daily-payment-grid{display:grid;grid-template-columns:108px 150px;align-items:center;gap:9px;white-space:nowrap}.daily-payment-grid .daily-payment-line{display:flex;flex-direction:column;align-items:flex-start;gap:3px;margin-top:0;width:150px;min-width:150px}.daily-payment-grid .month-payment-badge{width:68px;text-align:center;box-sizing:border-box}.payment-breakdown{display:block;min-height:14px;line-height:14px;font-size:10px!important;color:var(--muted);white-space:nowrap}.quick-payment-button{cursor:pointer;border:0}.quick-payment-scope{display:grid;gap:6px}.quick-payment-scope>div{display:flex;gap:7px}.quick-payment-scope-button{padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);font-weight:700;cursor:pointer}.quick-payment-scope-button.active{background:var(--green);border-color:var(--green);color:#fff}.quick-payment-breakdown{display:grid;grid-template-columns:1fr 1fr;gap:8px}.quick-payment-breakdown p{margin:0;padding:8px 10px;border-radius:7px;background:#f3f8f5;color:var(--muted);font-weight:700;white-space:nowrap}.quick-payment-summary{margin:0;padding:9px 10px;border-radius:7px;background:#f3f8f5;color:var(--muted);font-weight:700}.quick-payment-extra-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.quick-payment-extra-grid label{min-width:0;white-space:nowrap}.quick-payment-extra-grid input,.quick-payment-extra-grid select{min-width:0}.quick-payment-extra-grid input[name="additional_general_units"]{max-width:88px}.quick-payment-calculation{grid-column:1/-1;margin:0;white-space:nowrap}@media(max-width:700px){.quick-payment-dialog{width:calc(100vw - 24px)}.quick-payment-extra-grid{grid-template-columns:1fr 1fr}.quick-payment-breakdown{grid-template-columns:1fr}}
.daily-totals{align-items:center}.daily-totals span{white-space:nowrap}.daily-totals span b{font-size:17px}.daily-totals .total{font-weight:800;color:#8a5a00}.daily-totals .button{margin-left:auto;white-space:nowrap}
@media(max-width:1000px){.daily-revenue-summary{grid-template-columns:repeat(2,minmax(150px,1fr))}}

/* 보강 일정: 날짜·시간·방을 한 줄에 두고 선택 항목은 버튼으로 표시 */
.session-exception-form{grid-template-columns:repeat(4,minmax(180px,1fr))!important}
.session-exception-form .choice-button-field{grid-column:1/-1}
.session-exception-form .reason-detail-field{grid-column:span 2}
.session-exception-form .choice-button-field>ul{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:0;padding:0;list-style:none}
.session-exception-form .choice-button-field li{margin:0}
.session-exception-form .choice-button-field label{display:inline-flex;align-items:center;gap:6px;padding:9px 13px;border:1px solid #b8cbc4;border-radius:7px;background:#fff;cursor:pointer;white-space:nowrap;font-weight:700}
.session-exception-form .choice-button-field label:has(input:checked){background:var(--green);border-color:var(--green);color:#fff}
.session-exception-form .choice-button-field input{width:auto;margin:0}
@media(max-width:1100px){.session-exception-form{grid-template-columns:repeat(2,minmax(180px,1fr))!important}}
@media(max-width:700px){.session-exception-form{grid-template-columns:1fr!important}.session-exception-form .reason-detail-field{grid-column:1}}

/* Vacation and work-window layout refinements */
.availability-exception-form>.availability-exception-grid{grid-template-columns:repeat(2,minmax(0,1fr));width:min(720px,calc(100% - 24px))}
.availability-work-windows{margin-top:0}
.availability-work-windows .section-head{align-items:flex-start}
.availability-work-windows .section-head h2{font-size:31px;line-height:1.2;margin:0 0 5px}
.work-editor-table input[data-time-input="1"]{width:128px;max-width:128px;box-sizing:border-box}
.room-choice{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:58px;min-height:38px;padding:7px 9px;border:1px solid #aec9bf;border-radius:7px;background:#fff;color:#175b44;font-weight:700;cursor:pointer;white-space:nowrap;box-sizing:border-box}
.room-choice input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.room-choice:has(input:checked){background:var(--green);border-color:var(--green);color:#fff}
.room-choice.closed:has(input:checked){background:#7c8b87;border-color:#7c8b87;color:#fff}
.room-choice small{position:absolute;left:50%;top:100%;transform:translate(-50%,2px);font-size:9px;font-weight:400;white-space:nowrap;color:#777}
.room-choice-row{flex-wrap:nowrap;max-width:none;overflow-x:auto;overflow-y:visible;padding-bottom:2px}
.work-editor-table input[data-time-input="1"]{width:100px;max-width:100px}
.room-choice-row{overflow:visible;align-items:flex-start;min-height:44px}
.room-choice{flex-direction:column;vertical-align:top}
.room-choice small{position:static;display:block;transform:none;margin-top:2px}
.work-week-table{width:max-content;min-width:850px;table-layout:fixed}
.work-week-table th:first-child,.work-week-table td:first-child{width:140px;min-width:140px}
.work-week-table th:not(:first-child):not(:last-child),.work-week-table td:not(:first-child):not(:last-child){width:150px;min-width:150px}
.work-week-table th:last-child,.work-week-table td:last-child{width:82px;min-width:82px}
.work-week-table thead th{font-size:16px;font-weight:800;padding:11px 10px;white-space:nowrap}
.work-week-table tbody th{padding:10px;font-size:16px}
.work-week-table tbody th a{font-size:16px;font-weight:800;white-space:nowrap}
.work-week-table tbody th small{font-size:11px;white-space:nowrap}
.work-week-table tbody td{padding:10px;font-size:15px;white-space:nowrap}
.work-week-table tbody td b{font-size:16px}

/* 오늘 수업 요약·수납 영역은 정보별 고정 열로 나누어 숫자 길이에 따라 흔들리지 않게 한다. */
.daily-stats{grid-template-columns:minmax(185px,1.05fr) minmax(165px,.9fr) minmax(330px,1.7fr) minmax(150px,.8fr);gap:8px}
.daily-stats>div{padding:10px 12px;min-height:64px;justify-content:center;box-sizing:border-box}
.daily-stats b{font-size:20px;line-height:1.15}.daily-stats span{font-size:12px}.daily-stats small{margin-top:3px;color:var(--muted);font-size:11px;white-space:nowrap}
.daily-stat-money>span{font-weight:800;color:var(--muted);margin-bottom:5px}.daily-stat-money>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.daily-stat-money>div span{white-space:nowrap}.daily-stat-money>div b{display:block;font-size:16px}.daily-stat-total{align-items:flex-start!important}.daily-stat-total b{color:var(--red)}
.daily-payment-grid{grid-template-columns:145px 150px;gap:8px;align-items:start}.daily-payment-grid .daily-payment-line{width:150px;min-width:150px;gap:3px;align-items:flex-start;margin:0}.payment-section-title{display:block;min-height:18px;font-size:11px!important;line-height:18px;color:var(--muted);font-weight:800;white-space:nowrap}.daily-money-stack{gap:2px}.daily-money-stack span,.daily-payment-line .payment-breakdown{font-size:11px!important;line-height:16px;min-height:16px}.daily-payment-line .month-payment-badge{font-size:11px!important;padding:3px 8px;min-width:68px;height:24px}
.daily-session-table th:nth-child(8),.daily-session-table td:nth-child(8){min-width:130px}.daily-session-table th:nth-child(9),.daily-session-table td:nth-child(9){min-width:125px}.daily-session-table th:nth-child(10),.daily-session-table td:nth-child(10){min-width:98px}.daily-session-table th:nth-child(11),.daily-session-table td:nth-child(11){min-width:168px}.daily-payment-summary{display:flex;flex-direction:column;gap:2px;white-space:nowrap;font-size:11px;line-height:16px}.daily-payment-summary span{font-size:11px!important}
.quick-payment-dialog{width:min(700px,calc(100vw - 24px));max-width:calc(100vw - 24px);max-height:calc(100vh - 24px);box-sizing:border-box;overflow:auto;overflow-x:hidden;padding:18px}.quick-payment-dialog form{width:100%;min-width:0}.quick-payment-breakdown{grid-template-columns:repeat(2,minmax(0,1fr));min-width:0}.quick-payment-breakdown p{min-width:0;white-space:normal;overflow-wrap:anywhere}.quick-payment-extra-grid{grid-template-columns:repeat(3,minmax(0,1fr));min-width:0}.quick-payment-extra-grid label{white-space:normal;min-width:0}.quick-payment-extra-grid input,.quick-payment-extra-grid select{min-width:0;max-width:100%}.quick-payment-extra-grid input[name="additional_general_units"]{max-width:100%}
@media(max-width:950px){.daily-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.daily-stat-money{grid-column:span 2}}
@media(max-width:700px){.daily-payment-grid{grid-template-columns:1fr 1fr;gap:5px}.daily-payment-grid .daily-payment-line{width:auto;min-width:0}.quick-payment-breakdown,.quick-payment-extra-grid{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.daily-stats{grid-template-columns:1fr}.daily-stat-money{grid-column:auto}.daily-payment-grid{grid-template-columns:1fr}.quick-payment-extra-grid{grid-template-columns:1fr}}

/* Monthly collection is entered in a compact dialog; ledger controls stay out of the staff workflow. */
.charge-receipt-dialog{width:min(520px,calc(100vw - 28px));max-width:calc(100vw - 28px);max-height:calc(100dvh - 28px);padding:0;border:1px solid var(--line,#ead9d2);border-radius:16px;overflow:auto;box-shadow:0 24px 80px #18263840;color:var(--ink,#203047)}
.charge-receipt-dialog::backdrop{background:#17212f70;backdrop-filter:blur(2px)}
.charge-receipt-modal-content{padding:22px;box-sizing:border-box}
.charge-receipt-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}
.charge-receipt-modal-head h2{margin:0;font-size:20px}.charge-receipt-modal-head p{margin:4px 0 0;color:var(--muted,#69778a);font-size:13px}
.charge-receipt-close{flex:0 0 auto;width:34px;height:34px;border:0;border-radius:50%;background:#f7f2ef;font-size:23px;line-height:1;cursor:pointer;color:inherit}
.charge-receipt-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:18px}
.charge-receipt-summary div{min-width:0;padding:11px;background:#f7f9f8;border-radius:9px;display:flex;flex-direction:column;gap:5px}
.charge-receipt-summary span{font-size:12px;color:var(--muted,#69778a);white-space:nowrap}.charge-receipt-summary b{font-size:16px;white-space:nowrap}
.charge-receipt-fields{display:grid;grid-template-columns:1fr 1fr;gap:13px 12px}.charge-receipt-fields .field{min-width:0;display:flex;flex-direction:column;gap:5px}.charge-receipt-fields label{font-weight:700;font-size:13px}.charge-receipt-fields input,.charge-receipt-fields select{width:100%;min-width:0;box-sizing:border-box}.charge-receipt-fields .charge-receipt-memo{grid-column:1/-1}
.charge-receipt-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px;padding-top:14px;border-top:1px solid #eee4df}.charge-receipt-dialog .errorlist{margin:2px 0 0;color:#bf3b36;font-size:12px;list-style:none;padding:0}.charge-receipt-dialog .errorlist.nonfield{padding:9px 11px;background:#fff1ef;border-radius:8px;margin-bottom:12px}
@media(max-width:420px){.charge-receipt-modal-content{padding:16px}.charge-receipt-summary{gap:5px}.charge-receipt-summary div{padding:9px 7px}.charge-receipt-summary b{font-size:14px}.charge-receipt-summary span{font-size:11px}.charge-receipt-fields{gap:11px 8px}}

.selected-row{background:#fff4ef}.table-wrap td small{display:block;margin-top:2px;color:var(--muted,#64748b);font-size:11px;white-space:nowrap}

/* 공통 폼 밀도: 넓은 화면에서도 입력칸은 내용에 맞는 폭만 사용한다. 표와 긴 메모는 예외. */
@media(min-width:701px){
  .app-main main form .field>input:not([type=radio]):not([type=checkbox]):not([type=file]):not([type=date]):not([type=time]):not([type=number]),
  .app-main main form .field>select,
  .app-main main form .field>.control,
  .app-main main form .field>output{width:100%;max-width:360px}
  .app-main main form .field>input[type=date],
  .app-main main form .field>input[type=time],
  .app-main main form .field>input[type=number]{max-width:200px}
  .app-main main form .field>textarea{width:100%;max-width:720px}
  .app-main main form .field.address-inline input,
  .app-main main form .field.therapist-address-field input,
  .app-main main form .field.schedule-child-field>input{max-width:520px!important}
  .schedule-entry-form .service-setup-choice-band{grid-template-columns:160px 260px minmax(280px,560px);justify-content:start}
  .schedule-entry-form .quick-schedule-grid{grid-template-columns:220px 300px minmax(260px,480px);justify-content:start}
  .schedule-entry-form .schedule-period-grid,
  .schedule-entry-form .schedule-service-summary{grid-template-columns:repeat(5,minmax(0,230px));justify-content:start}
  .schedule-entry-form .schedule-time-grid{grid-template-columns:repeat(3,minmax(0,210px));justify-content:start}
  .schedule-entry-form .quick-selected-slot-field output{max-width:480px}
  .quick-assignment-form:not(.schedule-entry-form) .quick-schedule-grid{grid-template-columns:220px 300px minmax(260px,480px);justify-content:start}
  .quick-assignment-form:not(.schedule-entry-form) .quick-choice-band{grid-template-columns:220px minmax(280px,520px);justify-content:start}
  .form-grid.contract-entry-form>.contract-form-grid{grid-template-columns:repeat(4,minmax(0,230px));justify-content:start}
  .therapist-profile-form .basic-info-grid{grid-template-columns:repeat(4,minmax(0,230px))!important;justify-content:start}
  .therapist-profile-form .contact-address-grid{grid-template-columns:180px 230px minmax(300px,520px)!important;justify-content:start}
  .therapist-profile-form .payroll-account-grid{grid-template-columns:repeat(5,minmax(0,230px))!important;justify-content:start}
  .intake-form .intake-basic-line{grid-template-columns:110px 170px 170px 145px minmax(260px,520px);justify-content:start}
  .intake-form .intake-contact-line{grid-template-columns:180px 180px minmax(300px,620px);justify-content:start}
  .intake-form .intake-followup-line{grid-template-columns:150px 170px 230px 200px minmax(180px,320px);justify-content:start}
}
@media(min-width:701px) and (max-width:1450px){
  .schedule-entry-form .schedule-period-grid,
  .schedule-entry-form .schedule-service-summary{grid-template-columns:repeat(3,minmax(0,230px))}
  .therapist-profile-form .payroll-account-grid{grid-template-columns:repeat(3,minmax(0,230px))!important}
  .intake-form .intake-basic-line{grid-template-columns:repeat(3,minmax(0,190px))}
  .intake-form .identity-compact{grid-column:span 2}
  .intake-form .intake-contact-line{grid-template-columns:180px 180px}
  .intake-form .address-inline{grid-column:1/-1}
  .intake-form .intake-followup-line{grid-template-columns:repeat(3,minmax(0,220px))}
  .form-grid.contract-entry-form>.contract-form-grid{grid-template-columns:repeat(2,minmax(0,230px))}
}
@media(min-width:701px) and (max-width:1450px){
  .schedule-entry-form .service-setup-choice-band{grid-template-columns:160px minmax(220px,360px)}
  .schedule-entry-form .quick-treatment-field{grid-column:1/-1}
  .schedule-entry-form .quick-schedule-grid,
  .quick-assignment-form:not(.schedule-entry-form) .quick-schedule-grid{grid-template-columns:repeat(2,minmax(0,320px))}
  .schedule-entry-form .quick-selected-slot-field,
  .quick-assignment-form:not(.schedule-entry-form) .quick-selected-slot-field{grid-column:1/-1}
}
@media(min-width:701px) and (max-width:900px){
  .schedule-entry-form .schedule-period-grid,
  .schedule-entry-form .schedule-service-summary{grid-template-columns:repeat(2,minmax(0,230px))}
  .schedule-entry-form .quick-schedule-grid,
  .quick-assignment-form:not(.schedule-entry-form) .quick-schedule-grid{grid-template-columns:minmax(0,360px)}
  .schedule-entry-form .quick-selected-slot-field,
  .quick-assignment-form:not(.schedule-entry-form) .quick-selected-slot-field{grid-column:auto}
  .therapist-profile-form .payroll-account-grid{grid-template-columns:repeat(2,minmax(0,230px))!important}
  .intake-form .intake-followup-line{grid-template-columns:repeat(2,minmax(0,220px))}
}
@media(max-width:700px){
  .app-main main form .field>input:not([type=radio]):not([type=checkbox]),
  .app-main main form .field>select,
  .app-main main form .field>textarea{max-width:100%}
  .intake-form .intake-basic-line,
  .intake-form .intake-contact-line,
  .intake-form .intake-followup-line{grid-template-columns:1fr}
  .intake-form .identity-compact,
  .intake-form .address-inline{grid-column:auto}
}

/* 접수·상담: 상태 선택과 상담 입력을 각각 한 행으로 묶는다. */
.service-workflow-form .intake-progress-line{grid-template-columns:120px minmax(340px,1fr) 195px 195px;gap:12px;align-items:start}
.service-workflow-form .intake-progress-line .intake-choice-field{min-width:0}
.service-workflow-form .intake-progress-line #id_disability_status,
.service-workflow-form .intake-progress-line #id_voucher_status{display:flex;flex-wrap:nowrap;gap:5px;margin-top:6px}
.service-workflow-form .intake-progress-line .intake-choice-field label:has(input){position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:52px;padding:8px 9px;border:1px solid #e8d2cc;border-radius:8px;background:#fff;white-space:nowrap;cursor:pointer;font-weight:700}
.service-workflow-form .intake-progress-line .intake-choice-field input{position:absolute;opacity:0;pointer-events:none;width:1px}
.service-workflow-form .intake-progress-line .intake-choice-field label:has(input:checked){color:#fff;background:#f4776b;border-color:#f4776b}
.service-workflow-form .intake-record-fields{display:block;margin-top:8px;padding-top:8px}
.service-workflow-form .intake-record-fields:has(.voucher-record-field[hidden]){display:none}
.service-workflow-form .intake-note-consult-row{display:grid;grid-template-columns:minmax(230px,300px) minmax(360px,720px);gap:14px;align-items:start;margin-top:12px}
.service-workflow-form .intake-note-consult-row .intake-note-field{margin:0}
.service-workflow-form .intake-note-consult-row .intake-note-field textarea,
.service-workflow-form .intake-note-consult-row .consultation-source textarea{width:100%;min-height:112px}
.service-workflow-form .intake-note-consult-row .consultation-layout{margin:0;min-width:0}
.service-workflow-form .intake-note-consult-row .consultation-source{min-width:0}
.service-workflow-form .intake-note-consult-row .label-action{min-height:25px}
@media(max-width:1150px){.service-workflow-form .intake-progress-line{grid-template-columns:120px minmax(260px,1fr)}.service-workflow-form .intake-note-consult-row{grid-template-columns:minmax(220px,300px) minmax(280px,1fr)}}
@media(max-width:800px){.service-workflow-form .intake-progress-line,.service-workflow-form .intake-note-consult-row{grid-template-columns:1fr}}
.service-workflow-form .intake-note-consult-row{grid-template-columns:repeat(2,minmax(0,520px));gap:16px}
.service-workflow-form .intake-note-consult-row .consultation-layout,
.service-workflow-form .intake-note-consult-row .intake-note-field{width:100%;max-width:520px}
.service-workflow-form .intake-note-consult-row .consultation-source textarea,
.service-workflow-form .intake-note-consult-row .intake-note-field textarea{width:100%;max-width:none;min-height:150px;box-sizing:border-box}
.service-workflow-form .intake-note-consult-row .label-action{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;box-sizing:border-box}
.service-workflow-form .intake-note-consult-row .intake-ai-button{flex:none;background:#f2766c;border-color:#f2766c;color:#fff;font-weight:700}
.service-workflow-form .intake-note-consult-row .intake-ai-button:hover{background:#d95d53;border-color:#d95d53}
.service-workflow-form #intakeAiStatus:empty{display:none}
@media(max-width:1150px){.service-workflow-form .intake-note-consult-row{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.service-workflow-form .intake-note-consult-row{grid-template-columns:1fr}}

/* 접수: 장애·바우처 선택은 윗줄 중앙, 메모는 상담내용 오른쪽에 둔다. */
.service-workflow-form .intake-progress-line{grid-template-columns:120px minmax(340px,1fr) minmax(390px,410px)}
.service-workflow-form .intake-status-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px;min-width:0}
.service-workflow-form .intake-note-consult-row{grid-template-columns:repeat(2,minmax(0,520px));gap:16px}
.service-workflow-form .intake-note-consult-row .consultation-layout,
.service-workflow-form .intake-note-consult-row .intake-note-field{width:100%;max-width:520px}
.service-workflow-form .intake-note-consult-row .consultation-source textarea,
.service-workflow-form .intake-note-consult-row .intake-note-field textarea{width:100%;max-width:none;min-height:150px;box-sizing:border-box}
.service-workflow-form .intake-note-consult-row .label-action{justify-content:flex-start;gap:12px}
@media(max-width:1400px){.service-workflow-form .intake-progress-line{grid-template-columns:120px minmax(300px,1fr)}.service-workflow-form .intake-status-pair{grid-column:2}.service-workflow-form .intake-note-consult-row{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1050px){.service-workflow-form .intake-progress-line{grid-template-columns:120px minmax(250px,1fr)}.service-workflow-form .intake-status-pair{grid-column:2}}
@media(max-width:800px){.service-workflow-form .intake-progress-line,.service-workflow-form .intake-note-consult-row{grid-template-columns:1fr}.service-workflow-form .intake-status-pair{grid-column:auto}}

/* 오늘 날짜의 주간 시간표에 서울 현재 시각을 가로선으로 표시한다. */
.timeline-board{position:relative}
.timeline-now-line{position:absolute;left:70px;right:0;height:0;border-top:3px solid #21a366;z-index:8;pointer-events:none;box-shadow:0 1px 3px #0d7b4a66}
.timeline-now-label{position:absolute;right:5px;z-index:11;transform:translateY(-50%);padding:1px 5px;border-radius:4px;background:#168552;color:#fff;font-size:10px;font-weight:800;line-height:16px;white-space:nowrap;box-shadow:0 1px 3px #0d7b4a66}

/* 접수: 관련 바우처도 상태 선택 줄에 표시하고, 상담 입력 두 칸을 넓힌다. */
.service-workflow-form .intake-progress-line{grid-template-columns:110px minmax(420px,1fr) 150px 150px minmax(390px,430px);align-items:start}
.service-workflow-form .intake-record-fields{display:block;grid-column:auto;min-width:0;margin:0;padding:0;border:0}
.service-workflow-form .intake-record-fields:has(.voucher-record-field[hidden]){display:none}
.service-workflow-form .intake-progress-line .intake-choice-field>label,
.service-workflow-form .intake-progress-line .voucher-record-field>label{font-size:13px}
.service-workflow-form .intake-progress-line .voucher-choice-list{gap:3px}
.service-workflow-form .intake-progress-line .voucher-choice-chip span{padding:7px 7px;font-size:12px}
.service-workflow-form .intake-note-consult-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.service-workflow-form .intake-note-consult-row .consultation-layout,
.service-workflow-form .intake-note-consult-row .intake-note-field{width:100%;max-width:none;min-width:0}
.service-workflow-form .intake-note-consult-row .consultation-source textarea,
.service-workflow-form .intake-note-consult-row .intake-note-field textarea{width:100%;max-width:none;min-height:180px;box-sizing:border-box}
.service-workflow-form .intake-note-consult-row .consultation-source>label,
.service-workflow-form .intake-note-consult-row .intake-note-field>label{font-size:13px;font-weight:700}
@media(max-width:1500px){.service-workflow-form .intake-progress-line{grid-template-columns:110px minmax(260px,1fr) 150px 150px}.service-workflow-form .intake-record-fields{grid-column:2/-1}}
@media(max-width:1050px){.service-workflow-form .intake-progress-line{grid-template-columns:110px minmax(240px,1fr) 150px}.service-workflow-form .intake-progress-line .intake-choice-field:nth-of-type(2){grid-column:2}.service-workflow-form .intake-record-fields{grid-column:2/-1}}
@media(max-width:800px){.service-workflow-form .intake-progress-line,.service-workflow-form .intake-note-consult-row{grid-template-columns:1fr}.service-workflow-form .intake-progress-line .intake-choice-field:nth-of-type(2),.service-workflow-form .intake-record-fields{grid-column:auto}}
/* 관련 바우처가 상태 선택과 겹치지 않도록 모든 항목을 왼쪽부터 고정 폭으로 정렬한다. */
.service-workflow-form .intake-progress-line{grid-template-columns:110px minmax(420px,550px) 190px 190px minmax(350px,420px);justify-content:start}
.service-workflow-form .intake-progress-line .voucher-record-field{min-width:0}
.service-workflow-form .intake-progress-line .voucher-record-field .voucher-choice-chip{display:inline-flex;min-width:0;padding:0;border:0;background:transparent;position:relative}
.service-workflow-form .intake-progress-line .voucher-record-field .voucher-choice-chip span{display:block;padding:8px 9px;font-size:13px;font-weight:600;line-height:normal}
@media(max-width:1500px){.service-workflow-form .intake-progress-line{grid-template-columns:110px minmax(300px,1fr) 190px 190px}.service-workflow-form .intake-record-fields{grid-column:2/-1}}
@media(max-width:1050px){.service-workflow-form .intake-progress-line{grid-template-columns:110px minmax(240px,1fr) 190px}.service-workflow-form .intake-progress-line .intake-choice-field:nth-of-type(2){grid-column:2}.service-workflow-form .intake-record-fields{grid-column:2/-1}}
@media(max-width:800px){.service-workflow-form .intake-progress-line{grid-template-columns:1fr}.service-workflow-form .intake-progress-line .intake-choice-field:nth-of-type(2),.service-workflow-form .intake-record-fields{grid-column:auto}.service-workflow-form .intake-note-consult-row{grid-template-columns:1fr;gap:12px}}
.service-workflow-form .intake-note-consult-row{grid-template-columns:300px 320px;column-gap:clamp(48px,8.5vw,144px);row-gap:12px;justify-content:start}
@media(max-width:800px){.service-workflow-form .intake-note-consult-row{grid-template-columns:1fr;gap:12px}}
/* 같은 행 제목과 상태 버튼의 글자/간격을 통일한다. */
.service-workflow-form .intake-note-consult-row .consultation-source .label-action label,
.service-workflow-form .intake-note-consult-row .intake-note-field>label{font-size:14px!important;font-weight:700!important;line-height:1.4}
.service-workflow-form .intake-progress-line{grid-template-columns:110px minmax(420px,550px) 220px 220px minmax(350px,420px);column-gap:16px}
.service-workflow-form .intake-progress-line .intake-choice-field{min-width:0}
.service-workflow-form .intake-progress-line #id_disability_status,
.service-workflow-form .intake-progress-line #id_voucher_status{display:flex;flex-wrap:nowrap;gap:7px;width:100%;min-width:0}
.service-workflow-form .intake-progress-line .intake-choice-field label:has(input){min-width:0;padding:8px 8px;font-size:13px;flex:0 0 auto}
@media(max-width:1500px){.service-workflow-form .intake-progress-line{grid-template-columns:110px minmax(300px,1fr) 220px 220px}.service-workflow-form .intake-record-fields{grid-column:2/-1}}
@media(max-width:1050px){.service-workflow-form .intake-progress-line{grid-template-columns:110px minmax(240px,1fr) 220px}.service-workflow-form .intake-progress-line .intake-choice-field:nth-of-type(2){grid-column:2}}
/* 넓은 화면에서는 치료영역과 상태 선택을 한 줄로 고정하고, 두 제목의 글자 규격을 동일하게 한다. */
@media(min-width:1051px){
  .service-workflow-form .intake-progress-line{grid-template-columns:100px max-content 180px 180px max-content;column-gap:10px;align-items:start;justify-content:start;flex-wrap:nowrap}
  .service-workflow-form .intake-progress-line .treatment-choice-field{min-width:0}
  .service-workflow-form .intake-progress-line .treatment-chip-list{flex-wrap:nowrap!important;gap:3px;white-space:nowrap}
  .service-workflow-form .intake-progress-line .treatment-choice-field .choice-chip span{padding:6px 7px;font-size:12px}
  .service-workflow-form .intake-progress-line .other-treatment{max-width:126px;margin-left:0;gap:3px}
  .service-workflow-form .intake-progress-line .other-treatment input{width:120px;padding:6px}
  .service-workflow-form .intake-progress-line #id_disability_status,
  .service-workflow-form .intake-progress-line #id_voucher_status{flex-wrap:nowrap;gap:5px}
  .service-workflow-form .intake-progress-line .voucher-record-field .voucher-choice-list{flex-wrap:nowrap;gap:3px}
}
.service-workflow-form .intake-note-consult-row .consultation-source .label-action label,
.service-workflow-form .intake-note-consult-row .intake-note-field>label{display:inline-block!important;margin:0!important;font:700 14px/1.4 "Malgun Gothic",system-ui,sans-serif!important;letter-spacing:normal!important}

/* 접수 진행 단계: 진행상태·상담내용·후속조치를 화면의 세 열에 배치한다. */
.service-workflow-form .intake-workflow-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:stretch}
.service-workflow-form .intake-workflow-columns>.compact-intake-card{min-width:0;min-height:500px;padding:14px}
.service-workflow-form .intake-workflow-columns .intake-service-band{min-width:0}
.service-workflow-form .intake-workflow-columns .intake-progress-line{display:grid;grid-template-columns:minmax(0,1fr)!important;gap:12px;min-width:0}
.service-workflow-form .intake-workflow-columns .intake-progress-line .treatment-chip-list{flex-wrap:wrap!important;white-space:normal;gap:5px}
.service-workflow-form .intake-workflow-columns .intake-progress-line .intake-choice-field:nth-of-type(2){grid-column:auto}
.service-workflow-form .intake-workflow-columns .intake-record-fields{grid-column:auto;min-width:0}
.service-workflow-form .intake-workflow-columns .intake-note-consult-row{display:grid;grid-template-columns:minmax(0,1fr)!important;gap:12px;margin-top:0}
.service-workflow-form .intake-workflow-columns .intake-note-consult-row .consultation-layout,
.service-workflow-form .intake-workflow-columns .intake-note-consult-row .intake-note-field{width:100%;max-width:none;min-width:0}
.service-workflow-form .intake-workflow-columns .intake-note-consult-row textarea{width:100%;min-height:170px;box-sizing:border-box}
.service-workflow-form .intake-workflow-columns .intake-followup-line{grid-template-columns:minmax(0,1fr)!important;gap:12px}
.service-workflow-form .intake-workflow-columns .intake-progress-line .compact-status select{width:100%!important;max-width:none!important;min-height:44px;font-size:15px}
.service-workflow-form .intake-workflow-columns .intake-progress-line .treatment-choice-field .choice-chip span{padding:9px 11px;font-size:14px}
.service-workflow-form .intake-workflow-columns .intake-progress-line .intake-choice-field #id_disability_status,
.service-workflow-form .intake-workflow-columns .intake-progress-line .intake-choice-field #id_voucher_status{width:100%!important;min-height:56px;gap:8px;padding:8px;box-sizing:border-box}
.service-workflow-form .intake-workflow-columns .intake-note-consult-row .consultation-layout,
.service-workflow-form .intake-workflow-columns .intake-note-consult-row .consultation-source,
.service-workflow-form .intake-workflow-columns .intake-note-consult-row .intake-note-field{width:100%!important;max-width:none!important;min-width:0}
.service-workflow-form .intake-workflow-columns .intake-note-consult-row textarea{display:block;width:100%!important;max-width:none!important;min-width:0;min-height:210px;box-sizing:border-box}
@media(max-width:1250px){.service-workflow-form .intake-workflow-columns{grid-template-columns:1fr}.service-workflow-form .intake-workflow-columns>.compact-intake-card{min-height:0}}

/* 메모 필드만 제거하고 기존 3분할 크기는 유지 */
.service-workflow-form .intake-workflow-columns>.intake-consultation-card{grid-column:auto}
.service-workflow-form .intake-workflow-columns .intake-note-consult-row{grid-template-columns:minmax(0,1fr)!important}
.service-workflow-form .intake-workflow-columns .intake-note-consult-row .consultation-layout{grid-template-columns:minmax(0,1fr)!important}
.service-workflow-form .intake-workflow-columns .intake-note-consult-row textarea{min-height:210px!important}

/* 이력은 기간 요약을 먼저 보이고 월·승인 내역은 필요할 때 펼친다. */
.ended-service-history>.service-period,.payment-session-group{margin-top:8px}
.ended-service-history h2{font-size:20px;line-height:1.35;margin:0 0 12px}.ended-service-history h2 small{font-size:13px;font-weight:600;color:var(--muted)}.ended-service-history>.service-period>summary{font-size:15px;font-weight:600}
.ended-service-history .service-period{padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:#fff}
.ended-service-history .service-month{margin:8px 0 0 16px;padding:8px 10px;border-left:3px solid #b9d9ca;background:#f8fbf9}
.ended-service-history summary,.payment-session-group summary{cursor:pointer;line-height:1.55}
.ended-service-history ul{margin:8px 0 0;padding-left:22px}
.payment-session-group>.table-wrap{margin-top:12px}
.payroll-history-card td form{display:flex;gap:6px;align-items:center;min-width:220px}
.payroll-history-card td form input{max-width:150px;min-width:0}
