:root{--bg:#fbf4ec;--card:#ffffff;--text:#23201c;--text-secondary:#7c756b;--separator:rgba(40,30,15,0.08);--blue:#0071e3;--blue-hover:#0077ed;--green:#2e9e6b;--orange:#d98a2b;--gray-fill:#f3ede4;--serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,"Times New Roman",serif}*{margin:0;padding:0;box-sizing:border-box}body,html{min-height:100%}body{background-color:var(--bg);background-image:radial-gradient(560px 480px at 8% 0,rgba(150,182,232,.36),transparent 62%),radial-gradient(680px 560px at 94% 10%,rgba(160,190,236,.26),transparent 60%),radial-gradient(640px 620px at 50% 116%,rgba(150,186,236,.32),transparent 60%);background-attachment:fixed;background-repeat:no-repeat;color:var(--text);font-family:SF Pro Display,SF Pro Text,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:transparent}.login-card{width:100%;max-width:400px;background:var(--card);border-radius:22px;padding:48px 40px;box-shadow:0 8px 40px rgba(40,30,15,.08)}.admin-topbar .brand,.login-card .brand{display:inline-flex;align-items:center;gap:8px;font-size:11.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-secondary);border:1px solid var(--separator);border-radius:999px;padding:5px 13px 5px 8px;margin-bottom:16px}.login-card h1{font-size:28px;font-weight:600;letter-spacing:-.02em;margin-bottom:8px}.login-card .sub{color:var(--text-secondary);font-size:15px;margin-bottom:32px}.field{margin-bottom:14px}.field label{display:block;font-size:13px;font-weight:500;color:var(--text-secondary);margin-bottom:6px}.field input{width:100%;background:var(--card);border:1px solid #d2d2d7;border-radius:12px;padding:13px 15px;font-size:16px;color:var(--text);outline:none;transition:border-color .15s,box-shadow .15s}.field input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,113,227,.15)}.login-error{background:#fff2f2;color:#d70015;border-radius:12px;padding:11px 15px;font-size:14px;margin-bottom:16px}.btn-primary{width:100%;background:var(--blue);color:#fff;border:none;border-radius:980px;padding:13px;font-size:16px;font-weight:500;cursor:pointer;margin-top:10px;transition:background .15s}.btn-primary:hover{background:var(--blue-hover)}.btn-primary:disabled{opacity:.5;cursor:default}.app-shell{display:flex;min-height:100vh}.sidebar{width:250px;flex-shrink:0;background:rgba(255,253,250,.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-right:1px solid var(--separator);padding:28px 16px 20px;display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;height:100vh}.sidebar-brand{padding:0 12px 24px}.sidebar-brand .brand-label{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary);margin-bottom:4px}.brand-logo{display:block;height:22px;width:auto}.admin-topbar .brand .brand-logo,.login-card .brand .brand-logo{height:17px}.sidebar-brand .brand-company{font-size:17px;font-weight:600;letter-spacing:-.01em;color:var(--text);line-height:1.25}.sidebar-nav{display:flex;flex-direction:column;gap:2px}.nav-item{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:10px;font-size:15px;font-weight:500;color:var(--text);transition:background .12s}.nav-item:hover{background:#f2f2f4;text-decoration:none}.nav-item.active{background:#eef0f2;color:var(--blue)}.nav-icon{position:relative;display:flex;align-items:center;color:var(--text-secondary)}.nav-item.active .nav-icon{color:var(--blue)}.nav-label{flex:1 1}.nav-dot{position:absolute;top:-3px;right:-3px;width:9px;height:9px;background:#ff3b30;border-radius:50%;border:2px solid var(--card)}.nav-badge{flex-shrink:0;min-width:19px;height:19px;padding:0 6px;border-radius:999px;background:#ff3b30;color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.sidebar-footer{margin-top:auto;padding:8px 12px 0}.main-content{flex:1 1;min-width:0;background:transparent}.page{max-width:720px;margin:0 auto;padding:56px 40px 80px}.page-header{margin-bottom:32px}.page-header h1{font-size:34px;font-weight:600;letter-spacing:-.025em;line-height:1.15}.page-sub{color:var(--text-secondary);font-size:16px;margin-top:8px}.btn-logout{background:none;border:none;color:var(--blue);font-size:15px;font-weight:400;cursor:pointer;padding:6px 0;white-space:nowrap;font-family:inherit}.btn-logout:hover{text-decoration:underline}.card{background:var(--card);border-radius:20px;padding:32px;margin-bottom:16px;box-shadow:0 2px 24px rgba(40,30,15,.05)}.card h2{font-size:19px;font-weight:600;letter-spacing:-.015em;margin-bottom:22px}.progress-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:16px}.progress-percent{font-family:var(--serif);font-size:60px;font-weight:600;letter-spacing:-.02em;line-height:1;color:var(--text)}.progress-count{color:var(--text-secondary);font-size:15px}.progress-bar{height:6px;background:#e8e8ed;border-radius:999px;overflow:hidden}.progress-bar .fill{height:100%;border-radius:999px;background:var(--blue);transition:width .4s ease}.progress-hint{margin-top:16px;color:var(--text-secondary);font-size:15px}.progress-hint strong{color:var(--text);font-weight:600}.step{display:flex;gap:16px;padding:18px 0;border-bottom:1px solid var(--separator)}.step:last-child{border-bottom:none;padding-bottom:0}.step:first-of-type{padding-top:0}.step-icon{flex-shrink:0;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;margin-top:2px}.step-icon.done{background:var(--green);color:#fff}.step-icon.in_progress{background:var(--orange);color:#fff}.step-icon.pending{background:transparent;border:1.5px solid #c7c7cc;color:transparent}.step-body{flex:1 1;min-width:0}.step-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.step-title{font-size:16px;font-weight:600;letter-spacing:-.01em}.step.pending .step-title{color:var(--text-secondary);font-weight:500}.step-desc{font-size:14px;margin-top:3px}.badge,.step-desc{color:var(--text-secondary)}.badge{font-size:13px;font-weight:500;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.badge:before{content:"";width:7px;height:7px;border-radius:50%;background:#c7c7cc}.badge.done{color:var(--text)}.badge.done:before{background:var(--green)}.badge.in_progress{color:var(--text)}.badge.in_progress:before{background:var(--orange)}.update{padding:16px 0;border-bottom:1px solid var(--separator)}.update:last-child{border-bottom:none;padding-bottom:0}.update:first-of-type{padding-top:0}.update-date{font-size:13px;font-weight:500;color:var(--text-secondary);margin-bottom:3px}.update-message{font-size:15px;color:var(--text)}.empty-note{color:var(--text-secondary);font-size:15px}.day-row{display:flex;gap:24px;padding:18px 0;border-bottom:1px solid var(--separator)}.day-row:first-of-type{padding-top:0}.day-row:last-child{border-bottom:none;padding-bottom:0}.day-label{flex-shrink:0;width:110px}.day-weekday{font-size:15px;font-weight:600;color:var(--text);text-transform:capitalize}.day-date{font-size:13px;color:var(--text-secondary);margin-top:2px}.day-items{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:12px}.day-empty{font-size:14px;color:#b0b0b6;padding-top:1px}.plan-item{display:flex;align-items:center;gap:10px 12px;flex-wrap:wrap;padding:12px 14px;border:1px solid var(--separator);border-radius:14px;background:var(--card);transition:border-color .15s,background .15s}.plan-item.approved{border-color:#bfe6cf;background:#f2fbf6}.plan-actions{margin-left:auto;display:flex;align-items:center;gap:8px;flex-shrink:0}.approved-badge{display:inline-flex;align-items:center;gap:4px;color:var(--green);font-size:13px;font-weight:600}.mini-btn{border:1px solid #d2d2d7;background:var(--card);color:var(--text);border-radius:980px;padding:6px 15px;font-size:13px;font-weight:500;cursor:pointer;font-family:inherit;transition:border-color .12s,background .12s,color .12s}.mini-btn:hover{border-color:#b0b0b6}.mini-btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.mini-btn.primary:hover{background:var(--blue-hover);border-color:var(--blue-hover)}.mini-btn.subtle{border-color:transparent;color:var(--text-secondary);padding:6px 10px}.mini-btn.subtle:hover{color:var(--text);border-color:transparent}.plan-item.editing{align-items:stretch}.plan-edit-form{display:flex;flex-direction:column;gap:10px;width:100%}.plan-edit-form textarea{width:100%;border:1px solid #d2d2d7;border-radius:12px;padding:10px 12px;font-size:14px;font-family:inherit;color:var(--text);resize:vertical;outline:none;transition:border-color .15s,box-shadow .15s}.plan-edit-form textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,113,227,.15)}.plan-edit-actions{display:flex;gap:8px}.channel-chip{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;background:var(--gray-fill);border-radius:8px;padding:3px 10px;font-size:13px;font-weight:500;color:var(--text)}.channel-dot{width:7px;height:7px;border-radius:50%}.plan-content{flex:1 1;min-width:140px;font-size:15px;color:var(--text)}.card-chat{padding:0;overflow:hidden}.chat{display:flex;flex-direction:column;height:62vh;min-height:420px}.chat-messages{flex:1 1;overflow-y:auto;padding:24px;gap:14px}.chat-messages,.msg{display:flex;flex-direction:column}.msg{max-width:78%}.msg.client{align-self:flex-end;align-items:flex-end}.msg.admin{align-self:flex-start;align-items:flex-start}.bubble{padding:10px 15px;border-radius:20px;font-size:15px;line-height:1.4;white-space:pre-wrap;word-break:break-word}.msg.client .bubble{background:var(--blue);color:#fff;border-bottom-right-radius:6px}.msg.admin .bubble{background:#e9e9eb;color:var(--text);border-bottom-left-radius:6px}.msg-time{font-size:11px;color:var(--text-secondary);margin-top:4px;padding:0 6px}.chat-form{display:flex;gap:10px;padding:16px;border-top:1px solid var(--separator);background:var(--card)}.chat-form input{flex:1 1;min-width:0;background:var(--card);border:1px solid #d2d2d7;border-radius:980px;padding:11px 18px;font-size:15px;color:var(--text);outline:none;transition:border-color .15s,box-shadow .15s;font-family:inherit}.chat-form input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,113,227,.15)}.chat-form button{flex-shrink:0;background:var(--blue);color:#fff;border:none;border-radius:980px;padding:0 22px;font-size:15px;font-weight:500;cursor:pointer;font-family:inherit;transition:background .15s}.chat-form button:hover:not(:disabled){background:var(--blue-hover)}.chat-form button:disabled{opacity:.4;cursor:default}.admin-wrap{max-width:820px;margin:0 auto;padding:48px 40px 80px}.admin-topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:28px}.admin-topbar .brand{font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary);margin-bottom:6px}.admin-topbar h1{font-size:32px;font-weight:600;letter-spacing:-.025em;line-height:1.15}.back-link{font-size:14px;color:var(--text-secondary);display:inline-block;margin-bottom:8px}.back-link:hover{color:var(--blue);text-decoration:none}.admin-banner{border-radius:12px;padding:12px 16px;font-size:14px;font-weight:500;margin-bottom:20px}.admin-banner.error{background:#fff2f2;color:#d70015}.admin-banner.ok{background:#e8f7ef;color:var(--green)}.client-list{display:flex;flex-direction:column}.client-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0;border-bottom:1px solid var(--separator);color:var(--text)}.client-row:last-child{border-bottom:none}.client-row:hover{text-decoration:none}.client-row:hover .client-name{color:var(--blue)}.client-name{font-size:16px;font-weight:600;transition:color .12s}.client-meta{font-size:13px;color:var(--text-secondary);margin-top:2px}.client-progress{display:flex;align-items:center;gap:10px;flex-shrink:0}.mini-bar{width:90px;height:6px;background:#e8e8ed;border-radius:999px;overflow:hidden}.mini-fill{height:100%;background:var(--blue);border-radius:999px}.client-percent{font-size:14px;font-weight:600;color:var(--text-secondary);width:38px;text-align:right}.admin-form .form-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}.field select{width:100%;background:var(--card);border:1px solid #d2d2d7;border-radius:12px;padding:12px 14px;font-size:15px;color:var(--text);outline:none;font-family:inherit}.field select:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,113,227,.15)}.btn-inline{width:auto;margin-top:16px;padding:11px 22px}.add-form{margin-top:22px;padding-top:22px;border-top:1px solid var(--separator)}.admin-steps{display:flex;flex-direction:column}.admin-step{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px 0;border-bottom:1px solid var(--separator);flex-wrap:wrap}.admin-step:first-child{padding-top:0}.admin-step-main{flex:1 1;min-width:220px}.admin-step-title{font-size:15px;font-weight:600}.admin-step-desc{font-size:13px;color:var(--text-secondary);margin-top:2px}.admin-step-controls{display:flex;align-items:center;gap:8px}.status-group{display:inline-flex;background:var(--gray-fill);border-radius:10px;padding:3px;gap:2px}.status-btn{border:none;background:transparent;color:var(--text-secondary);font-size:13px;font-weight:500;padding:6px 11px;border-radius:8px;cursor:pointer;font-family:inherit;transition:background .12s,color .12s}.status-btn:hover{color:var(--text)}.status-btn.active{background:var(--card);color:var(--text);box-shadow:0 1px 2px rgba(0,0,0,.08)}.status-btn.done.active{color:var(--green)}.status-btn.in_progress.active{color:var(--orange)}.btn-delete{border:none;background:transparent;color:#c7c7cc;font-size:15px;line-height:1;cursor:pointer;padding:8px;border-radius:8px;transition:color .12s,background .12s}.btn-delete:hover{color:#d70015;background:#fff2f2}.admin-plan{display:flex;flex-direction:column}.admin-plan-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--separator)}.admin-plan-row:first-child{padding-top:0}.admin-plan-date{flex-shrink:0;width:92px;font-size:13px;font-weight:600;color:var(--text);text-transform:capitalize}.admin-plan-channel{flex-shrink:0;background:var(--gray-fill);border-radius:8px;padding:3px 10px;font-size:12.5px;font-weight:500}.admin-plan-content{flex:1 1;min-width:0;font-size:14px}.admin-updates{display:flex;flex-direction:column}.admin-update-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1px solid var(--separator)}.admin-update-row:first-child{padding-top:0}.card-chat-head{padding:24px 28px 4px}.card-chat-head h2{margin-bottom:0}.request-list{display:flex;flex-direction:column;gap:12px}.request-item{border:1px solid var(--separator);border-radius:14px;padding:14px 16px;transition:border-color .15s,background .15s}.request-item.done{border-color:#bfe6cf;background:#f2fbf6}.request-top{gap:12px}.request-check,.request-top{display:flex;align-items:center}.request-check{flex-shrink:0;width:26px;height:26px;border-radius:50%;border:1.5px solid #c7c7cc;justify-content:center;font-size:14px;font-weight:700;color:transparent}.request-item.done .request-check{background:var(--green);border-color:var(--green);color:#fff}.request-main{flex:1 1;min-width:0}.request-title{font-size:15px;font-weight:600}.request-item.done .request-title,.request-reply{color:var(--text-secondary)}.request-reply{font-size:13.5px;margin-top:3px}.request-reply-label{font-weight:600;color:var(--blue)}.request-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.request-ask-form{display:flex;flex-direction:column;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--separator)}.request-ask-form input{width:100%;border:1px solid #d2d2d7;border-radius:12px;padding:10px 12px;font-size:14px;font-family:inherit;color:var(--text);outline:none;transition:border-color .15s,box-shadow .15s}.request-ask-form input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,113,227,.15)}.request-ask-actions{display:flex;gap:8px}.admin-requests{display:flex;flex-direction:column}.admin-request-row{display:flex;align-items:flex-start;gap:12px;padding:14px 0;border-bottom:1px solid var(--separator)}.admin-request-row:first-child{padding-top:0}.req-status{flex-shrink:0;font-size:12.5px;font-weight:600;border-radius:8px;padding:3px 10px;white-space:nowrap;margin-top:1px}.req-status.done{background:#e8f7ef;color:var(--green)}.req-status.open{background:var(--gray-fill);color:var(--text-secondary)}.admin-request-main{flex:1 1;min-width:0}.admin-request-title{font-size:15px;font-weight:500}.admin-request-reply{font-size:13.5px;color:var(--text-secondary);margin-top:4px;background:var(--gray-fill);border-radius:10px;padding:8px 11px}.unread-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;margin-left:8px;background:#ff3b30;color:#fff;font-size:11px;font-weight:700}.unread-badge,.unread-pill{border-radius:999px;vertical-align:middle}.unread-pill{margin-left:10px;font-size:12.5px;font-weight:600;color:#ff3b30;background:#ffecea;padding:2px 10px}@media (max-width:760px){.app-shell{flex-direction:column}.sidebar{width:100%;height:auto;position:-webkit-sticky;position:sticky;top:0;z-index:10;flex-direction:row;align-items:center;gap:8px;padding:10px 14px}.sidebar-brand{padding:0;min-width:0;flex:1 1}.sidebar-brand .brand-label{display:none}.sidebar-brand .brand-company{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-nav{flex-direction:row;gap:2px;flex-shrink:0}.nav-item{padding:8px}.nav-item .nav-badge,.nav-item .nav-label{display:none}.sidebar-footer{margin-top:0;padding:0;flex-shrink:0}.page{padding:36px 22px 64px}.page-header h1{font-size:27px}.card{padding:24px}.progress-percent{font-size:44px}.login-card{padding:36px 28px}.day-row{flex-direction:column;gap:8px}.day-label{width:auto}.admin-wrap{padding:32px 20px 64px}.admin-topbar h1{font-size:26px}.admin-form .form-grid{grid-template-columns:1fr}.admin-step-controls{width:100%;justify-content:space-between}}