:root {font-family:Pretendard,"Noto Sans KR","Malgun Gothic",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#1c2c45;background:#f4f7fb;font-synthesis:none;--blue:#296bd4;--navy:#142440;--edge:#e3eaf3;--muted:#718097;--red:#e04f58;--green:#17a37f;--surface:#fff;}
*{box-sizing:border-box} body{margin:0;font-size:14px;line-height:1.5}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.48;cursor:not-allowed}a{color:var(--blue)}svg{flex-shrink:0}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #82b1ff;outline-offset:2px}
.app-shell{min-height:100vh;display:grid;grid-template-columns:242px minmax(0,1fr)}.sidebar{background:#162740;color:#e9effb;min-height:100vh;position:sticky;top:0;max-height:100vh;display:flex;flex-direction:column;padding:28px 16px 18px;box-shadow:2px 0 10px #0b1b3005}.brand{display:flex;align-items:center;gap:12px;padding:0 10px 30px}.brand-logo{width:42px;height:42px;border-radius:13px;background:#3479e3;display:grid;place-items:center;color:#fff;box-shadow:0 6px 15px #0002}.brand-title{font-weight:800;letter-spacing:-.5px;font-size:18px}.brand-sub{font-size:11px;color:#a2b6d3}.nav-group-title{color:#748aaa;letter-spacing:1.1px;font-size:10px;font-weight:800;margin:20px 12px 8px}.nav-button{border:0;color:#a9b9d2;background:transparent;width:100%;display:flex;align-items:center;gap:12px;text-align:left;padding:13px 15px;border-radius:10px;font-weight:600;transition:.15s}.nav-button:hover{background:#ffffff12;color:#fff}.nav-button.active{color:#fff;background:#3166b2;box-shadow:0 5px 20px #091a351a}.nav-button .nav-count{margin-left:auto;border-radius:20px;background:#cf4754;color:white;font-size:11px;padding:0 8px}.side-bottom{margin-top:auto;padding:15px 9px 6px;border-top:1px solid #ffffff1c}.side-mode{font-size:12px;color:#a0b1cb}.side-account{margin-top:8px;font-size:12px;color:#e1eafb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.side-note{margin-top:16px;color:#788aa8;font-size:10px}.main{min-width:0}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--edge);display:flex;align-items:center;justify-content:space-between;gap:15px;padding:0 34px}.top-title{font-size:15px;font-weight:700}.top-subtitle{font-size:11px;color:#8695ac;margin-top:3px}.top-actions{display:flex;align-items:center;gap:11px}.mini-date{color:#62738e;font-size:12px}.conn{display:flex;align-items:center;gap:6px;color:#46647f;font-size:12px;border:1px solid #e7edf4;background:#f8fafc;border-radius:40px;padding:7px 10px}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#d69e44}.dot.cloud{background:#17a37f}.primary{background:#296bd4;color:white;border:1px solid #296bd4;padding:10px 16px;border-radius:9px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 4px 10px #2565c824;white-space:nowrap}.primary:hover{background:#1c58b5}.secondary{color:#40526c;background:#fff;border:1px solid #dce5f1;padding:9px 15px;border-radius:9px;font-weight:650;display:inline-flex;align-items:center;justify-content:center;gap:8px}.secondary:hover{background:#f7faff}.danger-action{color:#db4450;border-color:#f2c3c8}.content{padding:29px 34px 60px;max-width:1600px;margin:0 auto}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:24px}.eyebrow{font-size:12px;letter-spacing:.8px;color:#5588ce;font-weight:800;margin-bottom:4px}.heading{font-size:27px;line-height:1.25;letter-spacing:-.9px;font-weight:800;margin:0}.heading-caption{color:var(--muted);font-size:13px;margin-top:7px}.page-head-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.mode-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff8e9;border:1px solid #f9e6bf;border-radius:10px;padding:11px 15px;margin-bottom:23px;color:#805b1f;font-size:12px}.mode-banner strong{color:#7c5017}.mode-banner button{color:#7b5119;border:0;background:#fff1c8;border-radius:7px;padding:7px 10px;white-space:nowrap;font-weight:700}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:22px}.stat{background:#fff;border:1px solid #e6edf5;box-shadow:0 4px 14px #1c376108;border-radius:15px;padding:21px 22px;min-height:128px;text-align:left;position:relative}.stat:hover{border-color:#bed3f5}.stat-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.stat-label{font-size:12px;font-weight:700;color:#677891}.stat-icon{height:37px;width:37px;display:grid;place-items:center;border-radius:12px;background:#eaf1fd;color:#386eca}.stat-icon.overdue{background:#fff0f1;color:#df5962}.stat-icon.done{background:#e9f8f2;color:#159c74}.stat-icon.soon{background:#fff5df;color:#cb9225}.stat-value{font-size:31px;letter-spacing:-.7px;font-weight:850;line-height:1.2;font-variant-numeric:tabular-nums}.stat-sub{font-size:11px;color:#9ba9bb;margin-top:6px}.stat.overdue .stat-value{color:#dc4a56}.dash-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(315px,1fr);gap:17px}.panel{background:#fff;border:1px solid #e6edf5;box-shadow:0 4px 14px #1c376109;border-radius:15px;min-width:0}.panel-header{padding:21px 23px 15px;display:flex;align-items:center;justify-content:space-between;gap:10px}.panel-title{margin:0;font-size:16px;font-weight:800;letter-spacing:-.3px}.panel-desc{font-size:11px;color:#8998ae;margin-top:3px}.text-link{border:0;color:#2f6ac2;background:transparent;font-size:12px;font-weight:700}.panel-body{padding:0 23px 20px}.empty{padding:39px 15px;text-align:center;color:#8192a9}.empty-icon{margin:0 auto 10px;height:48px;width:48px;border-radius:15px;background:#eff4fc;display:grid;place-items:center;color:#5a88d7}.empty strong{color:#364d70;display:block;font-size:14px}.empty p{font-size:12px;margin:6px auto 16px;max-width:310px}.action-row{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.task-line{display:flex;align-items:flex-start;gap:12px;border-top:1px solid #edf1f7;padding:15px 0;cursor:pointer}.task-line:first-child{border-top:0}.task-line:hover .task-line-title{color:#296bd4}.check-button{border:1.5px solid #c9d4e3;background:#fff;border-radius:6px;height:20px;width:20px;display:grid;place-items:center;padding:0;margin-top:3px;color:white}.check-button.checked{background:#20a780;border-color:#20a780}.check-button:hover{border-color:#2d79dd}.task-line-main{min-width:0;flex:1}.task-line-title{font-weight:690;color:#2b3d59;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-line-title.done{text-decoration:line-through;color:#96a4b8}.task-line-meta{color:#8c9bb0;font-size:11px;margin-top:5px}.task-line-end{text-align:right;font-size:11px;white-space:nowrap}.red-text{color:#e04f58!important}.muted{color:#8da0b5}.green-text{color:#149a74}.orange-text{color:#bf8720}.pill{display:inline-block;border-radius:6px;padding:4px 8px;font-size:11px;font-weight:700;white-space:nowrap}.pill.processing{background:#eaf1fd;color:#306fce}.pill.waiting{background:#f1f4f7;color:#60738d}.pill.hold{background:#fff1dc;color:#a26f21}.pill.completed{background:#e4f8f0;color:#159f76}.pill.canceled{background:#f0f1f3;color:#8c94a2}.today-pill{background:#eaf1ff;color:#315fc2}.overdue-pill{background:#ffe9e9;color:#d53e4f}.priority-dot{font-size:14px;margin-right:4px}.tiny-calendar{padding:0 20px 20px}.cal-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0 14px}.cal-month{font-size:17px;letter-spacing:-.4px;font-weight:800}.cal-controls{display:flex;gap:5px}.icon-button{background:#fff;border:1px solid #e5ebf3;color:#667895;border-radius:8px;display:grid;place-items:center;width:33px;height:33px}.icon-button:hover{background:#f0f5fd;color:#2864bd}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.cal-dow{text-align:center;color:#8c98aa;font-size:11px;padding:8px 2px;font-weight:800}.cal-dow.sunday{color:#e36565}.cal-cell{border:1px solid #edf1f6;border-radius:9px;padding:7px 6px;min-height:72px;background:#fff;min-width:0;text-align:left}.cal-cell:hover{background:#f7faff}.cal-cell.other{background:#f8fafc;border-color:#f2f4f7;color:#bbc4d1}.cal-cell.today{background:#f0f6ff;border-color:#9ec1fa}.cal-num{font-size:11px;font-weight:760;display:flex;justify-content:space-between;align-items:center;color:#60738b}.cal-num.sunday{color:#d76464}.cal-num .today-label{background:#3570d4;color:#fff;padding:1px 3px;border-radius:4px;font-size:9px}.cal-dots{display:flex;gap:3px;align-items:center;margin-top:10px;flex-wrap:wrap}.cal-dot{width:7px;height:7px;border-radius:50%;background:#2f77d4}.cal-dot.red{background:#ec5963}.cal-dot.green{background:#1baa82}.cal-dot.orange{background:#e9aa34}.cal-more{font-size:10px;color:#8795aa}.legend{display:flex;gap:15px;flex-wrap:wrap;margin-top:15px;font-size:11px;color:#7e8b9d}.legend span{display:flex;align-items:center;gap:6px}
.toolbar{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:15px}.toolbar-left,.toolbar-right{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.search{position:relative}.search input{height:40px;min-width:240px;border:1px solid #dce5f0;border-radius:9px;padding:0 12px 0 38px;background:#fff;color:#293b55;outline:none}.search input:focus{border-color:#6aa3ee;box-shadow:0 0 0 3px #dfeeff}.search-icon{position:absolute;left:13px;top:11px;color:#90a0b5}.select{height:40px;border:1px solid #dce5f0;background:#fff;color:#52647c;border-radius:9px;padding:0 10px;min-width:110px}.data-table{width:100%;border-collapse:collapse;text-align:left;min-width:830px}.table-wrap{overflow:auto;border-radius:0 0 15px 15px}.data-table th{background:#f8faff;padding:12px 15px;color:#6e8097;font-size:11px;white-space:nowrap;font-weight:800;border-bottom:1px solid #e5edf7}.data-table td{padding:13px 15px;font-size:12px;color:#40536f;border-bottom:1px solid #eef2f7;vertical-align:middle}.data-table tbody tr{cursor:pointer}.data-table tbody tr:hover{background:#f7faff}.data-table td .task-title{color:#263c5a;font-size:13px;font-weight:720}.data-table td .task-secondary{color:#93a2b4;font-size:11px;margin-top:3px}.data-table .red-row{background:#fffafb}.data-table .red-row:hover{background:#fff2f2}.data-table .row-number{font-variant-numeric:tabular-nums;color:#8c9db3}.table-footer{border-top:1px solid #e9eff7;padding:13px 18px;color:#9aacbc;font-size:11px}.mobile-task-list{display:none}.mobile-task{padding:15px 17px;border-bottom:1px solid #edf2f8}.mobile-task:last-child{border-bottom:0}.mobile-task-title{font-weight:720;font-size:13px;margin:7px 0;color:#243a58}.mobile-task-meta{font-size:11px;color:#8292a6;display:flex;flex-wrap:wrap;gap:9px;align-items:center}.mobile-task-top{display:flex;justify-content:space-between;gap:6px}.mobile-task-actions{display:flex;align-items:center;gap:8px}.full-calendar{padding:0 20px 23px}.full-calendar .cal-cell{min-height:119px;border-radius:8px;padding:9px}.full-calendar .cal-dots{display:none}.full-calendar .cal-item{display:block;border:0;width:100%;border-radius:4px;background:#e9f1ff;color:#3168b5;text-align:left;font-size:10px;padding:3px 5px;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.full-calendar .cal-item.red{background:#ffeded;color:#d74b55}.full-calendar .cal-item.green{background:#e7f7f0;color:#168d69}.full-calendar .cal-item.orange{background:#fff2dc;color:#96640c}.full-calendar .cal-more{margin-top:4px;display:block}.selected-day-title{font-weight:800;font-size:15px;margin-bottom:6px}.selected-day{margin-top:16px}.selected-day .task-line{padding:11px 0}.single-panel{max-width:960px}.settings-section{padding:22px 25px;border-bottom:1px solid #edf1f6}.settings-section:last-child{border-bottom:0}.settings-head{font-weight:800;font-size:15px;margin-bottom:8px}.settings-desc{color:#71849c;font-size:12px;margin-bottom:14px}.settings-grid{display:grid;grid-template-columns:170px minmax(0,1fr);gap:10px;align-items:center;padding:9px 0}.settings-grid .label{color:#61758e;font-size:12px}.readonly{background:#f7f9fc;border-radius:8px;border:1px solid #e9edf5;padding:10px 12px;color:#3d5270;font-size:12px}.notice{font-size:12px;color:#755520;padding:11px 13px;background:#fff8e9;border-radius:9px;border:1px solid #fae8c4}.ok-notice{background:#edf9f2;color:#147655;border-color:#cfefdd}.error-notice{background:#fff0f1;color:#b92b37;border-color:#ffd6d9}.field{margin-bottom:16px}.field label{display:block;color:#465c77;font-size:12px;font-weight:780;margin-bottom:7px}.field input,.field select,.field textarea{width:100%;background:#fff;border:1px solid #dce5ee;border-radius:9px;color:#253d5c;padding:11px 12px;font-size:13px}.field textarea{min-height:95px;resize:vertical}.field input:focus,.field textarea:focus,.field select:focus{border-color:#5f9ced;outline:3px solid #dceafb}.field small{display:block;color:#95a2b2;font-size:11px;margin-top:5px}.field .check-label{display:flex;align-items:center;gap:8px}.two-cols{display:grid;grid-template-columns:1fr 1fr;gap:13px}.modal-overlay{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;background:#14264097;backdrop-filter:blur(3px);padding:16px;overflow:auto}.modal{background:#fff;border-radius:17px;box-shadow:0 24px 70px #071c3b4d;width:100%;max-width:620px;max-height:calc(100vh - 32px);overflow-y:auto}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;padding:25px 27px 17px;border-bottom:1px solid #ebf0f7;gap:15px}.modal-title{font-size:20px;font-weight:850;margin:0}.modal-subtitle{font-size:12px;color:#91a0b1;margin-top:4px}.modal-content{padding:22px 27px 9px}.modal-foot{padding:15px 27px 23px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.foot-right{display:flex;gap:8px}.close{border:0;background:#f2f5f9;color:#5e708a;width:34px;height:34px;border-radius:9px;font-size:22px;line-height:1;flex-shrink:0}.toast{position:fixed;right:24px;bottom:24px;z-index:60;max-width:360px;padding:14px 19px;background:#1c3657;color:#fff;font-size:13px;border-radius:10px;box-shadow:0 15px 40px #0f2c5344}.toast.error{background:#b73343}.mobile-nav{display:none}.hide-desktop{display:none}.pill-quiet{border:1px solid #e2e9f3;background:#fff;border-radius:20px;padding:6px 12px;color:#647994;font-size:11px;font-weight:700}.callout{background:#f3f7fd;border:1px solid #e1edfb;border-radius:10px;padding:13px 15px;color:#536d8f;font-size:12px}.auth-box{max-width:460px;margin:30px auto;border:1px solid #e6edf5;border-radius:16px;background:#fff;padding:28px}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:7px;background:#f3f6fb;padding:5px;border-radius:9px;margin-bottom:20px}.auth-tab{background:transparent;border:0;border-radius:7px;padding:10px;color:#7e8da0;font-weight:700}.auth-tab.active{background:#fff;color:#2363c1;box-shadow:0 2px 9px #112b4e11}.auth-note{font-size:11px;color:#899bad;margin-top:13px;line-height:1.7}.settings-actions{display:flex;gap:8px;flex-wrap:wrap}.loading{display:inline-block;width:15px;height:15px;border:2px solid #d6e4f7;border-right-color:#2d73d7;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:1150px){.dash-grid{grid-template-columns:1fr}.stats{gap:10px}.stat{padding:16px}.content{padding:24px}.topbar{padding:0 24px}.sidebar{width:206px}.app-shell{grid-template-columns:206px minmax(0,1fr)}.brand-title{font-size:16px}}
@media(max-width:760px){body{font-size:13px;padding-bottom:68px}.app-shell{display:block}.sidebar{display:none}.topbar{height:64px;padding:0 15px;position:sticky;top:0;z-index:9}.top-title{font-size:14px}.top-subtitle{font-size:10px}.top-actions{gap:7px}.top-actions .mini-date{display:none}.top-actions .conn{font-size:10px;padding:5px 8px}.top-actions .primary{font-size:12px;padding:9px 10px}.content{padding:19px 14px 30px}.page-head{margin-bottom:18px}.heading{font-size:23px}.heading-caption{font-size:12px}.eyebrow{font-size:10px}.page-head .page-head-actions{display:none}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:15px}.stat{min-height:112px;padding:14px}.stat-top{margin-bottom:8px}.stat-icon{width:30px;height:30px}.stat-value{font-size:26px}.dash-grid{grid-template-columns:1fr;gap:14px}.panel-header{padding:17px 16px 11px}.panel-body{padding:0 16px 15px}.panel-title{font-size:15px}.task-line{padding:13px 0}.tiny-calendar{padding:0 12px 15px}.cal-cell{min-height:55px;padding:4px}.cal-grid{gap:4px}.cal-more{font-size:9px}.cal-dots{margin-top:6px}.cal-dow{padding:4px 2px}.full-calendar{padding:0 8px 16px}.full-calendar .cal-cell{min-height:87px;padding:5px 4px}.full-calendar .cal-item{font-size:9px;padding:3px 2px;margin-top:4px}.full-calendar .cal-cell .cal-item:nth-of-type(n+3){display:none}.full-calendar .cal-num{font-size:10px}.toolbar{gap:8px}.toolbar-left{width:100%;display:grid;grid-template-columns:minmax(0,1fr) 112px}.search input{min-width:0;width:100%}.toolbar-right{width:100%;display:grid;grid-template-columns:1fr 1fr}.toolbar-right .select{width:100%}.table-wrap{display:none}.mobile-task-list{display:block}.mobile-nav{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;bottom:0;left:0;right:0;height:calc(64px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);z-index:12;border-top:1px solid #e3ebf4;background:#fff;box-shadow:0 -5px 15px #152b4308}.mobile-nav button{border:0;background:none;color:#8799b1;font-size:10px;font-weight:700;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}.mobile-nav button.active{color:#276bd2}.mode-banner{align-items:flex-start;font-size:11px;padding:10px}.mode-banner button{font-size:10px}.modal-overlay{padding:0;align-items:flex-end}.modal{border-radius:17px 17px 0 0;max-height:93dvh}.modal-head{padding:20px 19px 14px}.modal-title{font-size:18px}.modal-content{padding:18px 19px 0}.modal-foot{padding:15px 19px 21px}.two-cols{gap:9px}.settings-section{padding:19px 16px}.settings-grid{grid-template-columns:1fr;gap:6px}.auth-box{padding:21px 17px;margin:18px 0}.toast{left:16px;right:16px;bottom:80px;max-width:none}.hide-mobile{display:none!important}.hide-desktop{display:initial}.selected-day{margin-top:12px}.page-head+.panel{margin-top:12px}}
@media(max-width:380px){.stat{padding:11px}.stat-label{font-size:11px}.stat-icon{height:29px;width:29px}.full-calendar .cal-cell{min-height:75px}.full-calendar .cal-item{font-size:8px}}
@media(max-width:760px){.cal-num .today-label{white-space:nowrap;letter-spacing:-.7px;font-size:8px;padding:1px 2px}.full-calendar .cal-num{gap:1px}}

/* v0.2 · Excel 가져오기 미리보기 */
.import-modal{width:min(920px,calc(100vw - 28px));max-height:92vh;overflow:auto}
.import-selectors{margin-top:18px}
.import-summary{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;border:1px solid #c9dcf8;background:#eff6ff;padding:14px 16px;border-radius:10px;margin:12px 0;color:#183b6b}
.import-summary strong{font-weight:750}
.import-summary div{font-size:12px}
.import-table-wrap{overflow:auto;max-height:325px;border:1px solid #e5eaf2;border-radius:9px;margin:14px 0}
.import-table{min-width:620px;margin:0}
.import-table td{font-size:12px;white-space:nowrap;padding:10px 11px}
.import-table td.import-title{min-width:260px;white-space:normal;overflow-wrap:anywhere}
.import-issues{border:1px solid #f3d7a0;border-radius:9px;background:#fffcf4;padding:12px;margin:12px 0}
.import-issues summary{cursor:pointer;font-weight:700;font-size:12px}
.import-issues ul{padding-left:22px;font-size:12px;line-height:1.7;max-height:180px;overflow:auto}
.import-footnote{font-size:11px;color:#6b7280}
@media(max-width:640px){.import-modal{max-height:95vh}.import-summary{display:block}.import-summary div{margin-top:4px}.import-modal .modal-foot{gap:8px;flex-wrap:wrap}.import-footnote{width:100%}.import-modal .modal-content{padding-bottom:10px}}

/* v0.3 · 개인 일정 및 알림 */
.event-symbol{display:flex;flex:0 0 33px;height:33px;align-items:center;justify-content:center;color:#8456c0;border-radius:10px;background:#f3ebfc}
.purple-text{color:#8555b9;font-size:11px;font-weight:800}
.cal-item.purple{background:#f2eafe!important;color:#774cb2!important}
.cal-dot.purple{background:#9365c4!important}
.legend .cal-dot.purple{background:#9365c4!important}
.event-line{cursor:pointer}
.event-line:hover{background:#fbf8ff}
.upcoming-panel{margin-top:19px}
.calendar-day-actions{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.settings-section .settings-actions button{font-size:12px}
.top-new-event{padding:9px 11px;white-space:nowrap}
@media (max-width:760px){
  .mobile-nav{grid-template-columns:repeat(5,minmax(0,1fr))}
  .mobile-nav button{font-size:9px}
  .top-new-event{padding:8px 9px}
  .top-new-event span{display:none}
  .event-line .task-line-meta{line-height:1.55}
  .calendar-day-actions{gap:9px}
  .calendar-day-actions .text-link{font-size:11px}
}
/* Focus and compact dashboard event cards */
.event-line:focus-visible,.top-new-event:focus-visible{outline:3px solid #8c6bcc;outline-offset:2px}
@media (max-width:760px){.top-actions .primary{padding-left:8px;padding-right:8px}.top-actions .conn{display:none}}
/* v0.3 task progress notes & history */
.task-progress-section{border-top:1px solid #e6edf5;padding:18px 27px 24px}
.task-progress-section h3{font-size:14px;color:#233750;margin:0 0 12px;font-weight:800}
.task-history-item{border:1px solid #e9edf5;border-radius:10px;padding:10px 12px;margin-bottom:8px;color:#445a74;font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}
.history-date{font-size:11px;color:#94a1b2;margin-bottom:5px}
.helper-text{font-size:12px;margin:12px 0}
.panel-header .secondary{white-space:nowrap;flex-shrink:0}
@media(max-width:760px){.task-progress-section{padding:15px 19px 20px}.panel-header .secondary{font-size:11px;padding:9px 10px}}
@media(max-width:520px){.modal .two-cols{grid-template-columns:minmax(0,1fr)}.modal .field input[type="datetime-local"]{min-width:0}}

/* Login persistence maintenance release: stable production URL & non-disruptive update banner */
.origin-notice {display:flex;justify-content:space-between;align-items:center;gap:14px;background:#eef5ff;border:1px solid #bdd6ff;color:#1d3f6a;border-radius:12px;padding:13px 16px;margin-bottom:18px;font-size:13px;line-height:1.5;}
.origin-notice a,.origin-notice button {flex-shrink:0;text-decoration:none;}
@media(max-width:700px){.origin-notice{align-items:stretch;flex-direction:column}.origin-notice a,.origin-notice button{width:100%;text-align:center;}}

/* v0.4 calendar UX patch: every task is rendered in the month grid. The row
   grows with its most populated day, instead of clipping items with CSS. */
.full-calendar .cal-grid{grid-auto-rows:auto;align-items:stretch}
.full-calendar .cal-cell{height:auto;min-height:119px;align-self:stretch;display:flex;flex-direction:column;justify-content:flex-start;overflow:visible}
.full-calendar .cal-num{flex-shrink:0;width:100%}
.full-calendar .cal-item{display:block!important;flex-shrink:0;overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere;line-height:1.45;min-height:0;padding:5px 6px}
.cal-controls{display:flex;align-items:center;flex-wrap:wrap}
.calendar-privacy-toggle{border:1px solid #c6d8f3;background:#eef5ff;color:#245b9d;border-radius:8px;padding:8px 11px;font-weight:750;font-size:12px;cursor:pointer;white-space:nowrap;margin-right:5px}
.calendar-privacy-toggle.is-hidden{border-color:#a7bad3;background:#f3f6fa;color:#314961}
.calendar-privacy-toggle:focus-visible{outline:3px solid #87b6f2;outline-offset:2px}
.calendar-visibility-hint{font-size:11px;color:#617692;margin-top:13px}
@media(max-width:760px){
  .full-calendar .cal-cell{min-height:90px;padding:5px 4px}
  .full-calendar .cal-item{display:block!important;font-size:9px;line-height:1.3;padding:3px 2px;margin-top:4px;white-space:normal;overflow-wrap:anywhere}
  .calendar-privacy-toggle{font-size:10px;padding:7px 8px}
  .full-calendar .cal-bar{align-items:flex-start;gap:7px}
  .cal-controls{justify-content:flex-end}
}
@media(max-width:380px){
  .full-calendar .cal-item{font-size:8px}
  .calendar-privacy-toggle{font-size:9px;padding:6px}
}

/* Android: the native WebView root is inset by the real system-bar/window-cutout dimensions.
   Do not apply the browser env() inset to the fixed tab bar a second time. */
@media (max-width:760px) {
  html.mwp-native-android body { padding-bottom: 68px; }
  html.mwp-native-android .mobile-nav {
    bottom: 0;
    height: 64px;
    padding-bottom: 0;
  }
  html.mwp-native-android .topbar { top: 0; }
  html.mwp-native-android .modal-overlay { inset: 0; }
  html.mwp-native-android .modal { max-height: min(93dvh, 100%); }
}
/* v0.6: team-only sharing and primary-display reminder controls */
.workspace-picker{display:flex;align-items:center;gap:7px;color:#617797;font-size:12px;font-weight:800}.workspace-picker select{max-width:210px;min-width:140px;border:1px solid #d0dfef;border-radius:9px;padding:9px 10px;color:#223c61;background:#fff;font-size:12px;font-weight:750}
.team-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.team-grid .settings-section{padding:24px}.team-workspace-list{display:flex;flex-direction:column;gap:8px;margin:16px 0}.team-workspace{display:flex;justify-content:space-between;align-items:center;text-align:left;gap:12px;background:#fff;padding:13px 14px;border:1px solid #dce6f5;border-radius:10px;color:#244066}.team-workspace.selected{background:#eaf2ff;border-color:#8caee5;font-weight:800}.team-workspace>span:last-child{color:#577ab7;font-size:11px}.team-mini-form{border-top:1px solid #e5ebf3;margin-top:17px;padding-top:16px;display:flex;flex-direction:column;gap:8px}.team-mini-form label{font-size:13px;font-weight:800}.team-mini-form small{font-size:11px;color:#8191a8}.team-inline{display:flex;gap:8px;align-items:center}.team-inline input{min-width:0;flex:1;border:1px solid #d0dfef;border-radius:9px;padding:12px}.team-members{margin-top:16px}.team-member{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #edf1f7;padding:12px 0}.team-member strong{font-size:13px;overflow-wrap:anywhere}.team-member small{display:block;color:#8393a7;font-size:11px}.mwp-alarm-overlay{z-index:99999;position:fixed;inset:0;background:#081f4380;display:grid;place-items:center;padding:20px}.mwp-alarm-card{width:min(700px,92vw);background:white;border-radius:26px;padding:44px 42px;box-shadow:0 18px 90px #071a3f55;text-align:center}.mwp-alarm-card h2{font-size:clamp(25px,3vw,40px);margin:0 0 14px;color:#183b71;overflow-wrap:anywhere}.mwp-alarm-card p{font-size:clamp(17px,2vw,24px);margin:0 0 26px;color:#415f86}
@media(max-width:1100px){.top-actions .mini-date{display:none}.workspace-picker span{display:none}.workspace-picker select{max-width:160px;min-width:100px}}@media(max-width:760px){.team-grid{grid-template-columns:1fr}.team-inline{flex-wrap:wrap}.top-actions .workspace-picker select{max-width:130px;min-width:95px;font-size:10px;padding:6px}.top-actions .top-new-event{display:none}}@media(max-width:440px){.top-actions .workspace-picker select{max-width:110px}.top-actions .primary{font-size:10px}.team-grid .settings-section{padding:17px}}

@media(max-width:760px){.mobile-nav{grid-template-columns:repeat(6,minmax(0,1fr))}}

/* v0.7.1: calendar keyboard step hint, without restricting minute-level input. */
.input-hint{font-size:11px;color:#6b7f97;line-height:1.35;margin-top:5px}

/* v0.8: compact weekend columns keep more room for the five working days.
   The grid holds weekday headers and the day buttons together for alignment. */
.full-calendar .cal-grid{
  grid-template-columns:minmax(0,.64fr) repeat(5,minmax(0,1.144fr)) minmax(0,.64fr);
}
.full-calendar .cal-cell.weekend{background:#f9fafc;padding-inline:5px}
.full-calendar .cal-cell.weekend.today{background:#f0f6ff}
.full-calendar .cal-dow.saturday{color:#607db0}
.full-calendar .cal-cell.weekend .cal-item{font-size:10px;padding-inline:4px}
.full-calendar .cal-item.orange{background:#ffebcb!important;color:#a3540b!important;border-left:3px solid #ed911e!important;font-weight:750}
.full-calendar .cal-cell.today .cal-item.orange{box-shadow:inset 0 0 0 1px #ffcb83}
.calendar-privacy-toggle.is-hidden{background:#fff3e4;border-color:#edb46b;color:#99500c}
@media(max-width:760px){
  .full-calendar .cal-grid{grid-template-columns:minmax(0,.82fr) repeat(5,minmax(0,1.072fr)) minmax(0,.82fr)}
  .full-calendar .cal-cell.weekend{padding-inline:2px}
  .full-calendar .cal-cell.weekend .cal-item{font-size:8px;padding-inline:2px}
}

/* v0.8.1: distinct state colors, strong overdue cue, and weekly PowerPoint editor */
.pill.waiting{background:#e5f0ff;color:#2766af}
.pill.processing{background:#dcf6f0;color:#127e70}
.pill.hold{background:#eef0f3;color:#606e7d}
.pill.canceled{background:#f1f2f4;color:#8490a0} /* legacy records only */
.full-calendar .cal-item.waiting{background:#e5f0ff!important;color:#225eb5!important}
.full-calendar .cal-item.processing{background:#dcf8ef!important;color:#0d806a!important}
.full-calendar .cal-item.hold{background:#e9ebef!important;color:#667281!important;border-left:3px solid #97a3b2!important}
.full-calendar .cal-item.red{background:#ffe2e3!important;color:#bd2437!important;border-left:4px solid #ec3b4f!important;box-shadow:0 0 0 1px #ffc1c9;font-weight:850}
.full-calendar .cal-cell.today .cal-item.red{box-shadow:inset 0 0 0 1px #f6a6ae,0 0 0 1px #ffb4bd}
.cal-dot.waiting{background:#427ecf}.cal-dot.processing{background:#1ba58a}.cal-dot.hold{background:#87929e}
.cal-dot.red{background:#e43b4e}
.data-table .red-row td:first-child{border-left:3px solid #e54654}
.data-table .red-row .task-title{color:#b82f43;font-weight:850}
.mobile-task:has(.overdue-pill){background:#fff8f9;border-left:3px solid #e54654}
.top-weekly-report{display:inline-flex;gap:6px;align-items:center;white-space:nowrap}
.weekly-report-modal{max-width:1060px}
.weekly-report-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:13px}
.weekly-report-stats>div{border:1px solid #d8e5f7;background:#f1f6fe;padding:13px 15px;border-radius:10px;display:flex;flex-direction:column;gap:3px}
.weekly-report-stats strong{font-size:15px;color:#1e457a}
.weekly-report-stats span{font-size:12px;color:#6783a8}
.weekly-report-scope{padding:5px 0 14px;color:#5a6e87;font-size:12px}
.weekly-report-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.weekly-report-columns .field textarea{min-height:275px;line-height:1.6;font-size:12px;white-space:pre-wrap;resize:vertical}
.weekly-report-modal .modal-content{padding-bottom:18px}
@media(max-width:1150px){.top-weekly-report{padding:8px;font-size:11px}}
@media(max-width:900px){.top-weekly-report span{display:none}.top-weekly-report{padding:8px}}
@media(max-width:760px){.weekly-report-columns,.weekly-report-stats{grid-template-columns:1fr}.top-weekly-report{display:inline-flex}.top-weekly-report svg{width:17px;height:17px}.weekly-report-modal .modal-head{padding:17px}.weekly-report-modal .modal-content{padding:17px}.weekly-report-modal .modal-foot{padding:12px 17px}}

/* v0.8.2: visually separate waiting and completed tasks at a glance. */
.pill.waiting{background:#d9eaff!important;color:#174eac!important;border:1px solid #89b4ed}
.pill.completed{background:#d7f5de!important;color:#14683c!important;border:1px solid #68c98d;font-weight:850}
.full-calendar .cal-item.waiting{background:#daeafe!important;color:#1851a7!important;border-left:4px solid #377dd1!important;font-weight:700}
.full-calendar .cal-item.green{background:#d4f3db!important;color:#126b3b!important;border-left:4px solid #22a05b!important;font-weight:800}
.cal-dot.waiting{background:#2c73c5!important}.cal-dot.green{background:#22995a!important}
.weekly-report-team-row{display:flex;align-items:flex-end;gap:14px;margin:12px 0 8px}
.weekly-report-team-row>.field{flex:0 0 260px;max-width:100%}
.weekly-team-hint{color:#66809d;font-size:12px;line-height:1.6;flex:1;padding-bottom:3px}
@media(max-width:760px){.weekly-report-team-row{display:block}.weekly-report-team-row>.field{width:100%}.weekly-team-hint{margin-top:7px}}

.tiny-calendar .cal-item.waiting{background:#daeafe!important;color:#1851a7!important;border-left:3px solid #377dd1!important}
.tiny-calendar .cal-item.green{background:#d4f3db!important;color:#126b3b!important;border-left:3px solid #22a05b!important}


/* v0.8.3: dashboard uses equal-width work queue and calendar on desktop.
   For narrow tablets and phones, keep the original single-column layout. */
@media (min-width:1151px){
  .dash-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
}

/* Clear, noncompeting progress colors: waiting blue, in progress yellow,
   on hold grey, completed muted green. The urgent overdue and D-Day rules
   remain separate and continue to take precedence. */
.pill.processing{background:#fff1bf!important;color:#88600e!important;border:1px solid #ebd076!important;font-weight:700}
.full-calendar .cal-item.processing,
.tiny-calendar .cal-item.processing{background:#fff2c9!important;color:#885d00!important;border-left:3px solid #deb240!important;font-weight:650}
.cal-dot.processing{background:#dfa82e!important}

/* Completed tasks are informational, not urgent: no thick accent, bold text,
   or vivid green emphasis. Distinct enough from blue waiting tasks. */
.pill.completed{background:#edf5ef!important;color:#52765e!important;border:1px solid #dbe9de!important;font-weight:600!important}
.full-calendar .cal-item.green,
.tiny-calendar .cal-item.green{background:#eff6f0!important;color:#60826a!important;border-left:0!important;font-weight:400!important;box-shadow:none!important}
.cal-dot.green{background:#9dbfa7!important}

/* v0.8.3 verified: completed deadline/label should be as quiet as the status pill.
   Urgent overdue and D-Day badges retain their existing contrast and weight. */
.done-text{color:#718d7b!important;font-weight:400!important}

/* v0.8.4: automatic overdue status badge, computed on each render.
   A saved waiting / processing / hold state never becomes a new DB enum. */
.pill.overdue-status{background:#ffe5e9!important;color:#b9273e!important;border:1px solid #f6b6bf!important;font-weight:800!important}
.mobile-task.overdue-task{background:#fff8f9;border-left:3px solid #e54654}
.field small.overdue-edit-note{color:#a93a49;margin-top:8px;line-height:1.6}

/* v0.8.5: vivid lemon-yellow progress, clearly distinct from warm orange D-Day.
   Overdue red retains priority; completed remains subtle green. */
.pill.processing{background:#FFEA00!important;color:#403600!important;border:1px solid #B99E00!important;font-weight:750!important}
.full-calendar .cal-item.processing,
.tiny-calendar .cal-item.processing{background:#FFF35C!important;color:#524400!important;border-left:3px solid #E3C600!important;font-weight:700!important}
.cal-dot.processing{background:#F5DD00!important;box-shadow:0 0 0 1px #AD9500!important}

/* v0.8.6 — Safe concurrent edits and visible sync failures */
.sync-notice{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px;border-radius:11px;border:1px solid #e7a1a6;background:#fff3f3;color:#97353b;margin-bottom:17px;font-size:12px;line-height:1.55}
.sync-notice strong{font-weight:850}.sync-notice button{flex-shrink:0;border-color:#e8b6ba;color:#933a40;background:#fff}.sync-previous{white-space:nowrap}
.sync-mini.is-error{color:#b13947;font-weight:750}
.task-conflict{border:1px solid #e8b970;background:#fff9ee;color:#7e4e17;border-radius:12px;padding:14px 15px;margin-bottom:17px;font-size:12px;line-height:1.6}
.task-conflict>strong{font-size:14px;color:#87521c}.task-conflict p{margin:7px 0 10px}.task-conflict-info{margin-top:9px;background:#fffdfa;border:1px solid #f0deba;border-radius:7px;padding:9px 11px;color:#70512b}
.task-conflict details{margin-top:10px}.task-conflict summary{cursor:pointer;font-weight:800}.task-conflict-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.task-conflict-actions .secondary{font-size:12px;border-color:#e5c78f;color:#75481c}.task-conflict-actions .conflict-overwrite{background:#fff0d8;border-color:#ddaa59;color:#8a441a}.conflict-detail{white-space:pre-wrap;overflow-wrap:anywhere}
@media(max-width:760px){.sync-notice{flex-direction:column;align-items:stretch}.sync-notice button{justify-content:center}.task-conflict-actions{flex-direction:column}.task-conflict-actions button{width:100%}}

/* v0.8.7 · independent date / AM-PM / hour / minute controls */
.date-time-parts{display:grid;grid-template-columns:minmax(155px,1.65fr) minmax(84px,.72fr) minmax(70px,.62fr) minmax(80px,.64fr);gap:7px;align-items:center}
.date-time-parts input,.date-time-parts select{min-width:0;width:100%;max-width:100%;font:inherit}
.date-time-field .input-hint{font-size:11px;line-height:1.5;margin-top:6px}
/* v0.8.7 · organizational directory and company administration */
.org-board{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}
.org-team{background:#fff;border:1px solid #dce7f3;border-radius:14px;box-shadow:0 3px 15px rgba(27,69,108,.06);padding:18px}
.org-team h2{font-size:16px;color:#23496f;display:flex;justify-content:space-between;align-items:center;margin:0 0 13px}
.org-team h2 span{font-size:12px;color:#7890a5;font-weight:500}
.org-people{display:grid;gap:9px}
.org-person{background:#f8fbff;border:1px solid #e5edf7;padding:12px 13px;border-radius:10px;overflow-wrap:anywhere}
.org-person-head{display:flex;gap:10px;justify-content:space-between;align-items:baseline}
.org-person-head strong{font-size:14px;color:#243e57}.org-person-head span{font-size:12px;color:#5c7083}
.org-person-email{font-size:12px;color:#627e97;margin-top:5px}.org-lead{display:inline-block;background:#dceafe;color:#22578b;font-size:11px;border-radius:5px;padding:3px 7px;margin-top:7px;font-weight:700}
.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.admin-form{display:grid;gap:8px}.admin-form>button{justify-self:start}
.admin-leads{display:grid;gap:8px;max-height:420px;overflow:auto}.admin-lead-item{border:1px solid #e6eefa;background:#f8faff;border-radius:9px;padding:9px 10px;display:flex;gap:12px;align-items:center;justify-content:space-between}
.admin-lead-item strong{font-size:12px;color:#31526d}.admin-lead-item small{display:block;margin-top:3px;font-size:11px;color:#6b8199}.admin-lead-item button{white-space:nowrap;font-size:11px}
.admin-staff-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(265px,1fr));gap:12px;margin-top:16px}
.admin-staff-card{border:1px solid #dbe6f3;border-radius:12px;background:#f9fbfe;padding:13px}.staff-email{color:#687f96;font-size:12px;margin-bottom:11px;overflow-wrap:anywhere}.staff-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}.staff-actions button{font-size:12px}
.password-form{max-width:480px;display:grid;gap:8px;margin-top:12px}.password-form button{justify-self:start}
.password-notice{border:1px solid #efcf8b;background:#fff9e9;color:#704f16;border-radius:10px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px;margin-bottom:16px;font-size:12px}.password-notice strong{font-size:13px}.password-notice button{flex-shrink:0}
.admin-inline-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}
@media(max-width:1050px){.admin-grid{grid-template-columns:1fr}}
@media(max-width:760px){.date-time-parts{grid-template-columns:minmax(0,1fr) minmax(0,.65fr);gap:8px}.org-board{grid-template-columns:1fr}.admin-staff-grid{grid-template-columns:1fr}.admin-lead-item{align-items:flex-start;flex-direction:column}.password-notice{align-items:stretch;flex-direction:column}.password-notice button{width:100%}}
.staff-reset-box{margin-top:12px;padding:12px;border-radius:9px;border:1px solid #d9c398;background:#fff9ef;display:grid;gap:6px}.staff-reset-box .field{margin:0}.staff-reset-box button{justify-self:start}

/* v0.8.7: complete date-time rows without horizontal clipping in edit modal */
.date-time-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:11px;margin:2px 0 14px}
.date-time-grid>.field{min-width:0}
