:root{--ink:#2c2c2a;--gray:#5f5e5a;--faint:#a9a89f;--teal:#085041;--teal2:#0f6e56;--tealbg:#f2fbf8;--panel:#f7f6f1;--border:#e2e0d8;--live:#c8453b;--font:-apple-system,"Segoe UI","Noto Sans KR","Apple SD Gothic Neo",sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font);color:var(--ink);background:linear-gradient(#f7f6f1d1,#f7f6f1d1),url(/ecis-background.jpg) 50%/cover no-repeat fixed;background-color:var(--panel);margin:0}button{font-family:var(--font);touch-action:manipulation;cursor:pointer}h1,h2{margin:0}.brandmark{width:auto;height:40px;display:block}.auth-screen{justify-content:center;align-items:center;min-height:100dvh;padding:24px;display:flex;position:relative}.auth-screen .brandmark{height:36px;position:absolute;top:20px;left:24px}.auth-card{border:1px solid var(--border);background:#fff;border-radius:18px;width:100%;max-width:380px;padding:28px 24px;box-shadow:0 12px 40px #28261e14}.auth-card h1{text-align:center;margin-bottom:6px;font-size:20px}.auth-sub{color:var(--gray);text-align:center;margin:0 0 20px;font-size:14px}.auth-err{color:var(--live);margin:4px 0;font-size:13px}.auth-notice{color:var(--teal2);margin:4px 0;font-size:13px}.field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.field>span{color:var(--gray);font-size:13px;font-weight:700}.field>span .label-note{font-weight:400}.field-row{gap:12px;display:flex}.field-row .field{flex:1}.radio-options{align-items:center;gap:20px;height:44px;display:flex}.radio-options label{color:var(--ink);cursor:pointer;align-items:center;gap:6px;font-size:14px;font-weight:400;display:flex}.radio-options input[type=radio]{width:auto;height:auto;accent-color:var(--teal);cursor:pointer;border:none;padding:0}input,select,textarea{border:1px solid var(--border);height:44px;font-size:14px;font-family:var(--font);color:var(--ink);background:#fff;border-radius:10px;width:100%;padding:0 12px}textarea{resize:vertical;height:auto;padding:10px 12px}input:focus,select:focus,textarea:focus{border-color:var(--teal2);outline:none;box-shadow:0 0 0 3px #0f6e561f}.primary{background:var(--teal);color:#fff;border:none;border-radius:10px;height:46px;padding:0 18px;font-size:14px;font-weight:600}.primary:disabled{opacity:.45;cursor:default}.ghost{border:1px solid var(--border);height:40px;color:var(--ink);background:#fff;border-radius:10px;padding:0 14px;font-size:13px}.ghost.danger{color:var(--live);border-color:#f3c9c4}.linklike{color:var(--teal2);background:0 0;border:none;margin:8px auto 0;padding:8px 0;font-size:13px;text-decoration:underline;display:block}.auth-forgot{text-align:center;color:var(--gray);margin:12px 0 0;font-size:13px}.linklike-inline{font:inherit;color:var(--teal2);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.hint{color:var(--gray);font-size:14px}.hint.err{color:var(--live)}.app-shell{flex-direction:column;min-height:100dvh;display:flex}.app-header{border-bottom:1px solid var(--border);background:#fff;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding:12px 22px;display:flex}.app-header-left{align-items:center;gap:14px;min-width:0;display:flex}.app-header h1{font-size:17px}.app-header .brandmark{height:30px}.app-date{color:var(--gray);white-space:nowrap;font-size:13px}.app-header-right{align-items:center;gap:14px;display:flex}.who{color:var(--gray);font-size:13px}.app-tabs{border-bottom:1px solid var(--border);background:#fff;gap:4px;padding:10px 22px 0;display:flex}.app-tabs button{color:var(--gray);background:0 0;border:none;border-bottom:2px solid #0000;padding:10px 16px;font-size:14px;font-weight:600}.app-tabs button.on{color:var(--teal);border-bottom-color:var(--teal)}.app-main{flex:1;width:100%;max-width:1400px;margin:0 auto;padding:22px}.dash-layout{align-items:flex-start;gap:20px;display:flex}.dash-cal{flex:0 0 300px}.dash-main{flex:1;min-width:0}@media (width<=960px){.dash-layout{flex-direction:column}.dash-cal{flex:none;width:100%;max-width:420px}}.cal{background:#fff;border:1px solid #1e3a5f;border-radius:12px;padding:12px;box-shadow:0 6px 16px #28261e24}.cal-head{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.cal-title{color:var(--ink);font-size:14px;font-weight:700}.cal-nav{border:1px solid var(--border);width:28px;height:28px;color:var(--ink);background:#fff;border-radius:7px;font-size:15px;line-height:1}.cal-today{color:var(--teal2);background:0 0;border:none;margin:0 auto 8px;padding:2px;font-size:12px;text-decoration:underline;display:block}.cal-grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.cal-dow{margin-bottom:2px}.cal-dow-cell{text-align:center;color:var(--gray);padding:2px 0;font-size:10px;font-weight:700}.cal-cell{border:1px solid var(--border);background:#fff;border-radius:6px;flex-direction:column;gap:3px;min-height:42px;padding:3px;display:flex}.cal-cell.cal-out{background:var(--panel)}.cal-cell.cal-redday{background:#d6454129}.cal-cell.cal-today-cell{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal)}.cal-daynum{color:var(--gray);font-size:10px;line-height:1}.cal-out .cal-daynum{color:var(--faint)}.cal-redday .cal-daynum{color:#b23a33}.cal-dots{flex-wrap:wrap;align-items:center;gap:2px;display:flex}.cal-dot{cursor:pointer;border:none;border-radius:50%;width:8px;height:8px;padding:0}.cal-dot.prio-high{background:#d64541}.cal-dot.prio-medium{background:#e8b004}.cal-dot.prio-low{background:#3fa45b}.cal-dot.cal-dot-expired{background:#6f6e68}.cal-star{color:#4fa8e0;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:10px;height:10px;padding:0;font-size:11px;line-height:1;display:inline-flex}.cal-star.cal-star-passed{color:#6f6e68}.star-icon{color:#4fa8e0}.cal-more{color:var(--gray);font-size:9px;line-height:1}.cal-note{color:var(--faint);text-align:center;margin:8px 0 0;font-size:11px}.today-meetings{background:#fff;border:1px solid #1e3a5f;border-radius:12px;margin-top:16px;padding:12px;box-shadow:0 6px 16px #28261e24}.today-meetings-title{color:var(--ink);text-align:center;margin:0 0 10px;font-size:14px;font-weight:700}.today-meetings-table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:12px}.today-meetings-table th{text-align:left;color:var(--gray);border-bottom:1px solid var(--border);padding:0 4px 6px;font-size:11px;font-weight:700}.today-meetings-table td{border-bottom:1px solid var(--border);overflow-wrap:anywhere;padding:6px 4px}.today-meetings-table tbody tr:last-child td{border-bottom:none}.today-meetings-table tbody tr{cursor:pointer}.today-meetings-table tbody tr:hover td{background:var(--panel)}.today-meetings-table th:nth-child(2),.today-meetings-table td:nth-child(2){white-space:nowrap;width:76px}.today-meetings-table th.today-meetings-name,.today-meetings-table td.today-meetings-name{width:52%;color:var(--ink);font-weight:700}.dash-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:16px;display:flex}.dash-toolbar-left{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.dash-toolbar-actions{align-items:center;gap:8px;display:flex}.dept-filter{color:var(--gray);white-space:nowrap;align-items:center;font-size:13px;display:flex}.dept-filter select{width:auto;min-width:140px;height:36px;font-size:13px}.dash-refreshed{color:var(--gray);margin:-6px 0 14px;font-size:12px}.mytasks-who{color:var(--gray);font-size:15px;font-weight:400}.dash-tabs{border-bottom:2px solid var(--teal);border-radius:0 0 4px 4px;align-items:flex-end;gap:4px;padding:0 8px;display:flex}.dash-tabs button{border:1px solid var(--border);color:#fff;background:#908f89;border-radius:9px 9px 0 0;margin-bottom:2px;padding:7px 16px;font-size:13px;font-weight:600}.dash-tabs button:hover:not(.on){background:#7c7b75}.dash-tabs button.on{color:var(--teal);border-color:var(--teal);background:#fff;border-bottom:2px solid #fff;margin-bottom:-2px}.table-wrap{border:1px solid var(--border);background:#fff;border-radius:12px;overflow-x:auto}.task-table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:13px}.task-table th,.task-table td{border-bottom:1px solid var(--border);white-space:normal;overflow-wrap:anywhere;padding:9px 10px}.task-table th{text-align:center}.task-table td{text-align:left}.task-table td.col-center{text-align:center}.task-table th.col-title,.task-table td.col-title{width:22%}.task-table td.col-title{white-space:normal;overflow-wrap:anywhere;word-break:break-word}.task-table tbody tr{cursor:default}.task-table th{color:#fff;background:#1e3a5f;font-size:13px;font-weight:700}.task-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.task-table tbody tr:last-child td{border-bottom:none}.task-table td.empty{color:var(--faint);text-align:center;padding:28px}.task-table tr.expired td{color:#fff;background:#6f6e68}.task-table tr.expired .col-days{font-weight:600}.task-table tr.expired .icon-btn{color:#fff}.task-table tr.expired .icon-btn:hover{color:#fff;background:#ffffff2e}.task-table th.col-attachment,.task-table td.col-attachment{text-align:center;white-space:nowrap;width:96px}.task-table th.col-actions,.task-table td.col-actions{text-align:center;white-space:nowrap;width:78px;padding-left:6px}.row-actions{gap:2px;display:inline-flex}.icon-btn{width:30px;height:30px;color:var(--gray);background:0 0;border:none;border-radius:7px;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{background:var(--panel);color:var(--ink)}.icon-btn:disabled{opacity:.5;cursor:default}.icon-btn[aria-label=Delete\ task]:hover,.icon-btn[aria-label=Delete\ meeting]:hover{color:var(--live);background:#c8453b1f}.meetings-table th.col-mtitle,.meetings-table td.col-mtitle{width:40%}.meetings-table th.col-mtime,.meetings-table td.col-mtime{white-space:nowrap;width:170px}.meetings-table tbody tr.meetings-row{cursor:pointer}.meetings-table tbody tr.meetings-row:hover td{background:var(--panel)}.meetings-table tbody tr.meetings-row-past td{color:var(--gray);background:#e3e2de}.meetings-table tbody tr.meetings-row-past:hover td{background:#d8d7d2}.meetings-table th{color:#0d2c4d;background:#cfe8ff}.icon-btn.icon-attachment-on{color:#1e63c7}.icon-btn.icon-attachment-on:hover{color:#1e63c7;background:#1e63c724}.task-table tr.expired .icon-attachment-on{color:#9cc6ff}.icon-doc-img{-webkit-mask-mode:alpha;background-color:currentColor;width:27px;height:27px;display:inline-block;-webkit-mask:url(/file_attachment.png) 50%/contain no-repeat;-webkit-mask-source-type:alpha;mask:url(/file_attachment.png) 50%/contain no-repeat alpha}.task-table th.col-prio,.task-table td.col-prio{text-align:center;white-space:nowrap;width:60px}.task-table th.col-days,.task-table td.col-days{text-align:center;white-space:nowrap;width:58px}.task-table th.col-days svg{margin:0 auto;display:block}.prio-dot{vertical-align:middle;border-radius:50%;width:12px;height:12px;display:inline-block}.prio-flag{margin:0 auto;display:block}.prio-dot.prio-high{background:#d64541}.prio-dot.prio-medium{background:#e8b004}.prio-dot.prio-low{background:#3fa45b}.task-table tr.prio-high td{color:#fff;background:#d64541}.task-table tr.prio-high.overdue td{color:#fff}.task-table tr.prio-high .prio-dot{background:#fff}.task-table tr.prio-high .icon-btn{color:#fff}.task-table tr.prio-high .icon-btn:hover{color:#fff;background:#ffffff38}.task-table tr.prio-high .icon-attachment-on{color:#dcebff}.task-table tr.prio-medium td{background:#e8b00421}.task-table tr.prio-low td{background:#3fa45b1a}.card-list{flex-direction:column;gap:12px;display:flex}.task-card{border:1px solid var(--border);background:#fff;border-radius:12px;padding:16px}.task-card-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.task-card-meta{color:var(--gray);margin:8px 0 0;font-size:13px}.task-card-desc{color:var(--ink);margin:8px 0 0;font-size:13px;line-height:1.5}.task-card-actions{gap:8px;margin-top:12px;display:flex}.badge{background:var(--tealbg);color:var(--teal);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600}.badge.status-completed{color:#2f7a3a;background:#eef7ee}.badge.status-on-hold{color:var(--gray);background:#f3f1eb}.modal-backdrop{z-index:50;background:#28261e66;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card{background:#fff;border-radius:16px;width:100%;max-width:360px;max-height:90vh;padding:22px;overflow-y:auto;box-shadow:0 18px 50px #28261e4d}.modal-card.wide{max-width:560px}.modal-title{margin-bottom:14px;font-size:17px}.modal-actions{gap:10px;margin-top:8px;display:flex}.modal-actions .ghost,.modal-actions .modal-ok{flex:1}@media (width<=640px){.field-row{flex-direction:column;gap:0}.app-header{flex-direction:column;align-items:flex-start;gap:8px}}@media (width<=480px) and (orientation:portrait){.task-table .col-days,.task-table .col-dept,.task-table .col-owner,.task-table .col-status,.task-table .col-taskdate,.task-table .col-enterdate,.task-table .col-deleted{display:none}.task-table th.col-title,.task-table td.col-title{white-space:normal;width:auto}.task-table th.col-due,.task-table td.col-due{width:auto}.task-table th,.task-table td{padding:8px 6px}}
