:root{--bg-main:#f9fafb;--bg-card:#fff;--text-main:#0f1115;--text-muted:#6b7280;--primary:#0f1115;--primary-dark:#000;--secondary:#6b7280;--accent:#2951ff;--border:#e5e7eb;--border-hover:#0f1115;--success:#16a34a;--danger:#dc2626;--warning:#f1c40f;--purple:#9b59b6;--pending:#fbc02d;--shadow-card:none;--font-display:"Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"Roboto Mono", "SFMono-Regular", Menlo, Consolas, monospace}[data-theme=dark]{--bg-main:#0f172a;--bg-card:#1e293b;--text-main:#e2e8f0;--text-muted:#94a3b8;--primary:#38bdf8;--primary-dark:#0ea5e9;--border:#334155;--border-hover:#475569;--shadow-card:0 10px 30px #0006}[data-theme=neon]{--bg-main:#0d0221;--bg-card:#190440;--text-main:#f5f3ff;--text-muted:#b9a9e0;--primary:#ff007f;--primary-dark:#d1006a;--secondary:#fcee0a;--accent:#0fc;--border:#38226b;--border-hover:#4b2f8c;--shadow-card:0 10px 30px #ff007f40}[data-theme=ocean]{--bg-main:#082f49;--bg-card:#0c4a6e;--text-main:#e0f2fe;--text-muted:#7dd3fc;--primary:#0ea5e9;--primary-dark:#0284c7;--border:#075985;--border-hover:#0369a1;--shadow-card:0 10px 30px #00000059}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{height:100%}body{font-family:var(--font-display);background:var(--bg-main);min-height:100%;color:var(--text-main);overscroll-behavior-y:contain;-webkit-font-smoothing:antialiased;margin:0;transition:background-color .2s,color .2s}.mono{font-family:var(--font-mono)}#root{min-height:100dvh}.container{max-width:480px;padding:calc(env(safe-area-inset-top,0px) + 24px) 16px calc(env(safe-area-inset-bottom,0px) + 24px);min-height:100dvh;margin:0 auto}@media (width>=900px){.container.dashboard-wide{max-width:1100px}}.dashboard-grid{flex-wrap:wrap;gap:24px;display:flex}.dashboard-grid .col{flex-direction:column;flex:1;gap:20px;min-width:320px;display:flex}.dashboard-grid .col>section{margin-bottom:0}.col-narrow{max-width:700px;margin:0 auto}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;color:var(--text-main);font-weight:700}h1{margin-bottom:24px;font-size:1.5rem}.btn-primary,.btn-secondary{cursor:pointer;touch-action:manipulation;text-transform:uppercase;letter-spacing:.6px;border:none;border-radius:10px;min-height:44px;padding:12px 20px;font-size:.85rem;font-weight:700;transition:opacity .15s,border-color .15s,background .15s}.btn-primary{background:var(--primary);color:#fff;width:100%;box-shadow:none}.btn-primary:hover:not(:disabled){opacity:.85}.btn-secondary{color:var(--text-muted);border:1px solid var(--border);background:0 0;width:100%;margin-top:16px}.btn-secondary:hover:not(:disabled){border-color:var(--text-main);color:var(--text-main)}.btn-primary:disabled,.btn-secondary:disabled{opacity:.55;cursor:default;transform:none}#user-photo{border-radius:50%;margin-bottom:8px;display:block}.error{color:var(--danger);min-height:1.2em}.header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.header h1{margin-bottom:4px}.stat-line{color:var(--text-muted);margin:0;font-size:.95rem;font-weight:600}.banner{color:var(--text-main);background:linear-gradient(135deg,#21c4b926,#00b4d826);border:1px solid #21c4b94d;border-radius:14px;margin-bottom:16px;padding:12px 14px;font-size:.95rem;font-weight:700;animation:.3s fadeIn}.install-hint{background:linear-gradient(135deg,#2951ff14,#16a34a14);border:1px solid #2951ff33;border-radius:16px;margin:16px 0 18px;padding:14px 16px}.install-hint h2{margin:0 0 8px;font-size:1rem}.install-hint p{color:var(--text-muted);margin:0 0 10px;line-height:1.5}.install-hint ol{color:var(--text-main);margin:0 0 10px 20px;padding:0;line-height:1.55}.preview-banner{z-index:50;color:#1a1a1a;background:linear-gradient(135deg,#ff9f43,#feca57);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;font-weight:700;display:flex;position:sticky;top:0;box-shadow:0 2px 10px #0003}.preview-content{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.9;filter:grayscale(.08)}section{margin-bottom:28px;animation:.25s fadeIn}section h2{margin-bottom:10px;font-size:1.1rem}.task-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.task-card{background:var(--bg-card);box-shadow:var(--shadow-card);border:1px solid var(--border);border-radius:14px;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;font-size:.95rem;transition:border-color .15s;display:flex}.task-card:hover{border-color:var(--border-hover)}.task-card.dragging{opacity:.5}.drag-handle{cursor:grab;color:var(--text-muted);margin-right:4px}.task-card-column{flex-direction:column;align-items:stretch}.btn-row{gap:8px;display:flex}.btn-row .btn-compact{flex:1}.btn-compact{white-space:nowrap;border-radius:8px;width:auto;min-height:38px;margin-top:0;padding:8px 16px;font-size:.75rem}.btn-compact:disabled{opacity:.6;cursor:default}.empty-state{color:var(--text-muted);font-size:.9rem;list-style:none}.task-info{text-align:left;flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.icon-btn{background:var(--warning);color:#fff;cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;min-height:36px;padding:0;font-size:1rem;display:inline-flex}.icon-btn-danger{background:var(--danger)}.hero-card{color:#fff;box-shadow:var(--shadow-card);background:linear-gradient(135deg, var(--primary), var(--accent));border-radius:24px;margin-bottom:20px;padding:20px}.hero-card.orange{background:linear-gradient(135deg, var(--secondary), #ffcf7d)}.hero-card h1,.hero-card h2{color:#fff;margin:0 0 4px}.hero-card .stat-line{color:#ffffffe6}.hero-card .stat-label{color:#fffc;text-transform:uppercase;letter-spacing:1px;margin-bottom:2px;font-size:.7rem;font-weight:700;display:block}.hero-card.header{align-items:center}.hero-card .btn-secondary{color:#fff;background:#ffffff40;border-color:#fff6;width:auto;margin-top:0}.header.hero-card:not(.orange){background:var(--bg-card);color:var(--text-main);border:none;border-bottom:1px solid var(--border);box-shadow:none;margin:calc(-1 * (env(safe-area-inset-top,0px) + 24px)) -16px 20px;padding:calc(env(safe-area-inset-top,0px) + 20px) 16px 16px;border-radius:0}.header.hero-card:not(.orange) h1{color:var(--text-main)}.header.hero-card:not(.orange) .stat-line,.header.hero-card:not(.orange) .stat-label{color:var(--text-muted)}.header.hero-card:not(.orange) .btn-secondary{color:var(--text-muted);border:1px solid var(--border);background:0 0}.header.hero-card:not(.orange) .btn-secondary:hover:not(:disabled){border-color:var(--text-main);color:var(--text-main)}.stat-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:2px;font-size:.7rem;font-weight:700;display:block}.stats-card{text-align:center;justify-content:space-around;display:flex}.stats-card .stat-block{flex-direction:column;gap:4px;display:flex}.stat-value{font-family:var(--font-mono);font-size:1.7rem;font-weight:700}.stat-value.teal{color:var(--primary)}.stat-value.red{color:var(--danger)}.stat-value.orange{color:var(--secondary)}.north-star{background:var(--bg-card);border:1px solid #ffd70099;border-radius:18px;margin-bottom:20px;padding:16px 18px;font-style:italic;box-shadow:0 0 20px #ffd70040}.card{background:var(--bg-card);box-shadow:var(--shadow-card);border:1px solid var(--border);border-radius:14px;margin-bottom:12px;padding:16px}.task-divider{border-top:2px dashed var(--border);text-align:left;margin-top:20px;padding-top:16px}.form-row{flex-direction:column;gap:4px;margin-bottom:10px;display:flex}.form-row label{color:var(--text-muted);font-size:.85rem;font-weight:700}.form-row input,.form-row select,.form-row textarea{border:1px solid var(--border);background:var(--bg-card);width:100%;min-height:40px;color:var(--text-main);border-radius:12px;padding:10px 12px;font-family:inherit;font-size:1rem}.form-row textarea{resize:vertical;min-height:70px}.form-inline{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.form-inline>*{border-radius:12px;flex:1;min-width:120px}.subcard{background:var(--bg-main);border:1px solid var(--border);border-radius:12px;margin-bottom:12px;padding:12px}.subcard label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:8px;font-size:.75rem;font-weight:800;display:block}.subcard input,.subcard select{border:1px solid var(--border);background:var(--bg-card);width:100%;min-height:40px;color:var(--text-main);border-radius:10px;margin-bottom:8px;padding:10px 12px;font-family:inherit;font-size:1rem}.subcard .btn-primary{margin-top:0}.manual-action-msg{text-align:center;color:var(--success);margin-top:10px;font-size:.85rem;font-weight:800}.tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:center;gap:4px;margin-bottom:24px;display:flex}.tab-btn{color:var(--text-muted);text-transform:uppercase;letter-spacing:.6px;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;min-height:36px;margin-bottom:-1px;padding:10px 16px;font-size:.72rem;font-weight:700;transition:color .15s,border-color .15s}.tab-btn:hover{color:var(--text-main);background:0 0}.tab-btn.active{color:var(--text-main);border-bottom-color:var(--accent);box-shadow:none;background:0 0}.subtle{color:var(--text-muted);font-size:.85rem}.progress-track{background:var(--border);border-radius:8px;height:10px;margin:6px 0;overflow:hidden}.progress-fill{background:var(--accent);height:100%;transition:width .4s}.badge{text-transform:uppercase;background:var(--border);color:var(--text-main);border-radius:12px;padding:2px 10px;font-size:.7rem;font-weight:800;display:inline-block}.badge-pending{color:#b06000;background:#fef7e0}.badge-approved{color:#137333;background:#e6f4ea}.badge-rejected{color:#c5221f;background:#fce8e6}table.data-table{border-collapse:collapse;width:100%;font-size:.85rem}table.data-table th,table.data-table td{text-align:left;border-bottom:1px solid var(--border);padding:6px 4px}.link-btn{color:var(--primary);cursor:pointer;background:0 0;border:none;padding:4px;font-size:.85rem;font-weight:700}blockquote{border-left:3px solid var(--accent);background:#00b4d814;border-radius:0 8px 8px 0;margin:6px 0;padding:6px 10px;font-size:.85rem}.theme-picker-btn{top:calc(env(safe-area-inset-top,0px) + 12px);background:var(--bg-card);width:40px;height:40px;box-shadow:var(--shadow-card);cursor:pointer;z-index:40;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1.1rem;display:flex;position:fixed;right:12px}.modal-overlay{z-index:50;background:#00000080;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-content{background:var(--bg-card);width:100%;max-width:420px;max-height:85vh;box-shadow:var(--shadow-card);border-radius:24px;padding:20px;animation:.2s fadeIn;overflow-y:auto}.theme-options{flex-direction:column;gap:8px;margin-top:12px;display:flex}.theme-options button{border:2px solid var(--border);background:var(--bg-main);color:var(--text-main);cursor:pointer;text-align:left;border-radius:14px;padding:10px 14px;font-weight:700}.theme-options button.active{border-color:var(--primary)}.calendar{background:var(--bg-card);box-shadow:var(--shadow-card);border:1px solid var(--border);border-radius:18px;margin-bottom:16px;padding:12px}.calendar-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.calendar-header strong{font-size:.95rem}.calendar-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.calendar-weekdays{margin-bottom:4px}.calendar-weekday{text-align:center;color:var(--text-muted);font-size:.7rem;font-weight:700}.calendar-cell{aspect-ratio:1;background:var(--bg-main);cursor:pointer;color:var(--text-main);border:1px solid #0000;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:2px;font-size:.8rem;display:flex}.calendar-cell.empty{visibility:hidden;cursor:default}.calendar-cell.today{border-color:var(--primary);font-weight:800}.calendar-cell.selected{background:var(--primary);color:#fff}.calendar-date{font-weight:700}.calendar-dot{background:var(--secondary);border-radius:50%;width:6px;height:6px;display:inline-block}.calendar-cell.selected .calendar-dot{background:#fff}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}
