*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0d1117;--bg-surface: #0f172a;--bg-raised: #16213e;--border: #1e293b;--text: #e2e8f0;--text-muted: #475569;--text-secondary: #94a3b8;--green: #4ade80;--blue: #93c5fd;--yellow: #f59e0b;--red: #f87171;--accent: #3b82f6}[data-theme=light]{--bg: #f8fafc;--bg-surface: #ffffff;--bg-raised: #f1f5f9;--border: #e2e8f0;--text: #0f172a;--text-muted: #94a3b8;--text-secondary: #475569;--green: #16a34a;--blue: #2563eb;--yellow: #d97706;--red: #dc2626;--accent: #3b82f6}[data-theme=light] .day-cell.day-worked{border:1px solid #bfdbfe}[data-theme=light] .day-cell.day-holiday{background:#fef3c7;border:1px solid #f59e0b40}[data-theme=light] .project-item.active{background:#dbeafe;border-left:3px solid var(--accent)}[data-theme=light] .btn-danger{background:#fee2e2;color:var(--red)}body{font-family:system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:14px}.login-container{display:flex;align-items:center;justify-content:center;min-height:100vh}.login-box{background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;padding:40px;width:100%;max-width:360px}.login-box h1{text-align:center;margin-bottom:24px;font-size:24px}.login-box label{display:block;color:var(--text-secondary);font-size:12px;margin-bottom:4px;margin-top:16px}.login-box input{width:100%;background:var(--bg-raised);border:1px solid var(--border);border-radius:6px;padding:8px 12px;color:var(--text);font-size:14px}.login-box button{margin-top:24px;width:100%;background:var(--accent);color:#fff;border:none;border-radius:6px;padding:10px;font-size:14px;cursor:pointer}.login-box button:disabled{opacity:.6;cursor:default}.error-msg{color:var(--red);font-size:12px;margin-top:8px}.app-layout{display:flex;height:100vh;overflow:hidden}.sidebar{width:200px;background:var(--bg-surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:16px 12px;flex-shrink:0}.sidebar-label{color:var(--text-muted);font-size:10px;text-transform:uppercase;letter-spacing:1px;margin-bottom:8px}.project-list{list-style:none;display:flex;flex-direction:column;gap:4px;flex:1}.project-item{display:flex;align-items:center;gap:8px;padding:8px;border-radius:6px;cursor:pointer}.project-item:hover{background:var(--bg-raised)}.project-item.active{background:#1e3a5f;border-left:3px solid var(--accent)}.project-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.project-name{color:var(--text);font-size:13px}.project-item .project-meta{color:var(--text-muted);font-size:11px}.new-project-btn{background:none;border:1px dashed var(--border);color:var(--text-muted);border-radius:6px;padding:6px;cursor:pointer;font-size:12px;margin-top:8px}.new-project-btn:hover{color:var(--text);border-color:var(--accent)}.project-edit-btn{opacity:0;padding:2px 6px;font-size:13px}.project-item:hover .project-edit-btn{opacity:1}.main-content{flex:1;display:flex;flex-direction:column;overflow:hidden}.project-header{background:var(--bg-surface);border-bottom:1px solid var(--border);padding:10px 20px;display:flex;align-items:center;justify-content:space-between}.header-project-info{display:flex;align-items:center}.project-title{font-size:16px;font-weight:600;color:var(--blue)}.header-project-info .project-meta{color:var(--text-muted);margin-left:10px;font-size:12px}.month-nav{display:flex;align-items:center;gap:12px}.month-nav button{background:var(--bg-raised);color:var(--text-secondary);border:none;border-radius:4px;padding:4px 10px;cursor:pointer}.month-label{font-weight:600;min-width:140px;text-align:center}.header-actions{display:flex;gap:8px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:20px 32px;overflow-y:auto;flex:1;align-content:start;max-width:900px;margin:0 auto;width:100%}.calendar-weekday{text-align:center;color:var(--text-muted);font-size:11px;padding:4px;text-transform:uppercase}.day-cell{background:var(--bg-raised);border-radius:6px;padding:8px;min-height:72px;display:flex;flex-direction:column;gap:2px}.day-cell.day-blank{background:transparent}.day-cell.day-non-working{opacity:.25}.day-cell.day-worked{border:1px solid #1e3a5f}.day-cell.day-holiday{background:#2d1b00;border:1px solid #f59e0b50}.day-cell.day-pending{border:1px dashed var(--border)}.day-number{font-size:10px;color:var(--text-muted);align-self:flex-start}.day-hours{font-size:18px;font-weight:800;color:var(--green);margin:auto}.day-holiday-label{font-size:10px;color:var(--yellow);font-weight:600;margin:auto}.day-pending-dot{width:5px;height:5px;background:var(--border);border-radius:50%;margin:auto}.day-note-dot{width:5px;height:5px;background:var(--blue);border-radius:50%;margin:auto;opacity:1}.content-area{display:flex;flex:1;overflow:hidden}.notes-panel{width:200px;background:var(--bg-surface);border-left:1px solid var(--border);padding:16px 12px;overflow-y:auto;flex-shrink:0}.notes-label{color:var(--text-muted);font-size:10px;text-transform:uppercase;letter-spacing:1px;margin-bottom:12px}.notes-list{list-style:none;display:flex;flex-direction:column;gap:10px}.note-item{display:flex;gap:8px;font-size:12px;line-height:1.4}.note-day{color:var(--text-muted);min-width:18px;font-weight:700;flex-shrink:0}.note-text{color:var(--text-secondary)}.notes-empty{color:var(--text-muted);font-size:12px;font-style:italic}.month-summary{background:var(--bg-surface);border-top:1px solid var(--border);padding:12px 20px;display:flex;align-items:center;justify-content:space-between;gap:24px}.summary-stats{display:flex;gap:32px}.stat{display:flex;flex-direction:column}.stat-label{font-size:10px;color:var(--text-muted);text-transform:uppercase}.stat-value{font-size:22px;font-weight:700}.stat-green{color:var(--green)}.stat-blue{color:var(--blue)}.stat-yellow{color:var(--yellow)}.summary-comment{flex:1;max-width:320px}.comment-display{display:flex;align-items:center;gap:8px}.comment-text{color:var(--text-secondary);font-style:italic;font-size:13px}.comment-edit textarea{width:100%;background:var(--bg-raised);border:1px solid var(--border);border-radius:6px;padding:6px 8px;color:var(--text);font-size:13px;resize:none}.comment-edit{display:flex;flex-direction:column;gap:6px}.btn-primary{background:var(--accent);color:#fff;border:none;border-radius:6px;padding:8px 14px;cursor:pointer;font-size:13px}.btn-secondary{background:var(--bg-raised);color:var(--text-secondary);border:1px solid var(--border);border-radius:6px;padding:8px 14px;cursor:pointer;font-size:13px}.btn-danger{background:#7f1d1d;color:var(--red);border:none;border-radius:6px;padding:8px 14px;cursor:pointer;font-size:13px}.btn-sm{background:var(--bg-raised);color:var(--text-secondary);border:1px solid var(--border);border-radius:4px;padding:4px 10px;cursor:pointer;font-size:12px}.btn-ghost{background:transparent;border-color:transparent}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;padding:24px;min-width:320px;max-width:420px;display:flex;flex-direction:column;gap:10px}.modal h3{font-size:16px;margin-bottom:4px}.modal label{display:block;color:var(--text-muted);font-size:12px;margin-bottom:2px}.modal input[type=text],.modal input[type=number],.modal input[type=date]{width:100%;background:var(--bg-raised);border:1px solid var(--border);border-radius:6px;padding:8px 10px;color:var(--text);font-size:14px}.modal input[type=color]{height:36px;border-radius:6px;border:1px solid var(--border);cursor:pointer}.modal-actions{display:flex;gap:8px;margin-top:8px}.field{display:flex;flex-direction:column;gap:4px}.field-label{color:var(--text-muted);font-size:12px}.day-toggles{display:flex;gap:4px}.day-toggle{width:32px;height:32px;border-radius:6px;border:1px solid var(--border);background:var(--bg-raised);color:var(--text-secondary);cursor:pointer;font-size:12px;font-weight:600}.day-toggle.active{background:var(--accent);color:#fff;border-color:var(--accent)}.viewer-list{display:flex;flex-direction:column;gap:6px}.viewer-item{display:flex;align-items:center;gap:8px;color:var(--text-secondary);font-size:13px;cursor:pointer}
