@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap');
:root{--blue:#2563eb;--blue2:#eff6ff;--ink:#172033;--muted:#718096;--line:#e8edf3;--bg:#f6f8fb;--white:#fff;--green:#16a36a;--red:#ef4444;--orange:#f59e0b;--purple:#8b5cf6;--shadow:0 8px 28px rgba(30,50,80,.07)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:'Noto Sans KR',sans-serif;font-size:14px}button,input,select,textarea{font:inherit}.sidebar{position:fixed;inset:0 auto 0 0;width:236px;background:#fff;border-right:1px solid var(--line);padding:26px 16px;z-index:20;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;padding:0 10px 28px}.brandmark{width:38px;height:38px;border-radius:12px;background:linear-gradient(145deg,#2563eb,#60a5fa);display:grid;place-items:center;color:white;font-size:20px;font-weight:800;box-shadow:0 8px 16px #2563eb33}.brand b{display:block;font-size:16px;letter-spacing:-.3px}.brand small{display:block;color:#94a3b8;margin-top:2px}nav{display:grid;gap:5px}.nav-item{width:100%;border:0;background:none;border-radius:10px;padding:12px 13px;display:flex;align-items:center;gap:11px;color:#64748b;text-align:left;font-weight:600;cursor:pointer}.nav-item:hover{background:#f8fafc;color:#334155}.nav-item.active{background:#eff6ff;color:#2563eb}.nav-icon{font-size:17px;width:20px;text-align:center}.side-foot{margin-top:auto;background:#f8fafc;border-radius:12px;padding:13px;color:#64748b;font-size:12px}.side-foot small{display:block;margin:5px 0 0 15px;color:#94a3b8}.live-dot{display:inline-block;width:7px;height:7px;background:#22c55e;border-radius:50%;margin-right:7px}main{margin-left:236px;padding:34px 42px 60px;max-width:1600px}header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:28px}.eyebrow{font-size:12px;color:#7b8ba3;font-weight:700;letter-spacing:.06em;margin:0 0 5px;text-transform:uppercase}h1{font-size:29px;letter-spacing:-1.2px;margin:0}h2{margin:0;font-size:21px;letter-spacing:-.6px}.header-actions{display:flex;align-items:flex-end;gap:10px}.member-select span{display:block;font-size:11px;color:#94a3b8;margin-bottom:5px}.member-select select,select,input,textarea{border:1px solid #dfe5ed;background:#fff;border-radius:9px;padding:10px 12px;color:#334155;outline:none}.member-select select:focus,input:focus,select:focus,textarea:focus{border-color:#60a5fa;box-shadow:0 0 0 3px #dbeafe}.btn{border:1px solid #dfe5ed;background:white;color:#475569;border-radius:9px;padding:10px 15px;font-weight:700;cursor:pointer}.btn:hover{background:#f8fafc}.btn.primary{border-color:var(--blue);background:var(--blue);color:white}.btn.primary:hover{background:#1d4ed8}.btn.small{padding:7px 10px;font-size:12px}.grid{display:grid;gap:18px}.stats{grid-template-columns:repeat(4,1fr);margin-bottom:18px}.card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:20px;box-shadow:var(--shadow)}.stat{position:relative;overflow:hidden}.stat .label{color:#7b8ba3;font-weight:600}.stat strong{font-size:28px;display:block;margin-top:8px;letter-spacing:-1px}.stat small{color:#94a3b8}.stat .bubble{position:absolute;right:17px;top:18px;width:41px;height:41px;border-radius:13px;display:grid;place-items:center;font-size:18px}.b-blue{background:#eff6ff;color:#2563eb}.b-green{background:#ecfdf5;color:#16a36a}.b-orange{background:#fff7ed;color:#f59e0b}.b-purple{background:#f5f3ff;color:#8b5cf6}.dashboard-grid{grid-template-columns:minmax(0,1.65fr) minmax(280px,.85fr)}.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.card-head h2{font-size:17px}.subtle{color:#94a3b8;font-size:12px}.task-list{display:grid;gap:9px}.task-row{display:grid;grid-template-columns:auto minmax(180px,1fr) auto auto;align-items:center;gap:12px;border:1px solid var(--line);border-radius:11px;padding:12px;background:white}.task-row:hover{border-color:#cbd5e1}.task-row.done .task-title{text-decoration:line-through;color:#94a3b8}.check{width:21px;height:21px;accent-color:#2563eb;cursor:pointer}.task-title{font-weight:600;word-break:keep-all}.task-meta{margin-top:4px;color:#94a3b8;font-size:12px}.pill{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap}.p-긴급{background:#fef2f2;color:#dc2626}.p-높음{background:#fff7ed;color:#ea580c}.p-보통{background:#eff6ff;color:#2563eb}.p-낮음{background:#f1f5f9;color:#64748b}.status-완료{background:#ecfdf5;color:#059669}.status-진행중{background:#eff6ff;color:#2563eb}.status-미완료{background:#fef2f2;color:#dc2626}.progress-wrap{display:flex;align-items:center;gap:12px}.progress{height:8px;background:#eef2f7;border-radius:99px;overflow:hidden;flex:1}.progress span{height:100%;display:block;background:linear-gradient(90deg,#2563eb,#60a5fa);border-radius:99px}.member-progress{padding:11px 0;border-bottom:1px solid #f1f5f9}.member-progress:last-child{border:0}.member-line{display:flex;justify-content:space-between;margin-bottom:7px}.member-line b{font-size:13px}.member-line span{font-size:12px;color:#64748b}.routine-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.routine{display:flex;align-items:center;gap:10px;padding:11px;border:1px solid var(--line);border-radius:10px;cursor:pointer}.routine.checked{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}.toolbar{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}.toolbar input{min-width:260px;flex:1}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;min-width:820px}.table th{text-align:left;color:#8492a6;font-size:11px;padding:11px 10px;border-bottom:1px solid var(--line);white-space:nowrap}.table td{padding:13px 10px;border-bottom:1px solid #f0f3f7;vertical-align:middle}.table tr:last-child td{border-bottom:0}.member-chip{display:flex;align-items:center;gap:8px;font-weight:600}.mini-avatar,.avatar{width:30px;height:30px;border-radius:9px;border:0;background:#eff6ff;color:#2563eb;display:grid;place-items:center;font-weight:800}.empty{text-align:center;color:#94a3b8;padding:44px}.section-title{display:flex;justify-content:space-between;align-items:center;margin:6px 0 13px}.section-title h2{font-size:18px}.notice{padding:12px 14px;border-radius:10px;background:#fff7ed;color:#9a5412;margin-bottom:15px;font-size:13px}.chart{display:flex;align-items:flex-end;height:220px;gap:15px;padding-top:20px}.bar-group{flex:1;text-align:center}.bar-stack{height:170px;display:flex;align-items:flex-end;justify-content:center;gap:4px}.bar{width:19px;border-radius:6px 6px 2px 2px;min-height:3px}.bar.done{background:#2563eb}.bar.open{background:#dbeafe}.bar-group label{font-size:11px;color:#64748b;display:block;margin-top:8px}.legend{display:flex;gap:15px;font-size:12px;color:#64748b}.legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px}.modal{position:fixed;inset:0;background:#0f172a66;display:grid;place-items:center;z-index:50;padding:20px}.modal.hidden{display:none}.modal-card{width:min(620px,100%);background:#fff;border-radius:18px;padding:25px;box-shadow:0 24px 60px #0f172a33}.modal-title{display:flex;justify-content:space-between;margin-bottom:20px}.icon-btn{border:0;background:#f1f5f9;border-radius:9px;width:35px;height:35px;font-size:24px;color:#64748b;cursor:pointer}form{display:grid;grid-template-columns:1fr 1fr;gap:15px}form label{display:grid;gap:7px;font-weight:600;font-size:12px;color:#64748b}.wide{grid-column:1/-1}textarea{resize:vertical}.form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:5px}#toast{position:fixed;right:25px;bottom:25px;background:#172033;color:#fff;padding:12px 16px;border-radius:10px;opacity:0;transform:translateY(10px);transition:.2s;z-index:100}#toast.show{opacity:1;transform:none}.mobile-head{display:none}.danger-btn{border:0;background:none;color:#cbd5e1;cursor:pointer;font-size:18px}.danger-btn:hover{color:#ef4444}
@media(max-width:1000px){.stats{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.sidebar{width:210px}main{margin-left:210px;padding:28px 24px}}
@media(max-width:720px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none;box-shadow:10px 0 30px #0f172a22}.mobile-head{height:58px;background:#fff;border-bottom:1px solid var(--line);padding:0 16px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:15}.mobile-head button{border:0;background:none;font-size:20px}main{margin:0;padding:20px 15px 40px}header{align-items:flex-start;gap:16px}h1{font-size:24px}.header-actions .member-select{display:none}.header-actions .btn{font-size:0;padding:9px 11px}.header-actions .btn:first-letter{font-size:18px}.stats{gap:10px}.card{padding:15px;border-radius:13px}.stat strong{font-size:23px}.stat .bubble{display:none}.task-row{grid-template-columns:auto 1fr auto}.task-row>.pill:nth-last-child(2){display:none}.routine-grid{grid-template-columns:1fr}.toolbar select{flex:1}.table-wrap{margin:0 -15px;padding:0 15px}form{grid-template-columns:1fr}.wide{grid-column:auto}.chart{gap:6px}.bar{width:13px}}

/* v1.1 premium visual system */
:root{--navy:#0c1428;--navy2:#131f3d;--electric:#5b7cfa;--violet:#8b6cff;--aqua:#5eead4;--surface:rgba(255,255,255,.92)}
body{background:radial-gradient(circle at 85% 0,#e9edff 0,transparent 28%),var(--bg);transition:background .25s,color .25s}.sidebar{background:linear-gradient(180deg,#0c1428 0%,#111d38 100%);border:0;color:#fff;box-shadow:8px 0 30px rgba(12,20,40,.08)}.brand b{color:#fff;letter-spacing:.04em}.brand small{color:#7183a8}.brandmark{background:linear-gradient(145deg,#7894ff,#8b6cff);box-shadow:0 10px 25px #5b7cfa55}.nav-item{color:#8290ae}.nav-item:hover{background:#ffffff0b;color:#dce5ff}.nav-item.active{background:linear-gradient(90deg,#5b7cfa30,#8b6cff18);color:#fff;box-shadow:inset 3px 0 #7894ff}.side-foot{background:#ffffff0a;color:#aab6d0;border:1px solid #ffffff0a}.side-foot small{color:#596a8c}.theme-btn{display:block;width:100%;border:0;background:none;color:#8d9bb8;text-align:left;padding:10px 0 3px;cursor:pointer;font-size:11px}.theme-btn:hover{color:#fff}main{max-width:1700px}.card{border-color:rgba(220,228,240,.8);box-shadow:0 12px 35px rgba(35,50,90,.055);backdrop-filter:blur(10px)}.hero{position:relative;min-height:260px;border-radius:24px;padding:36px 42px;margin-bottom:20px;display:flex;align-items:center;justify-content:space-between;overflow:hidden;color:#fff;background:linear-gradient(120deg,#172342 0%,#273c78 53%,#6554c7 100%);box-shadow:0 22px 50px rgba(42,58,115,.22)}.hero:before{content:"";position:absolute;width:370px;height:370px;border-radius:50%;right:-65px;top:-170px;background:radial-gradient(circle,#ffffff22,transparent 66%)}.hero:after{content:"";position:absolute;width:190px;height:190px;border-radius:50%;right:260px;bottom:-140px;background:#5eead422;filter:blur(8px)}.hero-copy{position:relative;z-index:2}.hero-label,.focus-title span,.command-strip span,.archive-head span,.insight-hero span,.mini-hero>div>span{display:block;font-size:10px;font-weight:800;letter-spacing:.15em;color:#8fa8ff;margin-bottom:10px}.hero h2{font-size:30px;line-height:1.35;letter-spacing:-1.3px;margin:0 0 10px}.hero p{color:#c1cbed;margin:0}.hero-actions{display:flex;gap:15px;align-items:center;margin-top:25px}.hero-btn{border:0;border-radius:10px;padding:11px 17px;background:#fff;color:#263762;font-weight:800;cursor:pointer}.hero-link{border:0;background:none;color:#d9e1ff;font-weight:700;cursor:pointer}.completion-ring{--p:0deg;width:148px;height:148px;border-radius:50%;display:grid;place-items:center;position:relative;z-index:2;background:conic-gradient(#72f5d4 var(--p),#ffffff22 0);box-shadow:0 0 40px #5eead42a}.completion-ring:before{content:"";position:absolute;inset:11px;border-radius:50%;background:#263865cc;backdrop-filter:blur(10px)}.completion-ring div{position:relative;text-align:center}.completion-ring strong{display:block;font-size:29px}.completion-ring span{font-size:11px;color:#cbd6f5}.focus-title{display:flex;align-items:end;justify-content:space-between;margin:30px 2px 13px}.focus-title h2{font-size:19px}.focus-title span{color:#5b7cfa;margin-bottom:3px}.focus-title p{margin:0;color:#94a3b8;font-size:12px}.task-row{grid-template-columns:auto minmax(180px,1fr) auto auto auto;border-radius:13px;padding:13px 14px;transition:.16s;position:relative}.task-row:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(34,50,80,.07)}.task-row.carried{border-left:3px solid #f59e0b}.task-tags{display:flex;gap:6px;align-items:center}.due{display:inline-flex;padding:5px 8px;border-radius:999px;background:#f1f5f9;color:#64748b;font-size:10px;font-weight:800;white-space:nowrap}.due.late{background:#fff1f2;color:#e11d48}.carry-badge{display:inline-flex;margin-left:6px;padding:2px 6px;border-radius:5px;background:#fff7ed;color:#ea580c;font-size:9px;font-weight:800;vertical-align:2px}.row-actions{display:flex}.edit-btn{border:0;background:none;color:#94a3b8;cursor:pointer;font-size:16px;padding:5px}.edit-btn:hover{color:#5b7cfa}.lower-grid{margin-top:18px}.member-line b{display:flex;align-items:center;gap:8px}.member-line .mini-avatar{width:25px;height:25px;font-size:11px}.memo-card textarea{width:100%;height:192px;border:0;background:linear-gradient(145deg,#f8faff,#f5f3ff);padding:16px;line-height:1.8}.memo-foot{display:flex;justify-content:space-between;align-items:center;margin-top:10px;font-size:10px;color:#94a3b8}.empty span{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#ecfdf5;color:#10b981;margin:0 auto 10px}.empty b,.empty small{display:block}.empty small{margin-top:4px}.mini-hero,.command-strip,.archive-head,.insight-hero{border-radius:20px;padding:28px 32px;margin-bottom:18px;color:#fff;background:linear-gradient(115deg,#15213d,#304780);display:flex;align-items:center;justify-content:space-between;overflow:hidden;position:relative;box-shadow:0 16px 36px rgba(30,50,100,.16)}.mini-hero:after,.command-strip:after,.archive-head:after,.insight-hero:after{content:"";position:absolute;width:200px;height:200px;border-radius:50%;right:-60px;top:-105px;background:#ffffff12}.mini-hero h2,.command-strip h2,.archive-head h2,.insight-hero h2{font-size:21px;margin:0 0 7px}.mini-hero p,.archive-head p,.insight-hero p{margin:0;color:#b8c5e4}.mini-score,.pulse-number{text-align:center;position:relative;z-index:1}.mini-score strong,.pulse-number strong{font-size:33px;display:block}.mini-score span,.pulse-number span{font-size:9px;letter-spacing:.1em;color:#b9c7e7}.carry-alert{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:12px;background:#fff8eb;border:1px solid #fde5b4;color:#9a5b0a;margin-bottom:18px}.carry-alert span{font-size:12px;color:#b07931}.routine-card{align-self:start}.routine-count{padding:5px 9px;border-radius:99px;background:#ecfdf5;color:#059669;font-size:11px;font-weight:800}.routine{position:relative}.routine input{position:absolute;opacity:0}.routine-check{width:22px;height:22px;border-radius:7px;border:1px solid #dbe2ea;color:transparent;display:grid;place-items:center;font-size:11px}.routine.checked .routine-check{background:#16a36a;border-color:#16a36a;color:#fff}.command-strip{background:linear-gradient(115deg,#4e46b4,#7758d7)}.command-strip span,.archive-head span,.insight-hero span{color:#c9c3ff}.btn.light{background:#fff;color:#5145b1;border:0;position:relative;z-index:1}.date-small{display:block;color:#94a3b8;margin-top:4px}.click-row{cursor:pointer}.archive-head{background:linear-gradient(115deg,#0d655d,#168f7c)}.archive-head span{color:#8ef2df}.archive-head>strong{font-size:45px;position:relative;z-index:1}.archive-head>strong small{display:block;font-size:10px;text-align:center;color:#a9e9dd}.insight-hero{background:linear-gradient(115deg,#121c38,#273e75 60%,#4b4ca5)}.pulse-number strong{font-size:52px}.bar-value{font-size:10px;color:#94a3b8;margin-bottom:5px}.ranking .rank-row{display:grid;grid-template-columns:28px 32px 1fr auto;gap:9px;align-items:center;padding:11px 0;border-bottom:1px solid #f1f5f9}.ranking .rank-row:last-child{border:0}.rank-num{font-size:12px;color:#94a3b8;font-weight:800}.rank-row div b,.rank-row div small{display:block}.rank-row div small{color:#94a3b8;font-size:10px}.rank-row>strong{color:#5b7cfa}.mobile-nav{display:none}
/* dark mode */
body.dark{--bg:#0b1120;--ink:#e7ecf6;--muted:#93a1ba;--line:#263149;background:radial-gradient(circle at 85% 0,#1e2852 0,transparent 30%),#0b1120;color:var(--ink)}body.dark .card,body.dark .modal-card{background:#121b2e;border-color:#263149}body.dark input,body.dark select,body.dark textarea{background:#172238;border-color:#2b3853;color:#e7ecf6}body.dark .task-row{background:#121b2e;border-color:#28344b}body.dark .task-meta,body.dark .subtle,body.dark .label{color:#8491aa}body.dark .memo-card textarea{background:linear-gradient(145deg,#172238,#201d3c)}body.dark .table td{border-color:#202b40}body.dark .table th{border-color:#2a354b}body.dark .routine{border-color:#2a354b}body.dark .routine.checked{background:#123428}body.dark .progress{background:#263149}body.dark .mini-avatar{background:#233154;color:#a9bbff}body.dark .toolbar input{background:#121b2e}
@media(max-width:720px){body{padding-bottom:72px}.mobile-head{background:#0c1428;color:#fff;border:0}.mobile-head .avatar{background:#ffffff15;color:#fff}.sidebar{width:250px}.mobile-nav{display:flex;position:fixed;z-index:40;bottom:0;left:0;right:0;height:66px;background:rgba(255,255,255,.94);backdrop-filter:blur(18px);border-top:1px solid #e6ebf2;justify-content:space-around;padding:5px 4px calc(5px + env(safe-area-inset-bottom))}.mobile-nav .nav-item{display:flex;flex-direction:column;justify-content:center;gap:1px;width:20%;padding:5px 2px;font-size:9px;color:#8a96a9}.mobile-nav .nav-icon{font-size:17px;height:22px}.mobile-nav .nav-item.active{background:none;color:#4f6ff1;box-shadow:none}.hero{min-height:270px;padding:28px 24px;align-items:flex-start}.hero h2{font-size:24px}.hero p{font-size:12px;max-width:220px}.completion-ring{position:absolute;width:90px;height:90px;right:18px;bottom:22px}.completion-ring strong{font-size:20px}.completion-ring span{font-size:9px}.completion-ring:before{inset:8px}.stats{grid-template-columns:repeat(2,1fr)}.stat{min-height:113px}.focus-title{align-items:flex-start}.focus-title p{display:none}.task-row{grid-template-columns:auto 1fr auto;padding:13px 11px}.task-row .status-완료,.task-row .status-진행중,.task-row .status-미완료{display:none}.task-tags{grid-column:2;justify-content:flex-start}.row-actions{position:absolute;right:7px;top:8px}.task-title{padding-right:25px}.lower-grid{margin-top:14px}.mini-hero,.command-strip,.archive-head,.insight-hero{padding:22px 20px;min-height:145px}.mini-hero h2,.command-strip h2,.archive-head h2,.insight-hero h2{font-size:18px;max-width:240px}.mini-score,.pulse-number,.archive-head>strong{position:absolute;right:18px;bottom:15px}.carry-alert{display:block}.carry-alert span{display:block;margin-top:4px}.toolbar input{min-width:100%}.routine-grid{grid-template-columns:1fr}.modal{align-items:end;padding:0}.modal-card{width:100%;max-height:92vh;overflow:auto;border-radius:22px 22px 0 0;padding:22px 18px}.mobile-nav~#toast{bottom:82px}body.dark .mobile-nav{background:rgba(15,23,42,.95);border-color:#263149}body.dark .mobile-nav .nav-item{color:#8290aa}body.dark .mobile-nav .nav-item.active{color:#8da4ff}}
/* final mobile polish */
main,#content{min-width:0;overflow-x:hidden}.hero-link{padding:10px 8px;min-height:42px}.subtle,.stat small{color:#7f8da3}.mobile-nav .nav-icon{line-height:22px;display:block}.mobile-nav .nav-item{align-items:center;text-align:center}
@media(max-width:720px){.hero{width:100%;margin-left:0;margin-right:0}.hero-copy{max-width:76%}.hero-link{padding:11px 8px}.focus-title{margin-top:24px}.task-meta{color:#7d8ba0}}

/* v2 — Personal Command OS */
:root{--os-blue:#7b96ff;--os-violet:#9a78ff;--os-mint:#66f2d1;--os-dark:#09101f}
.ambient{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:-1}.ambient i{position:absolute;border-radius:50%;filter:blur(80px);opacity:.18;animation:ambientFloat 14s ease-in-out infinite}.ambient i:nth-child(1){width:440px;height:440px;background:#728cff;right:-100px;top:-150px}.ambient i:nth-child(2){width:320px;height:320px;background:#a974ff;left:25%;bottom:-180px;animation-delay:-5s}.ambient i:nth-child(3){width:260px;height:260px;background:#5eead4;left:42%;top:32%;animation-delay:-9s}@keyframes ambientFloat{50%{transform:translate3d(35px,-30px,0) scale(1.12)}}
#cursorGlow{position:fixed;width:440px;height:440px;border-radius:50%;background:radial-gradient(circle,#7792ff12,transparent 66%);pointer-events:none;z-index:-1;transition:transform .08s linear}.sidebar{overflow:hidden}.sidebar:after{content:"";position:absolute;inset:auto -100px -120px auto;width:260px;height:260px;background:#765cff22;border-radius:50%;filter:blur(20px)}.brandmark{position:relative;animation:brandPulse 4s ease-in-out infinite}.brandmark:after{content:"";position:absolute;inset:-5px;border:1px solid #9badff66;border-radius:16px;animation:ringBreath 2.5s ease-in-out infinite}@keyframes brandPulse{50%{box-shadow:0 12px 35px #6f77ff88;transform:translateY(-1px)}}@keyframes ringBreath{50%{transform:scale(1.13);opacity:.2}}
main>header{animation:headerDrop .6s cubic-bezier(.22,1,.36,1)}@keyframes headerDrop{from{opacity:0;transform:translateY(-16px)}}.reveal{opacity:0;transform:translateY(24px) scale(.99);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1)}.reveal.shown{opacity:1;transform:none}
.os-hero{min-height:360px;border-radius:30px;position:relative;overflow:hidden;color:#fff;padding:48px 54px;display:flex;justify-content:space-between;align-items:center;background:radial-gradient(circle at 78% 45%,#5669bd 0,transparent 24%),linear-gradient(125deg,#081020 0%,#121d3e 47%,#3c397f 100%);box-shadow:0 35px 80px rgba(25,34,83,.28);isolation:isolate}.hero-grid{position:absolute;inset:0;background-image:linear-gradient(#ffffff0b 1px,transparent 1px),linear-gradient(90deg,#ffffff0b 1px,transparent 1px);background-size:42px 42px;mask-image:linear-gradient(to right,#000,transparent 75%);animation:gridMove 10s linear infinite}@keyframes gridMove{to{background-position:42px 42px}}.hero-shine{position:absolute;width:560px;height:560px;border-radius:50%;right:-90px;top:-170px;background:conic-gradient(from 90deg,#82a1ff00,#82a1ff40,#b180ff00,#66f2d130,#82a1ff00);animation:heroSpin 16s linear infinite;filter:blur(2px)}@keyframes heroSpin{to{transform:rotate(360deg)}}.os-copy{position:relative;z-index:2}.status-line{display:flex;align-items:center;gap:9px;font-size:10px;letter-spacing:.12em;color:#aebce6;margin-bottom:25px}.status-line i{width:7px;height:7px;border-radius:50%;background:#64f1c7;box-shadow:0 0 0 5px #64f1c719,0 0 18px #64f1c7;animation:statusPulse 1.6s ease-out infinite}.status-line em{font-style:normal;padding-left:12px;margin-left:5px;border-left:1px solid #ffffff22;color:#7789b9}@keyframes statusPulse{50%{box-shadow:0 0 0 10px transparent,0 0 22px #64f1c7}}.os-copy h2{font-size:43px;line-height:1.2;letter-spacing:-2.3px;margin:0 0 15px}.os-copy h2 span{font-weight:400;color:#b8c5e9}.os-copy p{color:#91a1cb;margin:0}.os-actions{display:flex;gap:10px;align-items:center;margin-top:34px}.magnetic{border:0;border-radius:12px;padding:13px 18px;font-weight:800;cursor:pointer;transition:transform .2s,box-shadow .2s,background .2s}.magnetic:hover{transform:translateY(-3px)}.primary-glow{color:#101b38;background:linear-gradient(135deg,#fff,#dfe7ff);box-shadow:0 9px 28px #7e94ff33}.primary-glow:hover{box-shadow:0 15px 38px #8ba2ff66}.magnetic.ghost{color:#dce4ff;background:#ffffff0d;border:1px solid #ffffff16;backdrop-filter:blur(10px)}.os-actions kbd{font-size:9px;color:#65759f;margin-left:5px;border:1px solid #ffffff18;border-radius:6px;padding:5px 7px;background:#0002}.orbital-score{width:245px;height:245px;position:relative;display:grid;place-items:center;margin-right:35px;z-index:2}.score-core{width:135px;height:135px;border-radius:50%;display:grid;place-content:center;text-align:center;background:radial-gradient(circle at 35% 25%,#ffffff24,#101a3ee8 58%);border:1px solid #ffffff1f;box-shadow:inset 0 0 40px #7994ff22,0 0 55px #708eff30;backdrop-filter:blur(14px)}.score-core strong{font-size:34px;letter-spacing:-1.5px}.score-core span{font-size:9px;letter-spacing:.15em;color:#8da0d4;margin-top:3px}.orbit{position:absolute;border-radius:50%;border:1px solid #98aaff40}.orbit:before{content:"";position:absolute;width:8px;height:8px;border-radius:50%;top:-4px;left:50%;background:#87a4ff;box-shadow:0 0 15px #87a4ff}.orbit-a{inset:18px;animation:heroSpin 8s linear infinite}.orbit-b{inset:0;border-style:dashed;border-color:#6df2d12c;animation:heroSpin 16s linear infinite reverse}.orbit-b:before{background:#63e9ca;box-shadow:0 0 15px #63e9ca}.orbit-tag{position:absolute;padding:6px 9px;border:1px solid #ffffff15;border-radius:8px;background:#0d1734bb;color:#aebee9;font-size:8px;letter-spacing:.1em;backdrop-filter:blur(10px)}.tag-a{top:28px;right:-18px}.tag-b{bottom:33px;left:-8px}
.personal-strip{display:flex;align-items:center;gap:26px;margin:-26px 32px 26px;position:relative;z-index:4;padding:17px 20px;border-radius:18px;background:rgba(255,255,255,.88);border:1px solid #fff;box-shadow:0 16px 35px rgba(26,40,78,.12);backdrop-filter:blur(20px)}.personal-id{display:flex;align-items:center;gap:11px;min-width:180px}.portrait{width:45px;height:45px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(145deg,#16244b,#634db0);color:#fff;font-size:17px;font-weight:800;position:relative}.portrait i{position:absolute;width:9px;height:9px;border-radius:50%;background:#55e6b7;border:2px solid #fff;right:-2px;bottom:-2px}.personal-id small,.personal-id b{display:block}.personal-id small{font-size:8px;letter-spacing:.11em;color:#99a4b6}.personal-id b{margin-top:3px}.strip-metrics{display:flex;flex:1;justify-content:center;gap:8%;border-left:1px solid #e8edf4;border-right:1px solid #e8edf4}.strip-metrics div{text-align:center}.strip-metrics strong,.strip-metrics span{display:block}.strip-metrics strong{font-size:18px}.strip-metrics span{font-size:9px;color:#8c98aa}.danger-metric strong{color:#f58b45}.switch-work{border:0;background:none;color:#5369be;font-weight:800;cursor:pointer;white-space:nowrap}.switch-work span{display:inline-block;margin-left:5px;transition:transform .2s}.switch-work:hover span{transform:translateX(4px)}
.focus-heading{display:flex;justify-content:space-between;align-items:end;margin:34px 3px 14px}.focus-heading span,.pro-head span{font-size:9px;letter-spacing:.14em;font-weight:800;color:#7186df}.focus-heading h2,.pro-head h2{font-size:19px;margin:3px 0 0}.live-clock{display:flex;align-items:center;gap:7px;color:#77849a;font:600 12px ui-monospace,monospace}.live-clock i,.pulse-dot{width:6px;height:6px;border-radius:50%;background:#59ddb6;box-shadow:0 0 0 5px #59ddb615;animation:statusPulse 1.8s infinite}.next-action{min-height:160px;display:grid;grid-template-columns:5px 55px 1fr 62px;gap:20px;align-items:center;background:linear-gradient(115deg,#fff,#f9faff);border:1px solid #e5eaf5;border-radius:20px;padding:23px 26px;position:relative;overflow:hidden;box-shadow:0 15px 40px rgba(31,49,90,.07);cursor:pointer;transition:transform .25s,box-shadow .25s}.next-action:hover{transform:translateY(-4px);box-shadow:0 24px 55px rgba(31,49,90,.13)}.next-action:after{content:"";position:absolute;width:150px;height:150px;border-radius:50%;right:-60px;top:-70px;background:#7c8fff0b}.priority-rail{height:80%;border-radius:99px;background:linear-gradient(#755cff,#5eead4);box-shadow:0 0 18px #756cff55}.next-index{font:800 27px ui-monospace,monospace;color:#dfe4ef}.next-label{font-size:9px;color:#6c7fd6;font-weight:800;letter-spacing:.09em}.next-main h3{font-size:20px;margin:6px 0}.next-main p{color:#7d899b;margin:0}.next-bottom{display:flex;gap:17px;margin-top:15px;font-size:10px;color:#98a3b2}.warning-text{color:#e98745!important}.play-focus{width:51px;height:51px;border-radius:16px;border:0;color:#fff;background:linear-gradient(145deg,#536eef,#8c62dc);box-shadow:0 10px 25px #685fe744;cursor:pointer;transition:transform .25s}.next-action:hover .play-focus{transform:scale(1.08) rotate(3deg)}.all-clear{display:block;text-align:center;padding:35px}.all-clear span{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:50%;background:#eafbf5;color:#18a97a}.all-clear h3{margin:10px 0 3px}.all-clear p{margin:0;color:#8995a7}
.pro-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:18px;margin-top:18px}.glass-panel,.timeline-panel{background:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.9);border-radius:20px;padding:22px;box-shadow:0 15px 40px rgba(35,50,85,.065);backdrop-filter:blur(18px)}.pro-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.pro-head button{border:0;background:none;color:#7787c8;font-size:11px;font-weight:700;cursor:pointer}.queue-list{display:grid;gap:8px}.queue-item{display:grid;grid-template-columns:35px 1fr auto;align-items:center;gap:10px;padding:12px;border-radius:12px;transition:.2s;cursor:pointer}.queue-item:hover{background:#f3f6ff;transform:translateX(4px)}.queue-num{font:700 11px ui-monospace;color:#bbc4d4}.queue-item b,.queue-item small{display:block}.queue-item b{font-size:12px}.queue-item small{font-size:9px;color:#929eaf;margin-top:3px}.queue-state{font:700 8px ui-monospace;color:#7c8aa3}.queue-state i{display:inline-block;width:5px;height:5px;border-radius:50%;background:#6f8bfa;margin-right:5px;box-shadow:0 0 8px #6f8bfa}.activity-feed{display:grid}.activity-item{display:grid;grid-template-columns:30px 1fr auto;gap:9px;align-items:center;padding:10px 0;border-bottom:1px solid #edf1f6}.activity-item:last-child{border:0}.activity-icon{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;background:#f0f3fa;color:#7586a5;font-size:10px}.activity-icon.done{background:#e8fbf4;color:#17a879}.activity-item b,.activity-item small{display:block}.activity-item b{font-size:10px}.activity-item small{font-size:8px;color:#a0aaba;margin-top:2px}.activity-item em{font-style:normal;font-size:7px;color:#6982e4;background:#edf1ff;padding:3px 5px;border-radius:4px}.timeline-panel{margin-top:18px;padding-bottom:32px}.flow-percent{color:#6e82d4!important}.timeline-track{height:3px;background:#e7ebf3;position:relative;margin:40px 18px 14px}.timeline-progress{position:absolute;height:100%;left:0;top:0;background:linear-gradient(90deg,#667ef1,#8b6cff,#55ddc0);border-radius:10px;transition:width 1.2s cubic-bezier(.22,1,.36,1)}.time-node{position:absolute;top:50%;transform:translate(-50%,-50%)}.time-node i{display:block;width:11px;height:11px;border:3px solid #fff;border-radius:50%;background:#d5dbe7;box-shadow:0 0 0 1px #d5dbe7}.time-node.passed i{background:#6f86f3;box-shadow:0 0 0 1px #6f86f3,0 0 15px #6f86f366}.time-node span{position:absolute;top:16px;left:50%;transform:translateX(-50%);font:600 9px ui-monospace;color:#98a3b4}
.focus-overlay{position:fixed;inset:0;z-index:200;background:radial-gradient(circle at 50% 45%,#26365f,#080d1a 65%);color:#fff;display:grid;place-items:center;text-align:center;opacity:0;transition:opacity .28s;overflow:hidden}.focus-overlay.hidden{display:none}.focus-overlay.active{opacity:1}.focus-noise{position:absolute;inset:0;opacity:.13;background-image:linear-gradient(#fff1 1px,transparent 1px),linear-gradient(90deg,#fff1 1px,transparent 1px);background-size:50px 50px;animation:gridMove 8s linear infinite}.focus-close{position:absolute;right:28px;top:24px;width:44px;height:44px;border-radius:14px;border:1px solid #ffffff1c;background:#ffffff0a;color:#fff;font-size:25px;cursor:pointer}.focus-overlay.active #focusContent{animation:focusEnter .7s cubic-bezier(.22,1,.36,1)}@keyframes focusEnter{from{opacity:0;transform:scale(.9) translateY(25px)}}#focusContent{position:relative;z-index:2;width:min(620px,90%)}.focus-kicker{font-size:9px;letter-spacing:.25em;color:#8297d6}.focus-orbit{width:210px;height:210px;border-radius:50%;border:1px solid #8aa0ff35;margin:30px auto;display:grid;place-items:center;position:relative;box-shadow:0 0 70px #627aff1f}.focus-orbit>i{position:absolute;inset:14px;border-radius:50%;border:1px dashed #62e5c655;animation:heroSpin 14s linear infinite}.focus-orbit>i:nth-child(2){inset:-12px;border-color:#926dff44;animation-duration:20s;animation-direction:reverse}.focus-orbit div{width:130px;height:130px;border-radius:50%;display:grid;place-content:center;background:#ffffff0a;backdrop-filter:blur(12px)}.focus-orbit strong{font:700 32px ui-monospace}.focus-orbit small{font-size:8px;letter-spacing:.13em;color:#8293bd;margin-top:5px}.focus-overlay h2{font-size:29px;margin:0 0 10px}.focus-overlay p{color:#8f9fc8}.focus-meta{margin:18px}.focus-done{border:0;border-radius:13px;padding:14px 26px;color:#121c38;background:linear-gradient(135deg,#fff,#cfe1ff);font-weight:800;cursor:pointer;box-shadow:0 12px 35px #7990ff33}.confetti{position:fixed;width:8px;height:13px;z-index:300;pointer-events:none;animation:confettiFly 1.05s cubic-bezier(.1,.7,.2,1) forwards}@keyframes confettiFly{to{transform:translate(var(--x),var(--y)) rotate(var(--r));opacity:0}}
body.dark .personal-strip,body.dark .glass-panel,body.dark .timeline-panel,body.dark .next-action{background:rgba(18,27,46,.9);border-color:#293753}body.dark .strip-metrics{border-color:#2a3750}body.dark .queue-item:hover{background:#1b2945}body.dark .activity-item{border-color:#26334a}body.dark .next-index{color:#35435e}body.dark .timeline-track{background:#2a3750}
@media(max-width:1000px){.os-hero{padding:40px 35px}.orbital-score{margin-right:0;transform:scale(.85)}.os-copy h2{font-size:36px}.personal-strip{margin-left:16px;margin-right:16px}.pro-grid{grid-template-columns:1fr}}
@media(max-width:720px){#cursorGlow{display:none}main{padding-top:16px}main>header{margin-bottom:17px}.os-hero{min-height:430px;padding:27px 22px;display:block;border-radius:23px}.os-copy h2{font-size:30px;letter-spacing:-1.6px}.os-copy p{font-size:12px;max-width:240px}.status-line{margin-bottom:21px}.os-actions{margin-top:24px}.os-actions kbd{display:none}.magnetic{padding:12px 14px;font-size:11px}.orbital-score{position:absolute;width:150px;height:150px;right:8px;bottom:12px;transform:none;margin:0}.score-core{width:88px;height:88px}.score-core strong{font-size:22px}.score-core span{font-size:7px}.orbit-a{inset:14px}.tag-a{right:-3px;top:10px}.tag-b{left:-4px;bottom:13px}.personal-strip{margin:-19px 10px 21px;padding:13px;display:grid;grid-template-columns:1fr auto;gap:10px}.personal-id{min-width:0}.portrait{width:39px;height:39px}.strip-metrics{grid-column:1/-1;order:3;border:0;border-top:1px solid #e7ebf2;padding-top:11px;justify-content:space-around}.switch-work{font-size:0}.switch-work span{font-size:20px}.focus-heading{margin-top:27px}.next-action{grid-template-columns:4px 1fr 45px;gap:12px;padding:18px 15px}.next-index{display:none}.next-main h3{font-size:16px;line-height:1.45}.next-main p{font-size:11px}.next-bottom{gap:8px;flex-wrap:wrap}.play-focus{width:42px;height:42px;border-radius:13px}.pro-grid{grid-template-columns:1fr}.glass-panel{padding:18px}.activity-panel{display:none}.timeline-panel{overflow:hidden}.timeline-track{margin-left:10px;margin-right:10px}.focus-overlay h2{font-size:22px}.focus-orbit{width:170px;height:170px}.focus-close{right:16px;top:16px}.hero-grid{background-size:30px 30px}.reveal{transform:translateY(16px)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
/* v2 mobile accessibility finish */
@media(max-width:720px){.mobile-nav .nav-item.active{color:#3457d5;font-weight:800}.orbital-score{right:16px}.tag-a{right:4px}.tag-b{left:3px}}

/* v2.2 today/tomorrow, editable routines, reports */
.inline-member{max-width:125px;padding:7px 8px;font-size:11px}.routine-line{display:grid;grid-template-columns:minmax(180px,1fr) 120px auto auto;align-items:center;gap:6px}.routine-line .routine{min-width:0}.routine-line .routine small{display:block;color:#94a3b8;font-size:9px;margin-top:2px}.routine-tools{display:flex;gap:8px;align-items:center}.report-card{width:min(760px,100%)}.report-card textarea{width:100%;min-height:430px;line-height:1.7}.report-notice{padding:10px 12px;border-radius:9px;background:#eff6ff;color:#4162a7;font-size:12px}.slack-card{margin-top:18px}.btn:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:1100px){.task-row{grid-template-columns:auto minmax(150px,1fr) auto}.task-row>.task-tags,.task-row>span.pill{grid-column:2}.inline-member{grid-column:2}.routine-line{grid-template-columns:1fr auto auto}.routine-line .inline-member{grid-column:1}}
@media(max-width:720px){.routine-line{grid-template-columns:1fr auto auto}.routine-tools{align-items:flex-end;flex-direction:column}.report-card textarea{min-height:52vh}.inline-member{max-width:150px}}

/* v2.2 today/tomorrow, editable routines, reports */
.inline-member{max-width:125px;padding:7px 8px;font-size:11px}.routine-line{display:grid;grid-template-columns:minmax(180px,1fr) 120px auto auto;align-items:center;gap:6px}.routine-line .routine{min-width:0}.routine-line .routine small{display:block;color:#94a3b8;font-size:9px;margin-top:2px}.routine-tools{display:flex;gap:8px;align-items:center}.report-card{width:min(760px,100%)}.report-card textarea{width:100%;min-height:430px;line-height:1.7}.report-notice{padding:10px 12px;border-radius:9px;background:#eff6ff;color:#4162a7;font-size:12px}.slack-card{margin-top:18px}.btn:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:1100px){.task-row{grid-template-columns:auto minmax(150px,1fr) auto}.task-row>.task-tags,.task-row>span.pill{grid-column:2}.inline-member{grid-column:2}.routine-line{grid-template-columns:1fr auto auto}.routine-line .inline-member{grid-column:1}}
@media(max-width:720px){.routine-line{grid-template-columns:1fr auto auto}.routine-tools{align-items:flex-end;flex-direction:column}.report-card textarea{min-height:52vh}.inline-member{max-width:150px}}

/* v2.3 personal dashboard cleanup */
.dashboard-grid>*{min-width:0}.task-list,.tomorrow-list{min-width:0;overflow:hidden}.task-row.personal-row{grid-template-columns:auto minmax(0,1fr) auto auto auto auto}.task-row.admin-row{grid-template-columns:auto minmax(180px,1fr) 125px auto auto auto auto}.task-copy,.tomorrow-copy{min-width:0}.task-title,.task-meta{overflow-wrap:anywhere}.slack-send-btn{border:1px solid #d9e2f2;background:#f7f9ff;color:#5369be;border-radius:9px;padding:7px 10px;font-size:10px;font-weight:800;white-space:nowrap;cursor:pointer}.slack-send-btn:hover{background:#edf1ff;border-color:#bbc9ef}.slack-modal-card{width:min(520px,100%)}.slack-field{display:grid;gap:7px;margin:14px 0;color:#64748b;font-size:12px;font-weight:700}.slack-field select,.slack-field textarea{width:100%}.tomorrow-card{overflow:hidden}.tomorrow-list{display:grid;gap:10px}.tomorrow-item{display:grid;grid-template-columns:52px minmax(0,1fr) auto auto;align-items:center;gap:12px;position:relative;padding:14px;border:1px solid #e8edf5;border-radius:14px;background:linear-gradient(135deg,#fff,#fbfcff);transition:.18s}.tomorrow-item:hover{border-color:#ccd7ee;box-shadow:0 8px 20px rgba(40,60,100,.07)}.tomorrow-date{width:46px;height:52px;border-radius:12px;background:#fff7ed;color:#e57a18;display:grid;place-content:center;text-align:center}.tomorrow-date strong{font-size:18px;line-height:1}.tomorrow-date span{font-size:9px;margin-top:4px;font-weight:800}.tomorrow-tags{display:flex;gap:5px;margin-top:9px}.tomorrow-item .row-actions{display:flex}.tomorrow-empty{padding:32px 10px}.routine-line{grid-template-columns:minmax(0,1fr) auto auto auto}.routine-line .slack-send-btn{align-self:center}body.dark .tomorrow-item{background:linear-gradient(135deg,#121b2e,#151f34);border-color:#28344b}body.dark .slack-send-btn{background:#1c2945;border-color:#344462;color:#aebeff}body.dark .tomorrow-date{background:#392818;color:#ffb05e}
@media(max-width:1350px){.task-row.personal-row{grid-template-columns:auto minmax(0,1fr) auto auto}.task-row.personal-row .task-tags{grid-column:2}.task-row.personal-row>span.pill{grid-column:3}.task-row.personal-row .slack-send-btn{grid-column:2;justify-self:start}.task-row.personal-row .row-actions{position:absolute;right:7px;top:7px}.tomorrow-item{grid-template-columns:48px minmax(0,1fr) auto}.tomorrow-item .slack-send-btn{grid-column:2;justify-self:start}.tomorrow-item .row-actions{position:absolute;right:7px;top:7px}}
@media(max-width:900px){.task-row.admin-row{grid-template-columns:auto minmax(0,1fr) auto}.task-row.admin-row .inline-member,.task-row.admin-row .task-tags,.task-row.admin-row .slack-send-btn{grid-column:2;justify-self:start}.task-row.admin-row .row-actions{position:absolute;right:7px;top:7px}}
@media(max-width:720px){.task-row.personal-row{grid-template-columns:auto minmax(0,1fr);padding-right:38px}.task-row.personal-row .task-tags,.task-row.personal-row>span.pill,.task-row.personal-row .slack-send-btn{grid-column:2}.slack-send-btn{padding:7px 9px}.tomorrow-item{grid-template-columns:45px minmax(0,1fr);padding-right:38px}.tomorrow-item .slack-send-btn{grid-column:2}.routine-line{grid-template-columns:minmax(0,1fr) auto auto}.routine-line .slack-send-btn{grid-column:1;justify-self:start;margin-left:32px}}

/* v2.4 completion notifications and routine channel automation */
.routine-setting-btn{border:1px solid #d9e2f2;background:#fff;color:#66758e;border-radius:9px;padding:7px 10px;font-size:10px;font-weight:800;white-space:nowrap;cursor:pointer}.routine-setting-btn:hover{border-color:#afbfeb;color:#4f66be;background:#f7f9ff}.routine-setting-btn.active{border-color:#a7e4cf;background:#ebfbf5;color:#09865e}.auto-toggle{display:flex;align-items:center;gap:10px;padding:13px 14px;border:1px solid #dfe6ef;border-radius:11px;margin:15px 0;font-weight:700;color:#42516a}.auto-toggle input{width:20px;height:20px;accent-color:#2563eb}.channel-hint{padding:10px 12px;border-radius:9px;background:#f8fafc;color:#7b879a;font-size:11px;margin:-3px 0 16px}.channel-hint button{border:0;background:none;color:#526bc4;font-weight:800;cursor:pointer;padding:0 3px}.routine-line{grid-template-columns:minmax(0,1fr) auto auto auto}.task-row.personal-row{grid-template-columns:auto minmax(0,1fr) auto auto auto}.task-row.admin-row{grid-template-columns:auto minmax(180px,1fr) 125px auto auto auto}.tomorrow-item{grid-template-columns:52px minmax(0,1fr) auto}.routine-card .subtle{max-width:520px}body.dark .routine-setting-btn{background:#18243b;border-color:#34425d;color:#a6b3cb}body.dark .routine-setting-btn.active{background:#12372d;border-color:#276451;color:#73dfba}body.dark .auto-toggle{border-color:#34425d;color:#c7d0df}body.dark .channel-hint{background:#172238;color:#98a5ba}
@media(max-width:1350px){.task-row.personal-row{grid-template-columns:auto minmax(0,1fr) auto}.task-row.personal-row .task-tags{grid-column:2}.task-row.personal-row>span.pill{grid-column:3}.task-row.personal-row .row-actions{position:absolute;right:7px;top:7px}.tomorrow-item{grid-template-columns:48px minmax(0,1fr)}.tomorrow-item .row-actions{position:absolute;right:7px;top:7px}}
@media(max-width:720px){.routine-line{grid-template-columns:minmax(0,1fr) auto auto}.routine-line .routine-setting-btn{grid-column:1;justify-self:start;margin-left:32px}.task-row.personal-row{grid-template-columns:auto minmax(0,1fr);padding-right:38px}.task-row.personal-row .task-tags,.task-row.personal-row>span.pill{grid-column:2}.tomorrow-item{grid-template-columns:45px minmax(0,1fr);padding-right:38px}}

/* v2.5 admin report channel setting */
.report-channel-setting{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 15px;margin-bottom:12px;border:1px solid #dce5f2;border-radius:12px;background:linear-gradient(135deg,#f8faff,#f4f7ff)}.report-channel-setting b,.report-channel-setting small{display:block}.report-channel-setting small{color:#7f8ca2;font-size:10px;margin-top:3px}.channel-setting-row{display:flex;gap:7px;align-items:center}.channel-setting-row input{width:190px;text-transform:uppercase}.report-channel-view{padding:10px 12px;margin-bottom:12px;border-radius:9px;background:#f8fafc;color:#7b8798;font-size:11px}.report-channel-view b{color:#5267ba;margin-left:5px}body.dark .report-channel-setting{background:#172238;border-color:#34425d}body.dark .report-channel-view{background:#172238}
@media(max-width:720px){.report-channel-setting{display:block}.channel-setting-row{margin-top:10px}.channel-setting-row input{min-width:0;flex:1}}

/* production login and shared database */
.auth-shell{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at 70% 15%,#324a96,#09101f 65%)}.auth-shell.hidden{display:none}.auth-card{width:min(420px,100%);padding:32px;background:#fff;border-radius:22px;box-shadow:0 30px 90px #0008}.auth-brand{display:flex;align-items:center;gap:12px;margin-bottom:28px}.auth-brand b,.auth-brand small{display:block}.auth-brand small{color:#8a96a8;margin-top:3px}.auth-card h2{font-size:26px}.auth-card>p{color:#7a879b;line-height:1.6}.auth-card form{display:grid;grid-template-columns:1fr}.auth-card form label{display:grid;gap:7px}.auth-card input{width:100%}.auth-card #authSubmit{margin-top:5px}.auth-card #authError{min-height:20px;color:#dc2626;font-size:12px}.auth-blur{filter:blur(7px);pointer-events:none}.user-manager-card{width:min(680px,100%)}.user-manager-card hr{border:0;border-top:1px solid #e8edf3;margin:20px 0}.user-manager-card h3{font-size:15px}.user-admin-row{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid #eef2f6}.user-admin-row b,.user-admin-row small{display:block}.user-admin-row small{color:#8b97a9;font-size:10px;margin-top:3px}.member-select select:disabled{opacity:1;cursor:default}.side-foot>div{white-space:nowrap}
@media(max-width:720px){#manageUsersBtn,#logoutBtn{font-size:0!important}#manageUsersBtn:after{content:'사용자';font-size:10px}#logoutBtn:after{content:'나가기';font-size:10px}.auth-card{padding:25px 20px}}
.auth-card .hidden{display:none}

/* v2.6 account and administrator settings */
.settings-hero{border-radius:20px;padding:28px 32px;margin-bottom:18px;color:#fff;background:linear-gradient(115deg,#162441,#36558f);box-shadow:0 16px 36px rgba(30,50,100,.16)}.settings-hero.admin{background:linear-gradient(115deg,#34236f,#6652c7)}.settings-hero span{font-size:10px;letter-spacing:.15em;font-weight:800;color:#b8c8ff}.settings-hero h2{margin:6px 0}.settings-hero p{margin:0;color:#c5d1ea}.settings-card{margin-bottom:18px}.settings-card>h2{font-size:17px;margin-bottom:18px}.settings-form{max-width:850px}.toggle-label{display:flex!important;grid-auto-flow:column;justify-content:start;align-items:center;gap:8px!important}.toggle-label input{width:18px;height:18px}.admin-user-form{display:grid;grid-template-columns:minmax(130px,1fr) minmax(140px,1fr) 100px 90px minmax(145px,1fr) auto auto;gap:8px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.admin-user-form:last-child{border:0}.admin-user-form input,.admin-user-form select{min-width:0;width:100%}.btn.danger{color:#dc2626;border-color:#fecaca}.btn.danger:hover{background:#fef2f2}.btn:disabled{opacity:.4}.mobile-nav{overflow-x:auto}.mobile-nav .nav-item{min-width:64px}
body.dark .settings-hero{box-shadow:none}body.dark .admin-user-form{border-color:#263149}
@media(max-width:1050px){.admin-user-form{grid-template-columns:1fr 1fr 100px 90px}.admin-user-form input[name=password]{grid-column:1/3}.admin-user-form .btn{justify-self:start}}
@media(max-width:720px){.settings-hero{padding:22px 20px}.settings-form{grid-template-columns:1fr}.admin-user-form{grid-template-columns:1fr 1fr}.admin-user-form input[name=name],.admin-user-form input[name=slack_user_id],.admin-user-form input[name=password]{grid-column:1/-1}.admin-user-form .btn{width:100%}.mobile-nav{justify-content:flex-start}.settings-card{overflow:hidden}}

/* v3 departments and historical archive */
.archive-summary{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:12px;margin:0 0 18px}.archive-summary article{background:var(--white);border:1px solid var(--line);border-radius:14px;padding:17px 19px;box-shadow:var(--shadow)}.archive-summary span,.archive-summary strong{display:block}.archive-summary span{font-size:11px;color:#8492a6;font-weight:700}.archive-summary strong{font-size:25px;margin-top:4px}.archive-filters{display:grid;grid-template-columns:minmax(220px,2fr) repeat(6,minmax(115px,1fr)) auto;gap:10px;align-items:end;margin-bottom:20px}.archive-filters label{display:grid;gap:6px;color:#728096;font-size:11px;font-weight:700}.archive-filters input,.archive-filters select{width:100%;min-width:0}.archive-filter-actions{display:flex;gap:7px}.archive-table{min-width:980px}.archive-table td:nth-child(4){min-width:240px}.archive-detail summary,.archive-mobile-card summary{color:#5369be;font-size:11px;font-weight:800;cursor:pointer;white-space:nowrap}.archive-detail dl,.archive-mobile-card dl{display:grid;grid-template-columns:85px minmax(220px,1fr);gap:7px 10px;margin:12px 0 0;padding:12px;border-radius:10px;background:#f8fafc;white-space:normal}.archive-detail dt,.archive-mobile-card dt{font-size:10px;color:#8492a6;font-weight:800}.archive-detail dd,.archive-mobile-card dd{margin:0;font-size:11px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}.archive-pagination{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:20px;color:#728096;font-size:12px}.archive-mobile{display:none}.archive-mobile-card{border:1px solid var(--line);border-radius:13px;padding:15px;background:#fff}.archive-mobile-card h3{font-size:14px;margin:10px 0 6px}.archive-mobile-card>p{font-size:11px;color:#8492a6;margin:0 0 12px}.archive-card-top{display:flex;justify-content:space-between;align-items:center;font-size:11px}.department-overview td:nth-child(2){min-width:220px}.command-strip>strong{position:relative;z-index:1;font-size:38px}.command-strip p{margin:6px 0 0;color:#d7d3f5;font-size:12px}body.dark .archive-summary article,body.dark .archive-mobile-card{background:#121b2e;border-color:#263149}body.dark .archive-detail dl,body.dark .archive-mobile-card dl{background:#172238}
.admin-user-form{grid-template-columns:minmax(120px,1fr) minmax(130px,1fr) minmax(125px,1fr) 100px 90px minmax(140px,1fr) auto auto}
@media(max-width:1350px){.archive-filters{grid-template-columns:repeat(4,minmax(135px,1fr))}.archive-search{grid-column:span 2}.archive-filter-actions{grid-column:span 2}.archive-summary{grid-template-columns:repeat(3,1fr)}}
@media(max-width:1050px){.admin-user-form{grid-template-columns:1fr 1fr 1fr}.admin-user-form input[name=password]{grid-column:auto}}
@media(max-width:720px){.archive-summary{grid-template-columns:repeat(2,1fr);gap:8px}.archive-summary article{padding:13px}.archive-summary strong{font-size:21px}.archive-filters{grid-template-columns:1fr 1fr}.archive-search,.archive-filter-actions{grid-column:1/-1}.archive-desktop{display:none}.archive-mobile{display:grid;gap:10px}.archive-mobile-card dl{grid-template-columns:72px 1fr}.archive-pagination{position:sticky;bottom:73px;background:var(--white);padding:10px;border-radius:12px;box-shadow:0 8px 25px #0f172a18}.department-overview .table{min-width:760px}.admin-user-form{grid-template-columns:1fr 1fr}.admin-user-form select[name=department]{grid-column:1/-1}body.dark .archive-pagination{background:#121b2e}}

/* v3.1 admin member dashboard switcher */
.admin-view-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;padding:11px 15px;border:1px solid #c7d2fe;border-radius:11px;background:#eef2ff;color:#3949a0}.admin-view-banner b{font-size:12px}.admin-view-banner span{font-size:11px}.member-select select:not(:disabled){border-color:#9aabef;background:#f7f8ff;color:#35489c;font-weight:700}body.dark .admin-view-banner{background:#1e2949;border-color:#3d4e7e;color:#b9c7ff}body.dark .member-select select:not(:disabled){background:#182442;color:#c3ceff;border-color:#45598d}
@media(max-width:720px){.admin-view-banner{display:block}.admin-view-banner span{display:block;margin-top:3px}.header-actions .member-select{display:block}.header-actions .member-select span{font-size:9px}.header-actions .member-select select{max-width:130px;padding:8px}.header-actions{align-items:flex-end}.header-actions #logoutBtn{display:none}}

/* v3.1 server Slack channel directory */
.slack-channel-list{display:grid;gap:8px;margin:20px 0}.slack-channel-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(170px,1fr) auto auto auto;gap:8px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.slack-channel-row input{width:100%;min-width:0}.slack-channel-create{padding-top:4px}.channel-setting-row select{min-width:220px}.slack-field optgroup{font-weight:800}.slack-field option{font-weight:500}body.dark .slack-channel-row{border-color:#263149}
@media(max-width:720px){.slack-channel-row{grid-template-columns:1fr 1fr}.slack-channel-row .toggle-label{grid-column:1/-1}.slack-channel-row .btn{width:100%}.channel-setting-row select{min-width:0;width:100%}}

/* v3.2 practical assignment control and instant task entry */
.quick-task-form{display:grid;grid-template-columns:minmax(0,1fr) 96px auto;gap:8px;margin:0 0 14px}.quick-task-form select{width:100%;font-size:11px;font-weight:700}.quick-task-form input{width:100%;background:#f8faff;border-color:#dce5f4}.quick-task-form input:focus{background:#fff}.task-copy[data-open-task],.tomorrow-copy[data-open-task],.assignment-main[data-open-task]{cursor:pointer}.task-copy[data-open-task]:hover .task-title,.tomorrow-copy[data-open-task]:hover .task-title,.assignment-main[data-open-task]:hover .assignment-title b{color:#4f67cf}
.assign-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;border-radius:23px;padding:31px 34px;margin-bottom:16px;color:#fff;background:radial-gradient(circle at 88% 15%,#ffffff1c,transparent 28%),linear-gradient(115deg,#263d8f,#6851cf 68%,#7557d6);box-shadow:0 20px 45px rgba(66,66,160,.2)}.assign-hero span{display:block;font-size:9px;letter-spacing:.16em;font-weight:800;color:#c9d2ff;margin-bottom:8px}.assign-hero h2{font-size:23px;margin:0 0 7px}.assign-hero p{margin:0;color:#d9def7;font-size:12px}.assign-summary{display:grid;grid-template-columns:repeat(6,minmax(110px,1fr));gap:10px;margin-bottom:16px}.assign-summary button{border:1px solid var(--line);border-radius:14px;padding:15px 17px;background:var(--white);text-align:left;box-shadow:var(--shadow);cursor:pointer;transition:.17s}.assign-summary button:hover{transform:translateY(-2px);border-color:#bfcaf0}.assign-summary span,.assign-summary strong{display:block}.assign-summary span{font-size:10px;color:#8290a5;font-weight:700}.assign-summary strong{font-size:25px;margin-top:4px;color:#263552}.assign-summary .danger strong{color:#e34e4e}.assign-summary .urgent strong{color:#ed812d}.assign-summary .success strong{color:#13a173}.team-load-card{margin-bottom:16px}.team-load-grid{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:10px}.team-load-item{border:1px solid #e5eaf3;border-radius:13px;padding:13px;background:#fff;text-align:left;cursor:pointer;transition:.17s}.team-load-item:hover{border-color:#bfcaf0;box-shadow:0 8px 20px rgba(45,60,100,.07)}.team-load-top{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:9px;align-items:center}.team-load-top b,.team-load-top small{display:block}.team-load-top b{font-size:12px}.team-load-top small{font-size:9px;color:#8d98aa;margin-top:2px}.team-load-top>strong{font-size:13px;color:#586fc7}.team-load-stats{display:flex;gap:12px;margin:11px 0 8px;font-size:9px;color:#8995a7}.team-load-stats b{color:#344158}.team-load-stats .late,.team-load-stats .late b{color:#df5050}.team-load-item>i{display:block;height:4px;border-radius:99px;background:#eef1f6;overflow:hidden}.team-load-item>i em{display:block;height:100%;background:linear-gradient(90deg,#667cf0,#5dd9bd);border-radius:99px}.assign-board{overflow:hidden}.assign-toolbar{display:grid;grid-template-columns:minmax(220px,2fr) repeat(4,minmax(115px,1fr)) auto;gap:9px;align-items:end;margin-bottom:18px}.assign-toolbar label{display:grid;gap:6px;font-size:10px;color:#7c899e;font-weight:700}.assign-toolbar input,.assign-toolbar select{width:100%;min-width:0}.assign-result-head{display:flex;align-items:center;justify-content:space-between;margin:0 0 11px}.assign-result-head h2{font-size:16px}.assign-result-head span{display:block;font-size:10px;color:#8d99ab;margin-top:3px}.assignment-list{display:grid;gap:8px}.assignment-item{display:grid;grid-template-columns:auto minmax(220px,1fr) minmax(115px,140px) 86px 128px 95px auto auto;gap:8px;align-items:center;border:1px solid #e7ecf3;border-radius:13px;padding:12px 13px;background:#fff;position:relative}.assignment-item:hover{border-color:#cbd5e7}.assignment-item.overdue{border-left:4px solid #ef5a5a;background:linear-gradient(90deg,#fff8f8,#fff 18%)}.assignment-item.done{opacity:.68;background:#f8fafc}.assignment-item.done .assignment-title b{text-decoration:line-through}.assignment-main{min-width:0}.assignment-title{display:flex;align-items:center;gap:5px;min-width:0}.assignment-title b{font-size:12px;overflow-wrap:anywhere}.assignment-main p{margin:4px 0;color:#8491a5;font-size:10px;overflow-wrap:anywhere}.assignment-main small{font-size:8px;color:#a1aaba}.assignment-item select,.assignment-item input[type=date]{min-width:0;width:100%;padding:8px;font-size:10px}.assign-notify-btn{border:1px solid #d6e0f2;border-radius:8px;padding:8px 9px;background:#f6f8ff;color:#5268bd;font-size:9px;font-weight:800;cursor:pointer;white-space:nowrap}.assign-notify-btn:hover{background:#eaf0ff}.assign-notify-btn:disabled{opacity:.45}.assignment-item .row-actions{white-space:nowrap}body.dark .quick-task-form input,body.dark .team-load-item,body.dark .assignment-item{background:#121b2e;border-color:#29364d}body.dark .assignment-item.overdue{background:linear-gradient(90deg,#341c23,#121b2e 20%)}body.dark .assignment-item.done{background:#101827}body.dark .assign-summary button{background:#121b2e;border-color:#29364d}body.dark .assign-summary strong{color:#e7ecf6}body.dark .team-load-item>i{background:#28344b}body.dark .assign-notify-btn{background:#1b2945;border-color:#344662;color:#b7c4f6}
@media(max-width:1400px){.assign-summary{grid-template-columns:repeat(3,1fr)}.team-load-grid{grid-template-columns:repeat(3,1fr)}.assign-toolbar{grid-template-columns:repeat(3,1fr)}.assign-search{grid-column:span 2}.assignment-item{grid-template-columns:auto minmax(200px,1fr) 125px 85px 120px}.assignment-item .status-select,.assignment-item .assign-notify-btn{grid-column:2}.assignment-item .row-actions{position:absolute;right:7px;top:7px}}
@media(max-width:900px){.team-load-grid{grid-template-columns:repeat(2,1fr)}.assignment-item{grid-template-columns:auto minmax(0,1fr) 120px}.assignment-item>[data-task-priority],.assignment-item>[data-task-deadline],.assignment-item .status-select,.assignment-item .assign-notify-btn{grid-column:2;justify-self:start;width:auto}.assignment-item>[data-task-member]{grid-column:3;grid-row:1/3}.assign-toolbar{grid-template-columns:1fr 1fr}.assign-search{grid-column:1/-1}}
@media(max-width:720px){.quick-task-form{grid-template-columns:1fr}.quick-task-form .btn{width:100%}.assign-hero{display:block;padding:24px 20px}.assign-hero h2{font-size:19px}.assign-hero .btn{margin-top:18px}.assign-summary{grid-template-columns:repeat(2,1fr);gap:8px}.assign-summary button{padding:12px}.team-load-grid{grid-template-columns:1fr}.assign-toolbar{grid-template-columns:1fr 1fr}.assign-toolbar .btn{width:100%}.assignment-item{grid-template-columns:auto minmax(0,1fr);padding-right:38px}.assignment-item>[data-task-member],.assignment-item>[data-task-priority],.assignment-item>[data-task-deadline],.assignment-item .status-select,.assignment-item .assign-notify-btn{grid-column:2;grid-row:auto;width:100%}.assignment-main p{font-size:10px}.assignment-item .row-actions{right:5px;top:5px}}

/* v3.3 simplified assignment modal, categories, department clarity */
.assign-hero-actions{display:flex;align-items:center;gap:8px;position:relative;z-index:2}.assign-hero .btn.light.secondary{background:#ffffff18;color:#fff;border:1px solid #ffffff2e}.assignment-modal-card{width:min(650px,100%)}.assignment-modal-help{margin:-7px 0 18px;padding:11px 13px;border-radius:10px;background:#f4f7ff;color:#5c6fae;font-size:11px}.assignment-form{grid-template-columns:1fr 1fr}.assignment-form textarea{width:100%;min-height:105px}.category-modal-card{width:min(500px,100%)}.category-list{display:grid;gap:7px;margin:15px 0}.category-row{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fafbfe;font-weight:700;font-size:12px}.category-add-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.category-add-form input{width:100%}.category-chip{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;background:#eef2ff;color:#5268bd;font-size:8px;font-weight:800;white-space:nowrap}.assign-toolbar{grid-template-columns:minmax(200px,2fr) repeat(6,minmax(105px,1fr)) auto}body.dark .assignment-modal-help{background:#192640;color:#abbaf0}body.dark .category-row{background:#172238;border-color:#2d3a53}body.dark .category-chip{background:#24345c;color:#b8c7ff}
@media(max-width:1400px){.assign-toolbar{grid-template-columns:repeat(4,1fr)}.assign-search{grid-column:span 2}}
@media(max-width:720px){.assign-hero-actions{margin-top:18px;flex-wrap:wrap}.assign-hero-actions .btn{margin-top:0}.assignment-form{grid-template-columns:1fr}.assignment-form .wide{grid-column:auto}.category-add-form{grid-template-columns:1fr}.assign-toolbar{grid-template-columns:1fr 1fr}.assign-search{grid-column:1/-1}}

/* v3.4 separated assignments and detailed archive records */
.assign-hero.compact{min-height:150px;padding:27px 31px}.assign-hero.compact h2{font-size:24px}.assignment-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0}.assignment-kpis article{padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:var(--card);box-shadow:var(--shadow);display:grid;gap:3px}.assignment-kpis span{color:var(--muted);font-size:10px;font-weight:800}.assignment-kpis strong{font-size:26px;letter-spacing:-1px}.assignment-kpis small{color:var(--muted);font-size:9px}.assignment-kpis .urgent{border-color:#f3c5c9;background:#fff8f8}.assignment-kpis .urgent strong{color:#ca3344}.assignment-kpis .complete{border-color:#cbe7d7;background:#f7fcf9}.assignment-kpis .complete strong{color:#188657}.assignment-workspace{padding:0;overflow:hidden}.assignment-tabs{display:flex;padding:0 20px;border-bottom:1px solid var(--line);background:#fafbfe}.assignment-tabs button{padding:16px 19px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font-size:12px;font-weight:800;cursor:pointer}.assignment-tabs button.active{border-bottom-color:var(--accent);color:var(--accent)}.assignment-tabs b{display:inline-grid;place-items:center;min-width:20px;height:20px;margin-left:5px;border-radius:999px;background:#e8ecf8;font-size:9px}.assignment-tabs button.active b{background:#e5e9ff}.assignment-simple-filters{display:grid;grid-template-columns:minmax(220px,2fr) repeat(3,minmax(120px,1fr)) auto;gap:9px;padding:17px 20px;border-bottom:1px solid var(--line)}.assignment-simple-filters label{font-size:9px;font-weight:800;color:var(--muted)}.assignment-simple-filters input,.assignment-simple-filters select{width:100%;margin-top:5px}.assignment-simple-filters>.btn{align-self:end}.assignment-list-head{display:flex;align-items:center;justify-content:space-between;padding:17px 20px 11px}.assignment-list-head h2{margin:0;font-size:15px}.assignment-list-head span{font-size:10px;color:var(--muted)}.assignment-card-list{display:grid;gap:9px;padding:0 20px 20px}.assignment-card{display:grid;grid-template-columns:90px minmax(0,1fr) auto;gap:15px;align-items:center;padding:15px;border:1px solid var(--line);border-radius:13px;background:var(--card);transition:.15s ease}.assignment-card:hover{border-color:#bdc8e8;box-shadow:0 8px 22px #28355f12}.assignment-card.is-urgent{border-left:4px solid #d83e4f}.assignment-card.is-completed{background:#fafcfb;opacity:.93}.assignment-card-side{display:flex;flex-direction:column;align-items:flex-start;gap:7px}.assignment-priority{display:inline-flex;padding:5px 8px;border-radius:7px;font-size:9px;font-weight:900}.assignment-priority.긴급{color:#bd293a;background:#fdebee}.assignment-priority.높음{color:#a55b08;background:#fff1dd}.assignment-priority.보통{color:#4963ac;background:#eef2ff}.assignment-priority.낮음{color:#5b687a;background:#eef1f5}.assignment-card-main{min-width:0;cursor:pointer}.assignment-route{display:flex;align-items:center;gap:7px;margin-bottom:5px;font-size:9px;color:var(--muted)}.assignment-route i{font-style:normal;color:#99a4bd}.assignment-route b{color:var(--text)}.assignment-card-main h3{margin:0 0 5px;font-size:13px;line-height:1.45}.assignment-card-main>p{margin:0 0 7px;color:var(--muted);font-size:10px}.assignment-card-main>small{color:#8c96aa;font-size:9px}.assignment-card-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex-wrap:wrap;max-width:245px}.btn.success{background:#e4f5eb;border-color:#b9e2c9;color:#167447}.assignment-completion-detail{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0}.assignment-completion-detail p{margin:0;padding:6px 8px;border-radius:8px;background:#f2f6f3;color:#52635a;font-size:9px}.assignment-completion-detail b{margin-right:6px;color:#1d8054}.assignment-empty{margin:5px 20px 20px}
.archive-record-grid{display:grid;gap:12px;margin-top:18px}.archive-record-card{padding:18px;border:1px solid var(--line);border-radius:14px;background:var(--card);box-shadow:0 5px 17px #2532580b}.archive-record-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.archive-record-top>div{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.archive-record-top span,.archive-record-top small{font-size:9px;color:var(--muted)}.archive-record-top b{font-size:11px}.archive-record-card h3{margin:11px 0 8px;font-size:14px;line-height:1.5}.archive-record-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:9px}.archive-detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:14px}.archive-detail-grid section{min-width:0;padding:12px;border-radius:10px;border:1px solid #e5e9f2;background:#fafbfe}.archive-detail-grid b{display:block;margin-bottom:7px;font-size:9px;color:#4e5e80}.archive-detail-grid p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;color:#333d52;font-size:10px;line-height:1.65}.archive-detail-grid .result{border-top:3px solid #6aa488}.archive-detail-grid .note{border-top:3px solid #7588c7}.archive-detail-grid .reason{border-top:3px solid #d48787}.archive-record-foot{display:flex;justify-content:space-between;gap:10px;margin-top:11px;padding-top:9px;border-top:1px dashed var(--line);color:#9aa2b3;font-size:8px}body.dark .assignment-tabs,body.dark .assignment-card.is-completed,body.dark .archive-detail-grid section{background:#162035}body.dark .assignment-kpis .urgent{background:#281b23;border-color:#60313b}body.dark .assignment-kpis .complete{background:#17281f;border-color:#315a42}body.dark .assignment-card{background:#121c2f}body.dark .archive-record-card{background:#121c2f}
@media(max-width:1050px){.assignment-kpis{grid-template-columns:repeat(2,1fr)}.assignment-simple-filters{grid-template-columns:repeat(2,1fr)}.assignment-search{grid-column:1/-1}.assignment-card{grid-template-columns:75px minmax(0,1fr)}.assignment-card-actions{grid-column:1/-1;max-width:none;justify-content:flex-end}.archive-detail-grid{grid-template-columns:1fr}}
@media(max-width:620px){.assignment-kpis{grid-template-columns:repeat(2,1fr)}.assignment-simple-filters{grid-template-columns:1fr}.assignment-card{grid-template-columns:1fr;padding:13px}.assignment-card-side{flex-direction:row}.assignment-card-actions{justify-content:flex-start}.assignment-tabs{padding:0 10px}.assignment-tabs button{flex:1;padding:14px 8px}.assignment-list-head{align-items:flex-start;gap:8px}.archive-record-card{padding:14px}.archive-record-foot{flex-direction:column}.archive-detail-grid section{padding:10px}}

/* ── v2 레이아웃 보정(2026-07-29): 와이드 뷰포트 중앙 정렬 + 카드 여백 ── */
main{max-width:none}
main>header,main>#content{max-width:1440px;margin-left:auto;margin-right:auto}
#content>.card,#content>section{margin-bottom:26px}
#content .card{padding:24px}
.docs-wrap{gap:22px}
.cal-head{margin-bottom:16px}

/* ── 히어로·멤버 바 분리(2026-07-29): 겹침 제거 — 히어로 곡선 모서리 온전 유지 + 바 상단 마진 ── */
.personal-strip{margin:18px 0 26px;border-radius:18px}
@media(max-width:900px){.personal-strip{margin:14px 0 20px}}

/* 히어로 그림자 완화(2026-07-29): 사각형처럼 퍼지던 대형 섀도 → 라운드를 따라가는 소프트 섀도 */
.os-hero{box-shadow:0 18px 40px rgba(25,34,83,.18)}
.hero{box-shadow:0 14px 34px rgba(42,58,115,.16)}

/* ── 오늘·내일 업무 반응형·간격 보정(2026-07-29) ── */
#content>.grid{margin-bottom:26px}
.grid{gap:22px}
.dashboard-grid{gap:24px}
/* 내일 카드의 빠른입력: 입력창 한 줄 전체 + 아래 우선순위·버튼 (좁아도 안 깨짐) */
.tomorrow-card .quick-task-form{display:flex;flex-wrap:wrap;gap:8px}
.tomorrow-card .quick-task-form input{flex:1 1 100%;min-width:0}
.tomorrow-card .quick-task-form select{flex:1 1 auto;min-width:90px}
.tomorrow-card .quick-task-form button{flex:0 0 auto}
/* 중간 폭에서 두 카드 조기 스택 — 좁은 칼럼에서 폼·목록이 눌리는 것 방지 */
@media(max-width:1140px){.dashboard-grid{grid-template-columns:1fr}}
.tomorrow-card .quick-task-form select{width:auto;flex:1 1 0}

/* 브랜드 사이트 라벨 — 한 줄 말줄임(오버플로 줄바꿈 방지) */
.brand small{display:block;max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ── 계열사 로고 브랜드 블록 (2026-07-31) ─────────────────────────────────
   로고 가로비가 계열사마다 크게 달라(NX 1.5:1 ~ HUSHED 5:1) 아이콘 정사각 칸에
   넣으면 넓은 로고가 뭉개진다. 로고는 자기 비율대로 흰 판 위에 올리고,
   WORK BOARD 타이틀은 아래 행(내비게이션)과 같은 좌측선에 맞춘다. */
.brand{display:block;padding:0 13px 26px}
.brand-plate{display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 11px;background:#fff;border-radius:12px;box-shadow:0 8px 18px rgba(8,14,30,.3);margin-bottom:13px}
.brand-plate img{height:24px;width:auto;display:block}
.brand-copy b{display:block;font-size:16px;letter-spacing:.04em;line-height:1.2}
.brand-copy small{display:block;margin-top:4px}
@media(max-width:900px){.brand-plate{height:34px;padding:0 9px}.brand-plate img{height:20px}}

/* ── PERF: 스크롤/입력 성능 (2026-08-03) ─────────────────────────────
   목록 항목이 많아질수록 스크롤이 끊기는 문제 대응.
   화면 밖 항목의 렌더링을 건너뛴다. 시각적 변화 없음.
   되돌리려면 이 블록만 지우면 된다. */
.task-row{content-visibility:auto;contain-intrinsic-size:0 56px}
.assignment-card{content-visibility:auto;contain-intrinsic-size:0 120px}

/* 사용자가 OS에서 '동작 줄이기'를 켠 경우 상시 애니메이션(7개) 정지 */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}

/* ═══════════ 테마 오버라이드: CPP 관리 화면 톤 (2026-08-05) ═══════════
   시안: 재발송 관리 화면 — 밝은 회색 바탕 + 플랫 화이트 카드 + 딥 인디고 액센트.
   기존 규칙 '뒤'에 붙는 덮어쓰기 계층이다. 원복하려면 이 블록만 지우면 된다. */
:root{--blue:#4338ca;--blue2:#eef1ff;--ink:#1f2637;--muted:#697386;--line:#e6e8ee;--bg:#f3f4f7;
  --shadow:0 1px 2px rgba(16,24,40,.05);--electric:#4338ca;--violet:#6366f1}
body{background:var(--bg);color:var(--ink)}
h1{letter-spacing:-.6px}
.eyebrow{color:#8a92a6}

/* 사이드바는 기존(다크 네이비) 유지 — 본문 카드·표만 시안 톤 (2026-08-05 사용자 피드백) */

/* 배너·히어로: 그라데이션 → 플랫 화이트 카드 */
.hero,.assign-hero,.mini-hero,.command-strip,.archive-head,.insight-hero{
  background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}
.hero{min-height:0;padding:26px 30px}
.assign-hero.compact{min-height:0;padding:24px 28px}
.assign-hero span{color:#8a92a6}
.assign-hero p,.hero p,.command-strip p,.mini-hero p,.archive-head p,.insight-hero p{color:var(--muted)}
.hero-btn{background:var(--blue);color:#fff;border-radius:9px}
.btn.light{background:#fff;color:#3f4657;border:1px solid #d8dce6}
.btn.light.secondary{color:#697386}

/* 카드·표면 */
.card{border-radius:12px;border-color:var(--line);box-shadow:var(--shadow);}
.task-row{border-radius:10px;border-color:var(--line)}
.assignment-card,.archive-record-card{border-radius:10px;border-color:var(--line);box-shadow:none}

/* 탭: 밑줄 → 알약 (시안의 '전체/처리 대기/처리 완료') */
.assignment-tabs{background:transparent;border-bottom:0;padding:14px 20px 2px;gap:8px;display:flex}
.assignment-tabs button{border:1px solid #d8dce6;border-radius:9px;background:#fff;color:#3f4657;
  padding:9px 14px;font-size:12.5px;font-weight:700}
.assignment-tabs button.active{background:var(--blue);border-color:var(--blue);color:#fff}
.assignment-tabs button b{font-weight:800;opacity:.85}

/* 버튼 */
.btn{border-radius:9px;border-color:#d8dce6;color:#3f4657}
.btn.primary{background:var(--blue);border-color:var(--blue)}
.btn.success{border-color:#c9e9d9}
.edit-btn{border:1px solid #c7cdf3;border-radius:8px;color:var(--blue);background:#fff;
  padding:5px 9px;font-size:13px}
.danger-btn{border:1px solid #f2c9cb;border-radius:8px;color:#d6484e;background:#fff;
  padding:5px 9px;font-size:14px;line-height:1}
.icon-btn{border-radius:8px}

/* 필터 줄·입력 */
.assignment-simple-filters{background:#fff}
.assignment-simple-filters label{color:#697386;font-size:12px}
input,select,textarea{border-radius:8px}
input:focus,select:focus,textarea:focus{outline:2px solid #c7cdf3;outline-offset:0}

/* 알약 배지 톤 정리 — 시안의 소프트 틴트 */
.pill{border-radius:8px;padding:4.5px 9px}
.category-chip{border-radius:8px}
.carry-badge,.yday-badge{border-radius:7px}

/* ── 업무 지시 표 행 (2026-08-05 재구현 — 시안: 재발송 관리 표) ── */
.atable-wrap{overflow-x:auto;margin:0 -1px}
.atable{min-width:1020px}
.atable-head,.atable-row{display:grid;grid-template-columns:120px 150px 100px minmax(240px,1fr) 84px 104px 96px 236px;gap:10px;align-items:center;padding:13px 18px}
.atable-head{background:#f7f8fa;border-bottom:1px solid var(--line);border-radius:10px 10px 0 0;color:#667085;font-size:12.5px;font-weight:700}
.atable-row{background:#fff;border-bottom:1px solid #eef0f4}
.atable-row:last-child{border-bottom:0;border-radius:0 0 10px 10px}
.atable-row:hover{background:#fafbff}
.atable-row .c-date b{display:block;font-size:13.5px}
.atable-row .c-date small{color:#98a1b3}
.c-route{color:#697386;font-size:12.5px;display:flex;gap:6px;align-items:center;min-width:0}
.c-route b{color:var(--ink)}
.c-route i{font-style:normal;color:#b6bdcc}
.c-main{cursor:pointer;min-width:0}
.c-main b{display:block;font-size:13.5px;line-height:1.35}
.c-main small{color:#8a92a6;display:block;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.c-due b{font-size:13px}
.c-actions{display:flex;gap:6px;justify-content:flex-end;white-space:nowrap;align-items:center}
.c-actions .btn.small{padding:6px 10px;font-size:12px}
.ar{text-align:right}
.atable-row.is-urgent{box-shadow:inset 3px 0 0 #ef4444}
@media (max-width:900px){.atable{min-width:900px}}

/* ── 보관함 표 재구현 (2026-08-05 — 시안: 재발송 관리 표) ── */
.archive-tabs{display:flex;gap:8px;margin-bottom:12px}
.atab{border:1px solid #d8dce6;border-radius:9px;background:#fff;color:#3f4657;padding:9px 14px;font-size:12.5px;font-weight:700;cursor:pointer}
.atab b{font-weight:800;opacity:.85}
.atab.active{background:var(--blue);border-color:var(--blue);color:#fff}
.arch-filter-card{padding:14px 18px;margin-bottom:12px}
.arch-filter-card .archive-filters{display:grid;grid-template-columns:minmax(200px,1.6fr) repeat(5,minmax(110px,1fr)) auto auto;gap:9px;align-items:end;padding:0;border:0}
.arch-filter-card label{display:flex;flex-direction:column;gap:5px;color:#697386;font-size:12px;font-weight:600}
.arch-filter-card .archive-filter-actions{display:flex;gap:6px}
.arch-count{align-self:center;color:#697386;font-size:12.5px;font-weight:700;white-space:nowrap}
.arch-table-card{padding:0;overflow:hidden}
.atable.arch{min-width:1180px}
.atable.arch .atable-head,.atable.arch .atable-row{grid-template-columns:104px 104px 74px minmax(230px,1.3fr) minmax(150px,.9fr) minmax(150px,.9fr) 86px 112px 66px}
.c-member b{display:block;font-size:13.5px}
.c-member small{color:#98a1b3}
.c-period b{display:block;font-size:12.5px}
.c-period small{color:#98a1b3;font-size:11.5px}
.c-note{display:flex;align-items:center;gap:6px;min-width:0;font-size:12.5px;color:#3f4657}
.c-note .cell-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cell-tag{flex:none;border-radius:6px;padding:2.5px 6px;font-size:10.5px;font-weight:800}
.cell-tag.note{background:#eef1ff;color:#4338ca}
.cell-tag.warn{background:#fdf3e2;color:#b45309}
.dash{color:#b6bdcc}
.arch-empty{padding:40px 0}
.archive-pagination{display:flex;align-items:center;justify-content:center;gap:12px;padding:13px;border-top:1px solid var(--line);color:#697386;font-size:12.5px}
.arch-detail-card{max-width:760px}
.arch-detail-meta{color:#3f4657;font-size:13px;margin:4px 0 14px;line-height:1.9}
.arch-detail-meta small{color:#8a92a6}
.arch-detail-grid{display:grid;gap:10px}
.arch-detail-grid section{border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.arch-detail-grid section b{display:block;font-size:12px;margin-bottom:6px;color:#697386}
.arch-detail-grid section p{margin:0;font-size:13.5px;white-space:pre-wrap}
.arch-detail-grid section.ok{border-top:3px solid #16a36a}
.arch-detail-grid section.note{border-top:3px solid #4338ca}
.arch-detail-grid section.warn{border-top:3px solid #ef4444}
@media (max-width:1100px){.arch-filter-card .archive-filters{grid-template-columns:1fr 1fr;align-items:stretch}}

/* ── 업무 지시 이미지 첨부 (2026-08-05) ── */
.img-preview-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:2px}
.img-thumb{position:relative;width:64px;height:64px;border:1px solid var(--line);border-radius:8px;overflow:hidden;flex:none}
.img-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.img-thumb button{position:absolute;top:2px;right:2px;width:18px;height:18px;border:0;border-radius:50%;background:rgba(15,23,42,.55);color:#fff;font-size:11px;line-height:1;cursor:pointer;padding:0}
.img-hint{display:block;color:#98a1b3;font-weight:400;margin-top:4px;font-size:11.5px}

/* ── 긴 업무 내용: 목록에서 …로 자르고 본문 클릭으로 전문 보기 ─────────────
   ⚠️ 문자열을 slice 하지 않고 CSS 로 자른다 — 잘라 버리면 검색·복사가 안 되고,
      몇 글자에서 잘라야 하는지는 폰트·화면폭에 따라 달라진다. */
.clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.assignment-card-main h3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.task-copy,.assignment-card-main{cursor:pointer}

/* 상세 다이얼로그 — 전문을 줄바꿈 살려서 보여준다(발주 단가표 같은 내용이 들어온다) */
.task-detail-card{width:min(700px,100%);max-height:88vh;overflow:auto}
.task-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:9px;padding:13px 15px;margin-bottom:14px;border:1px solid var(--line);border-radius:12px;background:#fafbfe}
.task-detail-grid span{display:grid;gap:3px;min-width:0}
.task-detail-grid small{color:#94a3b8;font-size:10px;font-weight:700}
.task-detail-grid b{font-size:12.5px;overflow-wrap:anywhere}
.task-detail-section{margin-bottom:14px}
.task-detail-section>small{display:block;margin-bottom:5px;color:#94a3b8;font-size:10px;font-weight:800;letter-spacing:.04em}
.task-detail-body{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65;font-size:13px;padding:13px 14px;border:1px solid var(--line);border-radius:11px;background:#fff;max-height:46vh;overflow:auto}
body.dark .task-detail-grid{background:#151f34;border-color:#28344b}
body.dark .task-detail-body{background:#121b2e;border-color:#28344b}

/* ── 팀 캘린더 (2026-08-10) ────────────────────────────────────────────────
   업무는 담당자 색 막대로, 일정은 채운 칩으로 — 한눈에 구분되어야 한다. */
.cal-hint{color:#98a1b3;font-size:11.5px}
.cal-chips{margin-bottom:12px;align-items:center}
.cal-chip-sep{width:1px;height:18px;background:var(--line);margin:0 3px}
.cal-chip.member{padding-left:7px}
.cal-chip.member i{width:11px;height:11px;border-radius:50%;flex:none;box-shadow:0 0 0 1px #ffffff80 inset;cursor:pointer}
.cal-chip.member i:hover{transform:scale(1.22)}
.cal-chip.member em{font-style:normal;font-size:10px;color:#98a1b3;margin-left:1px}
.cal-chip.off{opacity:.42;text-decoration:line-through}
.cal-chip.active{border-color:#c3cdf0;background:#f3f6ff}
body.dark .cal-chip.active{background:#1b2540;border-color:#33436b}

/* 업무 막대 — 왼쪽 색 띠로 담당자를 구분한다(채우면 일정과 헷갈린다) */
.cal-task{display:flex;align-items:center;gap:5px;width:100%;text-align:left;border:0;font:inherit;font-size:11px;
  border-radius:6px;padding:2px 6px 2px 4px;margin-top:3px;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;
  background:color-mix(in srgb,var(--mc) 12%,transparent);color:var(--ink)}
.cal-task:hover{background:color-mix(in srgb,var(--mc) 24%,transparent)}
.cal-task i{width:3px;height:12px;border-radius:2px;background:var(--mc);flex:none}
.cal-task b{font-weight:700;flex:none}
.cal-task.done{opacity:.5;text-decoration:line-through}
.cal-more{display:block;width:100%;margin-top:3px;border:0;background:none;font:inherit;font-size:10.5px;color:#8f9bb3;text-align:left;cursor:pointer;padding:1px 4px}
.cal-more:hover{color:var(--blue);text-decoration:underline}
.cal-cell{min-height:104px;display:flex;flex-direction:column}
.cal-cell .d{font-size:11.5px;color:#8593ab}
.cal-cell.today .d{color:var(--blue);font-weight:800}

/* 하루 전체 목록 */
.cal-day-card{width:min(520px,100%);max-height:82vh;overflow:auto}
.cal-day-list{display:grid;gap:5px}
.cal-day-row{display:flex;align-items:center;gap:9px;width:100%;text-align:left;border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 11px;font:inherit;font-size:12.5px;cursor:pointer}
.cal-day-row:hover{border-color:#c3cdf0;background:#f8faff}
.cal-day-row i{width:9px;height:9px;border-radius:50%;flex:none}
.cal-day-row b{margin-right:5px}
body.dark .cal-day-row{background:#121b2e;border-color:#28344b}

/* 색상 선택 팝오버 */
.cal-color-pop{position:absolute;z-index:60;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;box-shadow:0 14px 34px rgba(30,45,80,.18)}
.cal-color-pop small{display:block;margin-bottom:7px;color:#94a3b8;font-size:10.5px;font-weight:700}
.cal-color-pop div{display:flex;gap:6px}
.cal-color-pop button{width:24px;height:24px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0}
.cal-color-pop button.on{border-color:#334155;transform:scale(1.1)}
body.dark .cal-color-pop{background:#141d33;border-color:#28344b}

/* 캘린더 업무 막대 — 텍스트가 셀을 밀어내지 않게 flex 자식을 축소 가능하게 만든다.
   ⚠️ .cal-task 자체에 text-overflow 를 걸어도 안 먹는다(flex 컨테이너다).
      자르는 주체는 제목 span 이고, 그게 min-width:0 이어야 줄어든다. */
.cal-task{min-width:0}
.cal-task>b{max-width:76px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-task>span{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-cell{overflow:hidden}          /* 셀 자체도 넘치는 내용을 가둔다(격자 보호) */

/* 캘린더에서 업무 추가 */
.cal-add-card{width:min(520px,100%)}
.cal-add-card .assignment-form{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.cal-add-notify span{display:inline-flex;align-items:center;gap:7px;font-weight:600;font-size:12px;color:#64748b}
.cal-add-notify input{width:15px;height:15px;accent-color:#2563eb}

/* 캘린더 필터 줄 — 캘린더(용도별) / 업무(팀원) 두 축을 라벨로 구분한다 */
.cal-filter-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:7px}
.cal-filter-row:last-child{margin-bottom:0}
.cal-filter-label{font-size:10.5px;font-weight:800;color:#98a1b3;letter-spacing:.05em;min-width:38px}
.cal-chip.ghost{border-style:dashed;color:#8f9bb3}
.cal-chip.cal-one i{width:9px;height:9px;border-radius:3px}
.cal-chip em{font-style:normal;font-size:10px;color:#98a1b3;margin-left:1px}

/* 관리자: 캘린더 사용 방식 */
.cal-tpl-list{display:grid;gap:9px}
.cal-tpl{display:flex;gap:11px;align-items:flex-start;padding:13px 15px;border:1px solid var(--line);border-radius:12px;cursor:pointer}
.cal-tpl:hover{border-color:#c3cdf0;background:#fafbff}
.cal-tpl.on{border-color:var(--blue);background:#f4f8ff}
.cal-tpl input{margin-top:2px;width:16px;height:16px;accent-color:#2563eb;flex:none}
.cal-tpl span{display:grid;gap:3px}
.cal-tpl b{font-size:13px}
.cal-tpl small{color:#8a94a6;font-size:11.5px;line-height:1.5}
body.dark .cal-tpl.on{background:#172445;border-color:#3a5bbf}

/* classic 템플릿 = 개편 전 모습 그대로.
   칩이 헤더 안에 있으므로 필터 줄의 여백·라벨을 없애고 셀 높이도 원래대로 되돌린다
   (업무 막대가 없어 셀을 키울 이유가 없다). */
.cal-classic .cal-head{align-items:center}
.cal-classic .cal-chips{margin-bottom:0;flex:1}
.cal-filter-row.solo{margin-bottom:0}
.cal-classic .cal-cell{min-height:96px}

/* 드래그 기간 선택 */
.cal-cell.selecting{background:#e8efff!important;box-shadow:inset 0 0 0 1px #9db4f5}
.cal-grid{user-select:none}          /* 드래그 중 텍스트가 잡히면 선택이 끊긴다 */
body.dark .cal-cell.selecting{background:#1d2a4d!important;box-shadow:inset 0 0 0 1px #3a5bbf}

/* 캘린더(부서) 인원 배정 */
.cal-member-pick{display:flex;flex-wrap:wrap;gap:6px;max-height:150px;overflow:auto;padding:9px;border:1px solid var(--line);border-radius:11px}
.cal-member-opt{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--line);border-radius:999px;font-size:12px;font-weight:600;cursor:pointer}
.cal-member-opt:has(input:checked){border-color:var(--blue);background:#eff6ff;color:#1d4ed8}
.cal-member-opt input{width:14px;height:14px;accent-color:#2563eb;margin:0}
body.dark .cal-member-opt:has(input:checked){background:#1b2540;border-color:#3a5bbf;color:#a9bbff}

/* 기간 일정 — 여러 날을 잇는 연속 막대.
   ⚠️ 셀 padding(5px)+border(1px)를 음수 margin 으로 상쇄해 옆 칸 막대와 맞붙인다.
      그래서 .cal-cell 의 overflow:hidden 을 걷어야 한다(막대가 잘리면 다시 끊겨 보인다).
      격자 보호는 .cal-ev / .cal-task>span 의 자체 ellipsis 가 담당한다. */
.cal-cell{overflow:visible}
.cal-ev.pos-start{border-radius:6px 0 0 6px;margin-right:-6px;padding-right:2px}
.cal-ev.pos-mid{border-radius:0;margin-left:-6px;margin-right:-6px;padding-left:6px;padding-right:2px}
.cal-ev.pos-end{border-radius:0 6px 6px 0;margin-left:-6px;padding-left:6px}
/* 막대가 셀 경계를 넘어 겹치므로 위에 오는 쪽이 이겨야 자연스럽다 */
.cal-ev.pos-start,.cal-ev.pos-mid,.cal-ev.pos-end{position:relative;z-index:1}

/* ── 관리자: 계열사별 메뉴 표시 권한 ─────────────────────────────
   .cal-tpl(캘린더 사용 방식)과 같은 카드 리듬. 체크박스를 오른쪽에 두어
   "켜짐/꺼짐" 목록으로 읽히게 한다 */
.menu-vis-list{display:grid;gap:9px}
.menu-vis-row{display:flex;gap:14px;align-items:center;justify-content:space-between;
padding:13px 15px;border:1px solid var(--line);border-radius:12px;cursor:pointer}
.menu-vis-row.on{border-color:var(--blue);background:#f4f8ff}
.menu-vis-row>span{display:grid;gap:3px;min-width:0}
.menu-vis-row b{font-size:13px}
.menu-vis-row small{color:#8a94a6;font-size:11.5px;line-height:1.5}
.menu-vis-row input{width:17px;height:17px;accent-color:#2563eb;flex:none;cursor:pointer}
.menu-vis-foot{display:block;margin-top:11px;font-size:11.5px}
body.dark .menu-vis-row.on{background:#172445;border-color:#3a5bbf}
