:root{--c-plan:#bdd7ee;--c-prog:#c6efce;--c-done:#fff;--c-delay:#ffeb9c;--c-issue:#f4b6b6;--border:#d0d4da;--header-bg:#f2f4f7;--group-bg:#dce6f1;--accent:#2563eb}*{box-sizing:border-box}body,html{padding:0;margin:0}body{font-family:Malgun Gothic,맑은 고딕,-apple-system,BlinkMacSystemFont,sans-serif;background:#eef1f5;color:#1f2430;font-size:13px}.wrap{max-width:1640px;margin:0 auto;padding:18px}.topbar{display:flex;align-items:center;flex-wrap:wrap;gap:14px;margin-bottom:14px}.topbar h1{font-size:20px;margin:0;font-weight:700}.owner{background:#fff;border:1px solid var(--border);border-radius:8px;padding:6px 14px;font-weight:700;font-size:15px}.owner input,.owner select{border:none;font-weight:700;font-size:15px;outline:none;text-align:center;background:transparent;cursor:pointer}.spacer{flex:1 1}.legend{display:flex;gap:8px;flex-wrap:wrap}.legend span{padding:4px 12px;border:1px solid var(--border);border-radius:5px;font-weight:600;font-size:12px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:transform .08s,box-shadow .12s;opacity:.5}.legend span.active{opacity:1;box-shadow:0 1px 4px rgba(0,0,0,.15)}.legend span:hover{transform:translateY(-1px)}.lg-plan{background:var(--c-plan)}.lg-prog{background:var(--c-prog)}.lg-done{background:var(--c-done)}.lg-delay{background:var(--c-delay)}.lg-issue{background:var(--c-issue)}.toolbar{display:flex;gap:10px;row-gap:10px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.toolbar .filter-btn,.toolbar .manage-btn,.toolbar .range-filter,.toolbar input[type=text],.toolbar>button{height:36px;box-sizing:border-box}.toolbar input[type=text]{flex:0 1 320px;width:320px;min-width:200px;padding:0 12px;border:1px solid var(--border);border-radius:8px;font-size:13px;outline:none}.toolbar input[type=text]:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,99,235,.12)}.tb-sep{width:1px;height:22px;background:var(--border);margin:0 1px;flex:none}button{padding:7px 14px;border:1px solid var(--border);background:#fff;border-radius:6px;cursor:pointer;font-size:13px;font-weight:600;color:#1f2430}button:hover{background:#f5f7fa}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.primary:hover{background:#1d4fd6}.stat{font-size:12px;color:#5b6472;margin-left:auto}.stat-total{color:#aab2c0}.table-shell{background:#fff;border:1px solid var(--border);border-radius:10px;overflow-x:auto;box-shadow:0 1px 3px rgba(0,0,0,.05);width:-moz-fit-content;width:fit-content;max-width:100%}table{border-collapse:collapse;width:100%}td,th{border:1px solid var(--border);padding:6px 7px;vertical-align:middle}.table-shell td{overflow:hidden}.table-shell th{position:relative}.col-resize{position:absolute;top:0;right:0;width:7px;height:100%;cursor:col-resize;z-index:3}.col-resize:hover{background:rgba(37,99,235,.35)}.col-move{display:inline-block;margin-right:4px;color:#b8c0cc;font-size:11px;letter-spacing:-2px;cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}.col-move:hover{color:var(--accent)}.col-move:active{cursor:-webkit-grabbing;cursor:grabbing}.table-shell th.th-dragover{box-shadow:inset 3px 0 0 var(--accent)}thead th{background:var(--header-bg);position:-webkit-sticky;position:sticky;top:0;z-index:2;font-weight:700;text-align:center;white-space:nowrap;font-size:12.5px}thead .sub th{top:29px;font-weight:600;color:#5b6472;font-size:11.5px}td.goal,td.task{background:var(--group-bg);font-weight:700;text-align:center;vertical-align:middle;white-space:pre-wrap}td.goal{min-width:120px}td.task{min-width:100px}td.group-add{cursor:pointer}td.group-add:hover{background:#cfdcef;box-shadow:inset 0 0 0 2px var(--accent)}td.sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}td.sortable:hover{background:#d0ddef}td.sortable:active{cursor:-webkit-grabbing;cursor:grabbing}td.goal.drag-active,td.task.drag-active{outline:2px dashed var(--accent);outline-offset:-3px;background:#e7eefb}.sort-ind{color:var(--accent);font-size:11px}td.center{text-align:center;white-space:nowrap}td.detail{min-width:150px}.th-sort{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.th-sort:hover{background:#e6eaf1}.clip-1{display:block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:help}.row-drag{cursor:-webkit-grab;cursor:grab}.row-drag:active{cursor:-webkit-grabbing;cursor:grabbing}.drag-grip{display:inline-block;color:#9aa4b2;margin-right:7px;font-size:14px;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}.row-drag:hover .drag-grip{color:var(--accent)}tr.dragging>td{opacity:.45}tr.drop-over>td{box-shadow:inset 0 2px 0 0 var(--accent);background:#eef4ff!important}.date-edit,.row-drag .status-badge,.row-drag a,.row-drag button{cursor:pointer}.date-edit{position:relative;display:inline-block;border-radius:5px;padding:1px 6px;min-width:78px}.date-edit:hover{background:#eef2fb;box-shadow:inset 0 0 0 1px #cdd9f0}.date-empty{color:#c2c8d0}.date-hidden{position:absolute;left:50%;bottom:0;width:1px;height:1px;opacity:0;pointer-events:none;border:0;padding:0}td.note{min-width:130px;max-width:220px;color:#444}.note-clip{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;cursor:help}.note-clip,.note-tip{white-space:pre-wrap;word-break:break-word}.note-tip{position:fixed;z-index:70;max-width:340px;background:#1f2430;color:#fff;padding:9px 12px;border-radius:8px;font-size:12.5px;line-height:1.55;box-shadow:0 8px 24px rgba(16,24,40,.22);pointer-events:none;animation:dd-pop .1s ease}.range-filter{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border:1px solid var(--border);border-radius:8px;background:#fff;font-size:12.5px}.range-filter.on{border-color:var(--accent);background:#eff4ff}.range-toggle{display:inline-flex;align-items:center;gap:5px;font-weight:600;color:#1f2430;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.range-toggle input{width:14px;height:14px;accent-color:var(--accent);cursor:pointer}.range-filter input[type=date]{padding:4px 6px;border:1px solid var(--border);border-radius:6px;font-size:12px;font-family:inherit;color:#1f2430;outline:none}.range-filter input[type=date]:disabled{opacity:.45;cursor:not-allowed}.range-filter .tilde{color:#98a0ad}.parent-detail{margin-bottom:14px;padding:12px 14px;background:#f7f9fc;border:1px solid #e6ebf4;border-radius:12px}.parent-detail select{width:100%}.jira-row{display:flex;gap:8px;margin-bottom:18px;padding:12px 14px;background:linear-gradient(180deg,#f2f7ff,#edf3fe);border:1px solid #dae6fb;border-radius:12px}.jira-row input{flex:1 1;padding:9px 12px;border:1px solid #d5dbe8;border-radius:9px;font-size:13px;outline:none;font-family:inherit;background:#fff;transition:border-color .15s,box-shadow .15s}.jira-row input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,99,235,.13)}.jira-row button{white-space:nowrap;border-radius:9px;font-weight:700}.cfg-ok{font-weight:700;color:#2e7d32;background:#e7f4e8;border:1px solid #c6e6c9;border-radius:999px;padding:2px 9px;vertical-align:middle;margin-left:6px}.cfg-ok,.hint{font-size:11px}.hint{font-weight:500;color:#98a0ad}.admin-note{font-size:11.5px;color:#98a0ad;margin:10px 2px 0}.meta-list{max-height:56vh;overflow:auto;display:flex;flex-direction:column;gap:10px;margin:8px 0 4px}.meta-goal{border:1px solid #e3e9f4;border-radius:9px;padding:10px;background:#fafbfd}.meta-goal.off{opacity:.55}.meta-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.meta-head strong{font-size:13.5px}.meta-tasks{display:flex;flex-direction:column;gap:5px;padding-left:8px;border-left:2px solid #e3e9f4}.meta-task{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:3px 0}.meta-task.off .meta-task-name{color:#aab2c0;text-decoration:line-through}.meta-task-name{font-size:12.5px}.meta-actions{display:flex;align-items:center;gap:6px}.meta-actions button{padding:3px 8px;font-size:11.5px}.meta-toggle{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:#5b6472;cursor:pointer;white-space:nowrap}.meta-toggle input{width:13px;height:13px;accent-color:var(--accent);cursor:pointer}.meta-add{align-self:flex-start;padding:3px 8px;font-size:11.5px;color:var(--accent);border-color:#cdd9f0;background:#fff;margin-top:3px}td.out{white-space:nowrap}td.out a{color:var(--accent)}.status-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 9px 3px 11px;border-radius:999px;font-weight:700;font-size:12px;border:1px solid rgba(0,0,0,.1);color:#1f2430;cursor:pointer;font-family:inherit;line-height:1.5;transition:transform .08s ease,box-shadow .12s ease,filter .12s ease}.status-badge:hover{transform:translateY(-1px);box-shadow:0 2px 7px rgba(16,24,40,.16);filter:saturate(1.12)}.status-badge .caret{font-size:9px;opacity:.5;transition:transform .15s ease}.status-badge.open .caret{transform:rotate(180deg)}.status-badge.open{box-shadow:0 0 0 2px rgba(37,99,235,.35)}.status-badge.b-plan{background:var(--c-plan)}.status-badge.b-prog{background:var(--c-prog)}.status-badge.b-done{background:#e8f0e3}.status-badge.b-delay{background:var(--c-delay)}.status-badge.b-issue{background:var(--c-issue)}.dd-overlay{position:fixed;inset:0;z-index:60;background:transparent}@keyframes dd-pop{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:none}}.status-menu{position:fixed;z-index:61;min-width:134px;background:#fff;border:1px solid #e5e8ee;border-radius:11px;box-shadow:0 10px 28px rgba(16,24,40,.16);padding:5px;animation:dd-pop .12s ease}.status-option{display:flex;align-items:center;gap:8px;width:100%;padding:7px 9px;border:none;background:transparent;border-radius:8px;font-size:12.5px;font-weight:600;color:#1f2430;cursor:pointer;font-family:inherit;text-align:left}.status-option:hover{background:#f3f5f9}.status-option.selected{background:#eef2fb}.status-option .dot{width:11px;height:11px;border-radius:50%;border:1px solid rgba(0,0,0,.14);flex:none}.status-option .opt-label{flex:1 1}.status-option .opt-check{color:var(--accent);font-weight:800}.filter-dd{position:relative;display:inline-block}.filter-btn{display:inline-flex;align-items:center;gap:5px;padding:7px 12px;border:1px solid var(--border);background:#fff;border-radius:8px;font-size:13px;font-weight:600;color:#1f2430;cursor:pointer}.filter-btn:hover{background:#f5f7fa}.filter-btn .caret{font-size:9px;opacity:.55}.filter-btn.active{border-color:var(--accent);color:var(--accent);background:#eff4ff}.filter-menu{position:absolute;z-index:61;top:calc(100% + 6px);left:0;min-width:196px;background:#fff;border:1px solid #e5e8ee;border-radius:11px;box-shadow:0 10px 28px rgba(16,24,40,.16);padding:6px;animation:dd-pop .12s ease}.filter-menu-head{display:flex;align-items:center;justify-content:space-between;padding:4px 8px 8px;font-size:12px;font-weight:700;color:#5b6472;border-bottom:1px solid #eef1f5;margin-bottom:4px}.clear-link{border:none;background:transparent;color:var(--accent);font-size:11.5px;font-weight:700;cursor:pointer;padding:0}.filter-menu-body{max-height:240px;overflow:auto}.filter-opt{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:7px;font-size:12.5px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filter-opt:hover{background:#f3f5f9}.filter-opt input{width:14px;height:14px;accent-color:var(--accent);cursor:pointer}.filter-empty{padding:10px 8px;color:#98a0ad;font-size:12px;text-align:center}.b-plan{background:var(--c-plan)}.b-prog{background:var(--c-prog)}.b-done{background:#e8f0e3}.b-delay{background:var(--c-delay)}.b-issue{background:var(--c-issue)}.row-actions{white-space:nowrap;text-align:center}.row-actions button{padding:3px 8px;font-size:12px}tbody tr:hover td:not(.goal):not(.task){background:#fafbfd}.empty{text-align:center;padding:0;color:#98a0ad}.empty-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:44px 20px;max-width:400px;margin:0 auto}.empty-emoji{font-size:34px;line-height:1;opacity:.9}.empty-title{font-size:15px;font-weight:700;color:#3a4252}.empty-sub{font-size:12.5px;color:#98a0ad;line-height:1.55;text-align:center}.empty-reset{margin-top:6px;padding:8px 16px;border:1px solid var(--accent);background:#eef4ff;color:var(--accent);border-radius:999px;font-size:12.5px;font-weight:700;cursor:pointer}.empty-reset:hover{background:var(--accent);color:#fff}.modal-bg{position:fixed;inset:0;background:rgba(17,24,39,.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:50;padding:24px;animation:modal-fade .18s ease}.modal{background:#fff;border-radius:16px;width:580px;max-width:96vw;max-height:92vh;display:flex;flex-direction:column;overflow:hidden;border:1px solid rgba(15,23,42,.05);box-shadow:0 24px 60px -12px rgba(15,23,42,.35),0 8px 20px -10px rgba(15,23,42,.22);animation:modal-pop .22s cubic-bezier(.16,1,.3,1)}@keyframes modal-fade{0%{opacity:0}to{opacity:1}}@keyframes modal-pop{0%{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}.modal-head{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 24px;border-bottom:1px solid #eef1f6}.modal-head h2{margin:0;font-size:18px;font-weight:800;letter-spacing:-.01em;color:#131722}.modal-x{flex:0 0 auto;width:34px;height:34px;border:none;border-radius:10px;background:transparent;color:#9aa2b1;font-size:17px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}.modal-x:hover{background:#f1f3f7;color:#2a2f3a}.modal-body{flex:1 1 auto;overflow-y:auto;padding:20px 24px}.grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px 16px;gap:14px 16px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}.field label{font-size:11.5px;font-weight:700;color:#6b7382;letter-spacing:.01em}.modal .field input,.modal .field select,.modal .field textarea{padding:9px 12px;border:1px solid #e2e6ef;border-radius:9px;background:#fff;font-size:13.5px;font-family:inherit;color:#1f2430;outline:none;transition:border-color .15s,box-shadow .15s,background .15s}.modal .field input::placeholder,.modal .field textarea::placeholder{color:#b6bdc9}.modal .field input:hover,.modal .field select:hover,.modal .field textarea:hover{border-color:#c8cfdc}.modal .field input:focus,.modal .field select:focus,.modal .field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,99,235,.13)}.modal .field input[readonly]{background:#f4f6fa;color:#6b7382;cursor:default}.modal .field input[readonly]:hover{border-color:#e2e6ef}.modal .field select{appearance:none;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;padding-right:34px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7382' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.field textarea{resize:vertical;min-height:96px;line-height:1.55}.field.full textarea{min-height:112px}.modal-actions{flex:0 0 auto;display:flex;justify-content:flex-end;gap:10px;padding:14px 24px;border-top:1px solid #eef1f6;background:#fbfcfe}.modal-actions button{padding:9px 20px;border-radius:10px;font-size:13.5px;font-weight:700;transition:background .15s,box-shadow .15s,border-color .15s}.modal-actions button:not(.primary){background:#fff;border-color:#dfe3ec;color:#5b6472}.modal-actions button:not(.primary):hover{background:#f4f6fa;border-color:#cdd3df}.modal-actions button.primary{box-shadow:0 2px 8px -1px rgba(37,99,235,.42)}.modal-actions button.primary:hover{box-shadow:0 5px 14px -2px rgba(37,99,235,.5)}.modal-actions button.danger{background:#e0483d;color:#fff;border-color:#e0483d;box-shadow:0 2px 8px -1px rgba(224,72,61,.4)}.modal-actions button.danger:hover{background:#cf3a30;box-shadow:0 5px 14px -2px rgba(224,72,61,.5)}.modal-actions button:disabled{opacity:.6;box-shadow:none;cursor:default}.modal.dialog{width:400px}.dialog-bg{z-index:1100}.dialog-msg{font-size:14px;line-height:1.65;color:#3a4252;white-space:pre-line}.onboard{background:#fff;border:1px solid #e6ebf4;border-radius:16px;padding:28px 30px 22px;box-shadow:0 8px 26px -12px rgba(15,23,42,.18)}.onboard-hi{font-size:20px;font-weight:800;color:#131722;display:flex;align-items:center;gap:9px}.onboard-wave{font-size:22px}.onboard-sub{margin:6px 0 20px;font-size:13.5px;color:#6b7382;line-height:1.6}.onboard-steps{display:flex;flex-direction:column;gap:12px}.onboard-step{gap:14px;padding:14px 16px;border:1px solid #eef1f6;border-radius:12px;background:#fafbfe}.onboard-num,.onboard-step{display:flex;align-items:center}.onboard-num{flex:0 0 auto;width:36px;height:36px;border-radius:50%;background:#eef4ff;color:var(--accent);font-size:16px;font-weight:800;justify-content:center}.onboard-txt{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.onboard-txt b{font-size:14px;font-weight:700;color:#1f2430}.onboard-txt span{font-size:12.5px;color:#8a93a2}.onboard-go{flex:0 0 auto;padding:8px 16px;border-radius:9px;font-size:12.5px;font-weight:700;border:1px solid #cdd9f0;background:#fff;color:var(--accent);cursor:pointer}.onboard-go.primary{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 2px 8px -1px rgba(37,99,235,.42)}.onboard-go.ghost{color:#5b6472;border-color:#e2e6ef}.onboard-go:hover{filter:brightness(.97)}.onboard-note{display:flex;align-items:center;gap:6px;margin-top:16px;font-size:11.5px;color:#a3abb8}.tour-root{inset:0;z-index:1000}.tour-root,.tour-spot{position:fixed;pointer-events:none}.tour-spot{border-radius:10px;box-shadow:0 0 0 9999px rgba(17,24,39,.5),0 0 0 3px var(--accent);transition:top .25s cubic-bezier(.16,1,.3,1),left .25s cubic-bezier(.16,1,.3,1),width .25s,height .25s}.tour-dimfull{inset:0;background:rgba(17,24,39,.5)}.tour-dimfull,.tour-finger{position:fixed;pointer-events:none}.tour-finger{filter:drop-shadow(0 2px 4px rgba(0,0,0,.5));animation:tour-bob 1.4s ease-in-out infinite}.tour-finger svg{display:block}@keyframes tour-bob{0%,to{transform:translateY(0)}50%{transform:translateY(7px)}}.tour-tip{position:fixed;pointer-events:auto;background:#fff;border-radius:14px;box-shadow:0 16px 44px -8px rgba(0,0,0,.4);padding:18px 18px 14px;z-index:1002}.tour-arrow{position:absolute;width:16px;height:16px;background:#fff;transform:rotate(45deg)}.tour-arrow.up{top:-8px}.tour-arrow.down{bottom:-8px}.tour-arrow.left{left:-8px}.tour-arrow.right{right:-8px}.tour-tip-head{display:flex;align-items:center;gap:8px;margin-bottom:7px}.tour-step-badge{flex:0 0 auto;font-size:11px;font-weight:800;color:#fff;background:var(--accent);border-radius:999px;padding:2px 9px}.tour-tip-head strong{font-size:14.5px;font-weight:800;color:#131722}.tour-tip-body{margin:0 0 14px;font-size:12.5px;color:#5b6472;line-height:1.6}.tour-tip-foot{display:flex;align-items:center;justify-content:space-between}.tour-dots{display:flex;gap:5px}.tour-dots span{width:7px;height:7px;border-radius:50%;background:#d5dbe8}.tour-dots span.on{background:var(--accent)}.tour-btns{display:flex;gap:8px;align-items:center}.tour-skip{font-size:12px;font-weight:600;color:#8a93a2;background:transparent;padding:6px 4px}.tour-next,.tour-skip{border:none;cursor:pointer}.tour-next{font-size:12.5px;font-weight:700;color:#fff;background:var(--accent);border-radius:9px;padding:8px 16px}.tour-next:hover{background:#1d4fd6}.auth-chip{width:-moz-fit-content;width:fit-content;margin:0 0 10px auto;display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--border);border-radius:999px;padding:5px 6px 5px 14px;box-shadow:0 1px 4px rgba(0,0,0,.08)}.auth-who{font-size:13px;font-weight:700;color:#1f2430;display:inline-flex;align-items:center;gap:6px}.auth-who.guest{color:#8a93a2}.pos-ico{display:block;flex:none}.auth-role{font-size:10.5px;font-weight:700;color:var(--accent);background:#eaf0ff;border-radius:999px;padding:1px 7px}.auth-btn{padding:6px 14px;border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:999px;cursor:pointer;font-size:12.5px;font-weight:700}.auth-btn:hover{background:#1d4fd6}.auth-btn.ghost{background:#fff;color:#5b6472;border-color:var(--border)}.auth-btn.ghost:hover{background:#f5f7fa}.auth-btn.block{display:block;width:100%;padding:11px;margin-top:8px;border-radius:8px;font-size:14px}.auth-btn:disabled{opacity:.6;cursor:default}.auth-overlay{position:fixed;inset:0;z-index:100;background:rgba(20,26,38,.45);display:flex;align-items:center;justify-content:center;padding:20px}.auth-modal{background:#fff;border-radius:14px;padding:28px 26px;width:340px;max-width:100%;box-shadow:0 12px 40px rgba(0,0,0,.25)}.auth-title{margin:0 0 4px;font-size:20px;font-weight:800;color:#1f2430}.auth-sub{margin:0 0 18px;font-size:13px;color:#7a828f;line-height:1.5}.auth-input{display:block;width:100%;box-sizing:border-box;padding:11px 13px;margin-bottom:10px;border:1px solid var(--border);border-radius:8px;font-size:14px;outline:none}.auth-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,99,235,.12)}.auth-err{color:#d23b3b;font-size:12.5px;font-weight:600;margin:2px 0 6px}.auth-switch{text-align:center;font-size:12.5px;color:#7a828f;margin:13px 0 0}.auth-link{border:none;background:transparent;color:var(--accent);font-weight:700;cursor:pointer;font-size:12.5px;padding:0}.auth-link:hover{text-decoration:underline}.login-screen{min-height:72vh;display:flex;align-items:center;justify-content:center;padding:40px 20px}.cell-edit{width:100%;min-width:170px;min-height:50px;box-sizing:border-box;padding:5px 7px;border:1px solid var(--accent);border-radius:6px;font:inherit;font-size:12.5px;line-height:1.5;resize:vertical;outline:none;box-shadow:0 0 0 3px rgba(37,99,235,.12)}.cell-dbledit,.cell-empty{cursor:pointer}.cell-empty{color:#c2c8d0;font-style:italic}.table-shell td,.table-shell th{-webkit-user-select:none;-moz-user-select:none;user-select:none}.table-shell textarea.cell-edit{-webkit-user-select:text;-moz-user-select:text;user-select:text;cursor:text}.wrap{caret-color:transparent}.wrap input[type=password],.wrap input[type=search],.wrap input[type=text],.wrap textarea{caret-color:auto}.col-filter-btn{display:inline-flex;align-items:center;justify-content:center;gap:2px;min-width:22px;height:22px;margin-left:6px;padding:0 5px;vertical-align:middle;border:1px solid var(--border);background:#fff;color:#aeb6c2;border-radius:6px;cursor:pointer}.col-filter-btn:hover{background:#eef4ff;color:var(--accent);border-color:var(--accent)}.col-filter-btn.on{color:#fff;background:var(--accent);border-color:var(--accent);box-shadow:0 1px 4px rgba(37,99,235,.35)}.col-filter-count{font-size:10px;font-weight:800;line-height:1}.col-filter-menu{position:fixed;z-index:80;background:#fff;border:1px solid var(--border);border-radius:9px;box-shadow:0 10px 30px rgba(16,24,40,.18);min-width:190px;max-width:300px;overflow:hidden}.col-filter-menu .filter-menu-head{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border-bottom:1px solid #eef1f5;font-weight:700;font-size:12.5px}.col-filter-menu .filter-menu-body{max-height:320px;overflow:auto;padding:6px}.col-filter-menu .filter-opt{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;font-size:12.5px;cursor:pointer;white-space:nowrap}.col-filter-menu .filter-opt:hover{background:#f2f6ff}.col-filter-menu .filter-opt input{width:15px;height:15px;accent-color:var(--accent);cursor:pointer}.col-filter-menu .filter-empty{padding:10px;color:#98a0ad;font-size:12px}.clearall-btn{background:#fff;border:1px solid var(--border);color:#5b6472;border-radius:999px;padding:6px 13px;font-size:12.5px;font-weight:700;cursor:pointer}.clearall-btn:hover{background:#fff0f0;border-color:#e08a8a;color:#d23b3b}.owner-badges{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.owner-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 12px 4px 8px;border:1px solid var(--border);background:#fff;color:#5b6472;border-radius:999px;cursor:pointer;font-size:12.5px;font-weight:700;line-height:1.4}.owner-badge:hover{border-color:var(--accent);color:var(--accent);background:#eef4ff}.owner-badge.on{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 1px 4px rgba(37,99,235,.3)}.owner-badge .pos-ico{width:16px;height:16px}.refresh-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--border);background:#fff;color:#1f2430;border-radius:999px;cursor:pointer;font-size:12.5px;font-weight:700}.refresh-btn:hover{background:#eef4ff;border-color:var(--accent);color:var(--accent)}.refresh-btn:disabled{opacity:.65;cursor:default}.refresh-ico{display:inline-block;font-size:13px;line-height:1}.refresh-ico.spin{animation:wr-spin .8s linear infinite}.refresh-time{font-size:11px;font-weight:600;color:#98a0ad}@keyframes wr-spin{to{transform:rotate(1turn)}}.dept-switch{padding:6px 12px;border:1px solid var(--border);background:#fff;color:#1f2430;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;outline:none}.dept-switch:hover{border-color:var(--accent)}.manage-dd{position:relative}.manage-btn{display:inline-flex;align-items:center;gap:6px}.manage-btn .caret{font-size:10px;opacity:.55}.manage-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:80;min-width:210px;padding:6px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 34px rgba(16,24,40,.18)}.mm-item{display:flex;align-items:center;gap:8px;width:100%;padding:9px 11px;border:none;background:transparent;border-radius:8px;font-size:13px;font-weight:600;color:#1f2430;text-align:left;cursor:pointer}.mm-item:hover{background:#f2f6ff;color:var(--accent)}.mm-sep{height:1px;margin:6px 4px;background:#eef1f5}.mm-label{padding:5px 11px 2px;font-size:10.5px;font-weight:800;letter-spacing:.04em;color:#aab2c0}.dept-sec{margin:16px 0 6px;font-size:13px;font-weight:800;color:#3a4252}.pending-badge{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;margin-left:6px;padding:0 5px;font-size:11px;font-weight:800;color:#fff;background:#e0483d;border-radius:999px}.signup-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}.signup-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid #e6ebf4;border-radius:12px;background:#fafbfe}.signup-info{flex:1 1 auto;min-width:0}.signup-name{font-size:14px;font-weight:700;color:#1f2430}.signup-dept{font-size:12.5px;color:#4a5768;margin-top:3px;font-weight:600}.signup-note{font-size:12px;color:#8a93a2;margin-top:3px}.signup-actions{flex:0 0 auto;display:flex;gap:6px}.signup-actions button{padding:7px 16px;border-radius:9px;font-size:12.5px;font-weight:700}.signup-empty{padding:28px 0;text-align:center;color:#9aa3b2;font-size:13px}.member-add{display:flex;gap:8px;margin:12px 0 14px}.member-add input{flex:1 1;min-width:0;padding:9px 12px;border:1px solid #e2e6ef;border-radius:9px;font-size:13.5px;font-family:inherit;outline:none}.member-add input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,99,235,.13)}.member-add select{padding:9px 10px;border:1px solid #e2e6ef;border-radius:9px;font-size:13px;font-family:inherit;background:#fff;cursor:pointer}.member-add button{flex:0 0 auto;border-radius:9px;font-weight:700}.member-list{display:flex;flex-direction:column;gap:6px}.member-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;grid-gap:12px;gap:12px;padding:9px 12px;border:1px solid #eef1f7;border-radius:10px}.member-row.off{opacity:.55}.member-row.hidden-member{background:#fbfbfd;border-style:dashed}.member-pos{font-size:12px;color:#7a8494;display:inline-flex;align-items:center;gap:6px}.member-flag{font-size:10.5px;font-weight:700;color:#b5761a;background:#fdf3e2;border:1px solid #f2dcae;border-radius:999px;padding:1px 7px}.member-flag.off{color:#8a93a2;background:#f0f2f6;border-color:#e2e6ef}.member-actions{display:flex;gap:6px}.member-actions button{padding:5px 11px;font-size:12px}.member-actions .reactivate{color:var(--accent);border-color:#cdd9f0}.attach-cell{white-space:nowrap}.attach-ico{border:none;background:transparent;cursor:pointer;font-size:15px;padding:1px 3px;border-radius:5px;line-height:1}.attach-ico:hover{background:#eef4ff}.preview-box{background:#fff;border-radius:14px;width:84vw;max-width:1100px;height:88vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 60px -12px rgba(15,23,42,.4)}.preview-head{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid #eef1f6}.preview-name{font-size:13.5px;font-weight:700;color:#1f2430;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto}.preview-dl{font-size:12.5px;font-weight:700;color:var(--accent);text-decoration:none}.preview-body{flex:1 1 auto;background:#f4f6fa;display:flex;align-items:center;justify-content:center;overflow:auto}.preview-body img{max-width:100%;max-height:100%;object-fit:contain}.preview-body iframe{width:100%;height:100%;border:0;background:#fff}.att-drop{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px;border:1px dashed #cdd5e4;border-radius:10px;background:#fafbfe}.att-add{display:inline-flex;align-items:center;padding:7px 12px;border:1px solid var(--accent);color:var(--accent);background:#eef4ff;border-radius:8px;font-size:12.5px;font-weight:700;cursor:pointer}.att-none{font-size:12px;color:#9aa3b2}.att-chip{display:inline-flex;align-items:center;gap:6px;max-width:260px;padding:5px 8px;background:#fff;border:1px solid #e2e6ef;border-radius:8px;font-size:12px;color:#1f2430}.att-chip.pending{border-color:#cdd9f0;background:#f2f6ff}.att-open{border:none;background:transparent;cursor:pointer;font-size:12px;color:#1f2430;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0}.att-open:hover{color:var(--accent);text-decoration:underline}.att-new{font-size:10px;font-weight:800;color:#2e7d32}.att-rm{border:none;background:transparent;color:#b3bccb;cursor:pointer;font-size:12px;padding:0 2px}.att-rm:hover{color:#e0483d}.dur-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin:0 5px 0 2px;vertical-align:middle;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}.dur-dot.dur-g{background:#22c55e}.dur-dot.dur-y{background:#f5c211}.dur-dot.dur-r{background:#e0483d}.succ-rate{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border-radius:999px;font-size:12.5px;font-weight:600;line-height:1;white-space:nowrap;border:1px solid transparent}.succ-rate b{font-size:13.5px;font-weight:800}.succ-rate .succ-dot{width:8px;height:8px;border-radius:50%;background:currentColor;box-shadow:inset 0 0 0 3px hsla(0,0%,100%,.5)}.succ-rate.sr-hi{color:#15803d;background:#e7f7ec;border-color:#b7e6c4}.succ-rate.sr-mid{color:#a06400;background:#fdf4dd;border-color:#f0dc9a}.succ-rate.sr-lo{color:#c0392b;background:#fdecea;border-color:#f4c6bf}.dt-row{display:flex;gap:6px}.dt-row input[type=date]{flex:1 1 auto;min-width:0}.dt-row .time-in{flex:0 0 96px}.date-time{display:block;font-size:11px;color:#8a93a6;line-height:1.1;margin-top:1px}.dept-list{display:flex;flex-direction:column;gap:6px}.dept-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid #e4e9f2;border-radius:8px;background:#fafbfe}.dept-row strong{font-size:13.5px}.dept-row.off{opacity:.5}.dept-count{font-size:11.5px;color:#7a8494}.dept-row .meta-actions{margin-left:auto;display:flex;align-items:center;gap:8px}.user-list{display:flex;flex-direction:column;gap:5px;max-height:300px;overflow-y:auto}.user-row{display:grid;grid-template-columns:1fr 170px 110px;align-items:center;grid-gap:10px;gap:10px;padding:6px 10px;border:1px solid #eef1f7;border-radius:8px}.user-row.off{opacity:.5}.user-name{font-size:13px;font-weight:600}.user-login{font-size:11px;color:#9aa3b2;font-weight:400}.user-row select{padding:5px 8px;font-size:12.5px;border:1px solid #d5dcea;border-radius:6px;background:#fff}