:root{--ink:#172033;--muted:#697386;--line:#e7e9f0;--surface:#fff;--bg:#f5f6fa;--primary:#5b5bd6;--primary-dark:#4848ba;--sidebar:#171a2b;--danger:#dc2626;--success:#059669;--shadow:0 12px 35px rgba(28,34,58,.12);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}button,input,textarea,select{font:inherit}button{cursor:pointer}a{text-decoration:none;color:inherit}.brand{font-weight:800;letter-spacing:.08em;display:flex;align-items:center;gap:10px}.brand-light{color:#fff}.brand-mark{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;color:#fff;background:var(--primary);font-size:15px}.button{border:0;border-radius:9px;padding:10px 16px;font-weight:700;transition:.15s}.button.primary{background:var(--primary);color:#fff;box-shadow:0 3px 10px rgba(91,91,214,.25)}.button.primary:hover{background:var(--primary-dark);transform:translateY(-1px)}.button.ghost{background:#f0f1f5;color:#4c5568}.button.full{display:block;width:100%;text-align:center;padding:13px}.button:disabled{opacity:.5;cursor:not-allowed}.muted{color:var(--muted);line-height:1.55}.eyebrow,.step-badge,.nav-label{font-size:11px;font-weight:800;letter-spacing:.13em}.step-badge{display:inline-block;color:var(--primary);background:#eeeeff;border-radius:20px;padding:6px 10px}.alert{padding:11px 13px;border-radius:8px;font-size:14px;margin:12px 0}.alert.error{background:#fff0f0;color:#b42318}.alert.success{background:#ecfdf5;color:#047857}label{display:grid;gap:7px;font-size:13px;font-weight:700;color:#434c5e;margin:15px 0}input,textarea,select{width:100%;border:1px solid #d9dce5;border-radius:8px;padding:11px 12px;background:#fff;color:var(--ink);outline:none}input:focus,textarea:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(91,91,214,.1)}textarea{resize:vertical}small{font-weight:500;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid label{margin-top:0}
/* Installer */
.installer-page{min-height:100vh;background:var(--sidebar)}.installer-shell{min-height:100vh;display:grid;grid-template-columns:minmax(320px,44%) minmax(420px,680px);justify-content:center}.installer-intro{padding:9vh 8vw 60px;color:#fff;background:radial-gradient(circle at 10% 80%,rgba(91,91,214,.32),transparent 32%),linear-gradient(145deg,#171a2b,#242843);display:flex;flex-direction:column;align-items:flex-start}.installer-intro .brand{margin-bottom:18vh}.installer-intro .eyebrow{color:#a8a8ff}.installer-intro h1{font-size:clamp(42px,5vw,70px);line-height:.98;letter-spacing:-.05em;margin:18px 0}.installer-intro>p:not(.eyebrow){color:#b7bdce;max-width:470px;line-height:1.7;font-size:17px}.feature-list{list-style:none;padding:0;margin-top:30px;display:grid;gap:15px}.feature-list li:before{content:'✓';color:#9e9eff;margin-right:12px;font-weight:800}.installer-card{background:#fff;padding:8vh clamp(30px,6vw,85px);overflow:auto}.installer-card h2{font-size:30px;margin:16px 0 4px}.checks{display:flex;flex-wrap:wrap;gap:7px;margin:18px 0}.check{padding:6px 9px;border-radius:6px;font-size:11px;font-weight:700}.check.ok{color:#047857;background:#ecfdf5}.check.bad{color:#b42318;background:#fff0f0}.install-form fieldset{border:0;padding:0;margin:26px 0}.install-form legend{width:100%;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;border-bottom:1px solid var(--line);padding-bottom:9px}.success-icon{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:#ecfdf5;color:var(--success);font-size:25px;font-weight:800}
/* Login */
.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 50% 0,#e9e9ff,transparent 42%),var(--bg)}.login-card{width:min(100%,420px);background:#fff;border:1px solid var(--line);border-radius:16px;padding:38px;box-shadow:var(--shadow)}.login-card .brand{margin-bottom:38px}.login-card h1{font-size:30px;margin:0 0 5px}
/* App layout */
.app-page{display:grid;grid-template-columns:245px minmax(0,1fr);min-height:100vh;overflow:hidden}.sidebar{position:relative;background:var(--sidebar);color:#c4c8d5;padding:25px 16px;display:flex;flex-direction:column;height:100vh}.sidebar .brand{padding:0 8px;margin-bottom:42px}.nav-label{color:#71778e;display:block;margin:0 10px 8px}.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;font-size:14px}.nav-item.active{background:#292d47;color:#fff}.board-list{margin-top:30px}.nav-label-row{display:flex;justify-content:space-between;align-items:center}.board-link{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;font-size:13px;margin:2px 0}.board-link:hover,.board-link.active{background:#22263c;color:#fff}.board-link i{width:12px;height:12px;border-radius:3px}.board-link span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.board-link small{color:#777d92}.icon-button{border:0;background:transparent;border-radius:6px;width:28px;height:28px;font-size:21px;color:var(--muted)}.icon-button:hover{background:#eceef3}.icon-button.light{color:#8c91a4}.icon-button.light:hover{background:#292d47}.sidebar-user{margin-top:auto;border-top:1px solid #292d42;padding:18px 6px 0;display:flex;align-items:center;gap:10px}.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#4b4e75;color:#fff;font-weight:800}.sidebar-user div{display:grid;min-width:0;flex:1}.sidebar-user strong{color:#fff;font-size:13px;overflow:hidden;text-overflow:ellipsis}.sidebar-user small{text-transform:capitalize;font-size:11px}.sidebar-user button{border:0;background:transparent;color:#8c91a4}.main{min-width:0;height:100vh;overflow:auto}.topbar{height:70px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 30px;gap:18px;position:sticky;top:0;z-index:10}.breadcrumbs{font-size:13px;color:var(--muted)}.breadcrumbs span{margin:0 9px;color:#b8bdc8}.top-actions{margin-left:auto;display:flex;gap:12px}.search{margin:0;display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:8px;padding:0 10px;color:#9298a6}.search input{border:0;padding:8px 0;box-shadow:none;width:190px}.menu-button{display:none;border:0;background:transparent;font-size:21px}.board-header{padding:28px 32px 22px;display:flex;justify-content:space-between;align-items:flex-start}.board-header h1{font-size:25px;margin:0;letter-spacing:-.02em}.board-header p{font-size:13px;color:var(--muted);margin:8px 0 0}.title-row{display:flex;align-items:center;gap:10px}.board-color{width:14px;height:28px;border-radius:4px}.subtle-button{border:0;background:transparent;color:var(--muted);font-size:12px}.board-stats{display:flex;gap:8px}.board-stats span{background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px 11px;color:var(--muted);font-size:11px}.board-stats strong{color:var(--ink)}
/* Kanban */
.kanban{display:flex;align-items:flex-start;gap:14px;padding:0 32px 35px;min-width:max-content}.column{width:288px;background:#edf0f5;border-radius:11px;padding:11px}.column>header{display:flex;justify-content:space-between;align-items:center;padding:2px 4px 11px}.column>header>div{display:flex;align-items:center;gap:8px}.column h2{font-size:13px;margin:0}.status-dot{width:7px;height:7px;border-radius:50%;background:#9ca3af}.status-1{background:#f59e0b}.status-2{background:#8b5cf6}.status-3{background:#10b981}.count{font-size:10px;color:var(--muted);background:#dfe3ea;border-radius:10px;padding:2px 6px}.task-list{min-height:70px;display:grid;gap:9px;align-content:start}.task-list.drag-over{outline:2px dashed var(--primary);outline-offset:3px;border-radius:8px}.task-card{background:#fff;border:1px solid #e4e6ec;border-radius:9px;padding:13px;box-shadow:0 1px 2px rgba(20,26,44,.04);cursor:grab}.task-card:hover{border-color:#cbced9;box-shadow:0 4px 14px rgba(20,26,44,.07)}.task-card.dragging{opacity:.45}.task-card h3{font-size:13px;line-height:1.4;margin:8px 0}.task-card p{font-size:11px;color:var(--muted);line-height:1.5;margin:0 0 11px}.task-card footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #f0f1f4;padding-top:9px}.priority{display:inline-block;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;border-radius:4px;padding:4px 6px}.priority-low{background:#f1f3f5;color:#687080}.priority-medium{background:#fff7df;color:#a16207}.priority-high{background:#fff0e8;color:#c2410c}.priority-urgent{background:#fff0f0;color:#c81e1e}.due{font-size:10px;color:var(--muted)}.due.overdue{color:var(--danger);font-weight:700}.edit-task{border:0;background:transparent;color:#9ca2b0;font-weight:800}.add-column{width:210px;border:1px dashed #c5c9d4;background:transparent;color:var(--muted);padding:13px;border-radius:9px;text-align:left}.add-column span{font-size:18px;margin-right:7px}.empty-state{text-align:center;padding:15vh 20px}.empty-state>div{font-size:45px;color:var(--primary)}.empty-state h1{margin-bottom:5px}.empty-state p{color:var(--muted)}.toast{position:fixed;z-index:30;right:25px;top:82px;padding:11px 17px;border-radius:8px;box-shadow:var(--shadow);background:#fff;font-size:13px}.toast.success{border-left:4px solid var(--success)}.toast.error{border-left:4px solid var(--danger)}
/* Modal */
.modal{border:0;border-radius:14px;padding:0;width:min(92vw,520px);box-shadow:0 25px 70px rgba(15,19,36,.28)}.modal::backdrop{background:rgba(14,17,31,.58);backdrop-filter:blur(2px)}.modal form:first-child{padding:25px}.modal header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px}.modal h2{margin:5px 0 0;font-size:22px}.modal-close{border:0;background:#f0f1f4;width:30px;height:30px;border-radius:50%;font-size:20px;color:var(--muted)}.modal footer{display:flex;justify-content:flex-end;gap:9px;margin-top:22px}.modal.small{width:min(92vw,410px)}.delete-form{position:absolute;bottom:27px;left:25px}.delete-form button{border:0;background:transparent;color:var(--danger);font-size:12px}.delete-form[hidden]{display:none}
@media(max-width:850px){.installer-shell{display:block}.installer-intro{padding:40px 30px}.installer-intro .brand{margin-bottom:60px}.installer-intro h1{font-size:44px}.installer-card{padding:45px 30px}.app-page{display:block}.sidebar{position:fixed;left:-260px;top:0;width:245px;z-index:50;transition:.2s;box-shadow:var(--shadow)}.sidebar.open{left:0}.menu-button{display:block}.main{height:100vh}.topbar{padding:0 16px}.breadcrumbs{display:none}.search{display:none}.board-header{padding:22px 18px;display:block}.board-stats{margin-top:14px}.kanban{padding:0 18px 28px}.column{width:82vw;max-width:300px}}@media(max-width:520px){.form-grid{grid-template-columns:1fr;gap:0}.installer-intro{display:none}.login-card{padding:27px}.top-actions .button{padding:10px}.board-stats{display:none}}
