:root{--ink:#123a63;--accent:#2563eb;--accent-dark:#1d4ed8;--accent-soft:#e2efff;--grid-dot:#c7ccd4;--coral:var(--accent);--background:#f4f8ff;--panel:#fff;--line:#d7e5f5;--muted:#5f7185}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--background);color:var(--ink);margin:0;font:15px system-ui,sans-serif}.app{grid-template-columns:260px 1fr;min-height:100vh;transition:grid-template-columns .3s cubic-bezier(.2,.8,.2,1);display:grid}.side{background:var(--panel);border-right:1px solid var(--line);padding:28px 18px;transition:padding .3s cubic-bezier(.2,.8,.2,1),border-color .2s,opacity .2s}.app.closed{grid-template-columns:0 1fr}.app.closed .side{opacity:0;border:0;padding:0;overflow:hidden}.brand{margin:0 10px 28px;font-size:1.25rem;font-weight:850}.nav{gap:7px;display:grid}.nav a{color:var(--ink);border-radius:12px;padding:13px;font-weight:800;text-decoration:none;transition:background .2s,color .2s,transform .2s}.nav a.active,.nav a:hover{background:var(--accent-soft);color:var(--accent)}.nav a:hover{transform:translate(3px)}.main{padding:32px 5vw}.top{align-items:center;gap:16px;margin-bottom:28px;display:flex}.top h1{margin:0;font-size:3rem}.top p,.card p{color:var(--muted)}.top p{margin:4px 0}.hamb,.btn{cursor:pointer;font:inherit;border:0;border-radius:10px;padding:11px;font-weight:800;transition:transform .18s,box-shadow .18s,filter .18s,background .18s}.hamb:hover,.btn:hover{transform:translateY(-2px);box-shadow:0 6px 14px #123a6320}.hamb:active,.btn:active{box-shadow:none;transform:translateY(0)scale(.97)}.hamb{background:var(--panel);border:1px solid var(--line)}.add{background:var(--coral);color:#fff;margin-left:auto}.view{display:none}.view.active{animation:.34s cubic-bezier(.2,.8,.2,1) both view-enter;display:block}.hidden{display:none}.grid{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.card{background:var(--panel);border:1px solid var(--line);border-radius:17px;padding:20px;transition:transform .2s,box-shadow .2s,border-color .2s,background .2s}.meeting-card{color:inherit;text-decoration:none;display:block}.card:has(.meeting-card){cursor:pointer;transition:transform .15s,box-shadow .15s}.card:has(.meeting-card):hover{transform:translateY(-3px);box-shadow:0 8px 20px #123a6318}.when{color:var(--muted);font-size:.75rem;font-weight:850}.card h3{margin:10px 0}.delete{color:var(--accent-dark);background:var(--accent-soft);cursor:pointer;border:0;border-radius:8px;padding:8px 10px;font-weight:800}.meeting-actions{align-items:center;gap:8px;margin-top:16px;display:flex}.meeting-actions .delete{margin-left:auto}.back-link{color:var(--accent);margin-bottom:20px;font-weight:800;text-decoration:none;display:inline-block}.detail-heading{margin:0 0 24px}.detail-heading p{color:var(--muted);margin:6px 0 0}.section-label{color:#fff;background:var(--coral);border-radius:12px;width:min(100%,520px);margin:26px 0 12px;padding:9px 12px;font-size:1.25rem;font-weight:800}.materials{flex-wrap:wrap;gap:18px;display:flex}.material{min-width:180px;min-height:120px;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:18px;place-items:center;padding:20px;font-size:1.25rem;font-weight:800;text-decoration:none;transition:transform .2s,box-shadow .2s,border-color .2s,color .2s;display:grid;box-shadow:0 8px 12px #123a6325}.material:hover{color:var(--accent);transform:translateY(-3px);box-shadow:0 12px 22px #123a6328}.material-empty{color:var(--muted);box-shadow:none;border-style:dashed}.canva-preview{width:220px;padding:0;position:relative;overflow:hidden}.canva-preview iframe{border:0;width:100%;height:100%;min-height:118px}.canva-open{color:#fff;background:var(--accent-dark);border-radius:8px;padding:6px 8px;font-size:.72rem;font-weight:800;text-decoration:none;position:absolute;bottom:8px;right:8px;box-shadow:0 2px 6px #123a6360}.canva-open:hover{color:#fff;filter:brightness(1.08)}.canva-preview-empty{width:220px;min-height:120px;color:var(--muted);text-align:center;place-items:center;padding:18px;font-size:.9rem;display:grid}.materials-form{grid-template-columns:1fr 1fr auto;align-items:end;gap:12px;margin-top:18px;display:grid}.materials-form .field{margin:0}.save-materials{color:#fff;background:var(--accent)}.detail-board{height:calc(100vh - 260px);min-height:560px;position:relative;overflow:hidden;background-color:#fff!important;background-image:radial-gradient(var(--grid-dot) 1.4px, transparent 1.4px)!important;background-size:var(--grid-size,18px) var(--grid-size,18px)!important;background-position:var(--grid-x,0px) var(--grid-y,0px)!important}.detail-board .canvas-container,.detail-board .lower-canvas,.detail-board .upper-canvas{background:0 0!important}.board-toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0 10px;display:flex}.board-toolbar button,.board-toolbar label{width:42px;height:42px;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:10px;place-items:center;padding:0;font:750 1.25rem system-ui;transition:transform .16s,background .16s,color .16s,border-color .16s;display:grid}.board-toolbar button{cursor:pointer}.board-toolbar button:hover,.board-toolbar label:hover{transform:translateY(-2px)}.board-toolbar button:active{transform:scale(.92)}.tool-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;width:21px;height:21px}.board-toolbar button.active{color:#fff;background:var(--accent);border-color:var(--accent)}.board-toolbar input{cursor:pointer;background:0 0;border:0;width:28px;height:24px;padding:0}.board-toolbar .pen-size{background:var(--panel);border:1px solid var(--line);border-radius:10px;gap:3px;width:auto;height:42px;padding:3px;display:flex}.board-toolbar .pen-size.hidden{display:none}.board-toolbar .pen-size button{border:0;place-items:center;width:32px;height:32px;padding:0;font-size:1rem;line-height:1;display:grid}.board-toolbar .pen-size button[data-size="5"]{font-size:1.25rem}.board-toolbar .pen-size button[data-size="12"]{font-size:1.6rem}.board-toolbar .colour-swatch{background:var(--swatch);width:26px;height:26px;box-shadow:0 0 0 2px #fff, 0 0 0 3px var(--line);border:0;border-radius:50%;padding:0}.board-toolbar .colour-swatch:hover,.board-toolbar .colour-swatch:focus-visible{box-shadow:0 0 0 3px #fff, 0 0 0 5px var(--ink);outline:0}.board-toolbar .clear-board{color:var(--accent-dark);background:var(--accent-soft)}.toolbar-spacer{flex:1}.board-toolbar .zoom-level{width:58px;font-size:.85rem}.board-hint{color:var(--muted);margin:-3px 0 10px;font-size:.82rem}.project-card-link{min-height:150px;color:inherit;text-decoration:none;display:block}.project-card-link:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:0 8px 20px #123a6318}.project-card-link p{margin-bottom:0}.canvas{background:#fff;border:1px dashed #b9d5f3;border-radius:13px;height:470px}.canvas canvas{touch-action:none;width:100%;height:100%}.modal{background:#0f2e5588;place-items:center;display:none;position:fixed;inset:0}.modal.show{animation:.2s both modal-backdrop-in;display:grid}.modal form{background:var(--panel);border-radius:17px;width:400px;max-width:90vw;padding:24px}.modal.show form{animation:.28s cubic-bezier(.2,.8,.2,1) both modal-card-in}.modal-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.modal-heading h2{margin:0}.modal-close{width:32px;height:32px;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:8px;place-items:center;font-size:1.6rem;line-height:1;display:grid}.modal-close:hover{background:var(--accent-soft);color:var(--accent-dark)}.field{gap:5px;margin:12px 0;display:grid}.field input,.field textarea{border:1px solid var(--line);font:inherit;border-radius:8px;padding:10px}.field textarea{resize:vertical;min-height:44px}.profile-card{max-width:700px}.profile-card h2{margin-top:0}.project-panel,.invite-panel{border-top:1px solid var(--line);margin-top:26px;padding-top:20px}.invite-panel h3,.team-heading{margin:0}.invite-form{align-items:end;gap:12px;display:flex}.invite-form .field{flex:1}.invite-button{background:var(--coral);color:#fff}.team-heading{margin-top:30px}.team-list{gap:10px;margin-top:12px;display:grid}.team-member{background:#f4f8ff;border-radius:10px;align-items:center;gap:12px;padding:13px;display:flex}.member-avatar{color:#fff;background:var(--accent);border-radius:50%;place-items:center;width:34px;height:34px;font-weight:800;display:grid}.member-email{font-weight:750}.member-status{color:var(--muted);margin-left:auto;font-size:.85rem}.project-badge{color:var(--accent-dark);background:var(--accent-soft);border-radius:999px;margin-left:auto;padding:4px 8px;font-size:.78rem;font-weight:800}.project-card{width:100%;color:inherit;cursor:pointer;font:inherit;text-align:left;border:1px solid #0000}.project-card:hover,.project-card.selected{border-color:var(--accent);background:var(--accent-soft)}.project-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.project-actions input{cursor:pointer;background:0 0;border:0;width:30px;height:28px;padding:0}.project-actions .delete{margin:0}.member-delete{margin-left:4px}.trash-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;width:16px;height:16px}.invite-button:disabled{cursor:not-allowed;opacity:.55}.auth-card{width:min(100%,440px);margin:8vh auto}.auth-card h2{margin:0}.auth-card>p{color:var(--muted);margin-top:6px}.auth-form{gap:4px;margin-top:24px;display:grid}.auth-submit{color:#fff;background:var(--coral);width:100%;margin-top:10px}.auth-switch{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:0;padding:8px;font-weight:800}.auth-error{min-height:1.2em;color:var(--accent-dark);margin:0}@keyframes view-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes modal-backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes modal-card-in{0%{opacity:0;transform:translateY(14px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=700px){.app{grid-template-columns:1fr}.side{display:none}.grid{grid-template-columns:1fr}.invite-form{align-items:stretch;display:grid}.materials-form{grid-template-columns:1fr}}
