:root{--ink:#102a43;--muted:#627d98;--line:#d9e2ec;--paper:#fff;--canvas:#f6f8fb;--accent:#f59e0b;--blue:#2563a8;--green:#167d56;--timeline-height:1440px}*{box-sizing:border-box}body{margin:0;background:var(--canvas);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.app-header{height:72px;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 max(20px,calc((100vw - 1120px)/2));}.brand{font-weight:800;letter-spacing:-.02em;font-size:1.1rem;display:flex;gap:10px;align-items:center}.brand-mark{display:grid;place-items:center;background:var(--accent);color:var(--ink);width:30px;height:30px;border-radius:8px;font-size:1.3rem}.tagline{margin:0;color:#b8c8d8;font-size:.85rem}.app-shell{max-width:1120px;margin:0 auto;padding:38px 20px 60px}.day-toolbar{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:24px}.eyebrow{font-size:.7rem;font-weight:800;letter-spacing:.13em;color:var(--blue);margin:0 0 7px}.day-heading-wrap h1{margin:0;font-size:clamp(1.8rem,4vw,2.5rem);letter-spacing:-.04em}.day-subtitle{color:var(--muted);margin:5px 0 0}.day-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.icon-button,.today-button,.date-picker-label,.date-picker-label+input{height:42px}.icon-button,.today-button{border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:9px;font-weight:700;padding:0 13px;cursor:pointer}.icon-button{font-size:1.3rem;width:42px;padding:0}.date-picker-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}#date-picker{border:1px solid var(--line);border-radius:9px;padding:0 10px;color:var(--ink);background:var(--paper);font:inherit}.planner-card{background:var(--paper);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 8px 25px #102a4310}.timeline{height:min(680px,calc(100vh - 275px));min-height:430px;overflow:auto;position:relative;background:linear-gradient(90deg,#fff,#fbfdff)}.timeline-grid,.timeline-blocks{position:absolute;top:0;left:0;right:0;height:var(--timeline-height)}.hour-row{height:60px;position:absolute;left:0;right:0;display:flex;align-items:flex-start}.hour-row span{width:82px;padding:8px 12px 0;text-align:right;font-size:.72rem;color:var(--muted);font-weight:700}.hour-row i{height:1px;background:#e9eff5;flex:1;margin:15px 18px 0 12px}.timeline-block{position:absolute;left:100px;right:24px;background:#e8f1fb;border-left:5px solid var(--blue);border-radius:8px;padding:9px 12px;overflow:hidden;cursor:pointer;min-height:48px;color:var(--ink);box-shadow:0 3px 10px #2563a815}.timeline-block strong{display:block;font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline-block span{display:block;font-size:.78rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px}.block-time{font-size:.7rem;font-weight:800;color:var(--blue);margin-bottom:3px}.timeline-block.is-complete{background:#e8f5ef;border-left-color:var(--green);text-decoration:line-through;text-decoration-thickness:1px}.timeline-block.is-complete .block-time,.timeline-block.is-complete .complete-toggle{color:var(--green)}.block-edit,.complete-toggle{background:transparent;border:0;color:var(--blue);font:inherit;font-size:.72rem;font-weight:800;cursor:pointer;margin-top:7px;margin-right:10px;padding:4px 0}.empty-state{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;width:min(90%,420px)}.empty-state[hidden]{display:none}.empty-icon{font-size:2rem;color:var(--accent)}.empty-state h2{margin:8px 0 5px;font-size:1.25rem}.empty-state p{color:var(--muted);margin:0 0 18px}.primary-button{background:var(--ink);color:#fff;border:0;border-radius:9px;padding:11px 17px;font:inherit;font-weight:800;cursor:pointer}.primary-button:hover{background:#1b456d}.floating-add{display:block;margin:24px 0 0 auto}.floating-add span{color:var(--accent);font-size:1.2rem;margin-right:4px}.schedule-summary{display:flex;gap:9px;color:var(--muted);font-size:.8rem;padding:14px 4px}.summary-dot{color:var(--accent)}.message{min-height:24px;margin:-8px 0 10px;font-size:.85rem;font-weight:700}.message.success{color:var(--green)}.message.error,.form-error,.field-error{color:#b42318}dialog{border:0;border-radius:16px;padding:0;width:min(94vw,510px);box-shadow:0 20px 70px #102a4340}dialog::backdrop{background:#102a4366}.dialog-header{display:flex;justify-content:space-between;align-items:start;padding:26px 28px 4px}.dialog-header h2{margin:0;font-size:1.5rem;letter-spacing:-.03em}.close-button{border:0;background:transparent;font-size:1.7rem;color:var(--muted);cursor:pointer}.form-error{margin:10px 28px 0;font-size:.85rem;min-height:20px}.field{padding:10px 28px 0}.field label{display:block;font-weight:800;font-size:.82rem;margin-bottom:6px}.optional{font-weight:400;color:var(--muted)}input,textarea{display:block;width:100%;border:1px solid #b9c7d5;border-radius:8px;font:inherit;padding:11px;color:var(--ink);background:#fff}input:focus,textarea:focus,button:focus-visible,dialog:focus-visible,.timeline:focus-visible{outline:3px solid #f8c15b;outline-offset:2px}.field-error{display:block;min-height:17px;font-size:.72rem;margin-top:3px}.time-fields{display:grid;grid-template-columns:1fr 1fr;gap:0}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;padding:22px 28px 12px}.secondary-button{background:#fff;border:1px solid var(--line);color:var(--ink);border-radius:9px;padding:10px 16px;font:inherit;font-weight:800;cursor:pointer}.delete-button{display:block;margin:0 auto 22px;border:0;background:transparent;color:#b42318;text-decoration:underline;font:inherit;cursor:pointer}.delete-button[hidden]{display:none}@media(max-width:680px){.app-header{height:62px;padding:0 16px}.tagline{display:none}.app-shell{padding:26px 12px 48px}.day-toolbar{display:block}.day-controls{justify-content:flex-start;margin-top:18px}.timeline{height:calc(100vh - 285px);min-height:440px}.hour-row span{width:69px;padding-right:8px;font-size:.66rem}.hour-row i{margin-left:5px;margin-right:10px}.timeline-block{left:78px;right:10px;padding:8px 9px}.timeline-block strong{font-size:.85rem}.schedule-summary{padding-left:2px}.floating-add{width:100%}.dialog-header,.field{padding-left:20px;padding-right:20px}.dialog-actions{padding-left:20px;padding-right:20px}.form-error{margin-left:20px;margin-right:20px}}
