:root{--board:#dfe8ee;--board-edge:#9eb0bc;--ink:#1c2834;--muted:#5a6b78;--marker:#1f6f8b;--red-marker:#c44536;--tape:#f4e4b8;--paper:#fffdf7;--yellow:#ffe56b;--pink:#ffb4c8;--mint:#b8e0d2;--lilac:#c5b8ff;--peach:#ffd4a3;--sans:"Figtree", system-ui, sans-serif;--hand:"Gochi Hand", cursive}*{box-sizing:border-box}html,body,#root{min-height:100%}body{font-family:var(--sans);color:var(--ink);background:#c9d5de;margin:0}button,input,textarea{font:inherit}.board-shell{background:radial-gradient(circle at 12% 8%, #ffffff8c, transparent 28%), linear-gradient(180deg, #cfdbe3 0%, var(--board) 40%, #d4e0e8 100%);min-height:100vh;padding:16px 16px 88px;animation:8s ease-in-out infinite room-light}.board{border:10px solid var(--board-edge);background:linear-gradient(#1f6f8b0d 1px,#0000 1px) 0 0/28px 28px,linear-gradient(90deg,#1f6f8b0d 1px,#0000 1px) 0 0/28px 28px,linear-gradient(#f4f8fa,#e7eef3);border-radius:4px;max-width:1120px;min-height:calc(100vh - 32px);margin:0 auto;padding:20px 20px 32px;animation:.7s cubic-bezier(.2,.8,.2,1) both board-in,48s linear infinite grid-drift;position:relative;box-shadow:inset 0 0 0 3px #f7fbfe,0 18px #8fa3b0}.board:after{content:"";pointer-events:none;background:radial-gradient(circle at 80% 12%,#ffe56b1f,#0000 22%);border-radius:2px;animation:9s ease-in-out infinite sun-spot;position:absolute;inset:12px}.tray{border-bottom:2px dashed #1f6f8b47;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 16px;margin-bottom:20px;padding-bottom:16px;display:flex}.brand{font-family:var(--hand);color:var(--marker);transform-origin:0;margin:0;font-size:2rem;line-height:1;animation:5s ease-in-out infinite marker-wiggle;transform:rotate(-2deg)}.nav{flex-wrap:wrap;gap:8px;display:flex}.nav a,.ghost,.primary,.chip{cursor:pointer;color:var(--ink);background:0 0;border:0;border-radius:999px;padding:8px 14px;text-decoration:none}.nav a,.chip{color:var(--marker);border:2px solid #0000;font-weight:600;transition:transform .2s,border-color .2s,color .2s,background .2s}.nav a:hover,.chip:hover,.ghost:hover{transform:rotate(-3deg)scale(1.04)}.nav a.active,.chip.active{color:var(--red-marker);transform:rotate(-1deg)}.chip{z-index:1;position:relative}.chip-pill{border:2px solid var(--red-marker);pointer-events:none;border-radius:999px;position:absolute;inset:0}.primary{transition:transform .15s,filter .15s}.primary:hover{transform:translateY(-2px)}.primary:active{transform:translateY(1px)}.ghost{color:var(--muted)}.primary{background:var(--ink);color:#fff;font-weight:600}.period{flex-direction:column;align-items:stretch;gap:8px;margin-bottom:16px;display:flex}.period-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;display:flex}.period-title{text-align:center;min-width:0}.period h2{font-family:var(--hand);margin:0;font-size:1.45rem;font-weight:400}.period-dates{color:var(--muted);text-align:center;margin:2px 0 0;font-size:.95rem}.masonry,.week-grid{grid-template-columns:1fr;align-items:start;gap:16px;display:grid}.week-col{min-width:0}.week-col.empty-day{opacity:.55}.week-col.empty-day h3{margin-bottom:0}.week-col h3{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 10px;font-size:.72rem}.week-notes{flex-direction:column;gap:12px;display:flex}.week-notes .sticky{max-width:none;min-height:0}@media (width>=1020px){.week-grid,.masonry{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1280px){.week-grid,.masonry{grid-template-columns:repeat(3,minmax(0,1fr))}.board{max-width:1180px}}@media (width>=1540px){.week-grid,.masonry{grid-template-columns:repeat(4,minmax(0,1fr))}.board{max-width:1440px}}@media (width>=1800px){.week-grid,.masonry{grid-template-columns:repeat(5,minmax(0,1fr))}.board{max-width:1680px}}@media (width>=2060px){.week-grid,.masonry{grid-template-columns:repeat(6,minmax(0,1fr))}.board{max-width:1920px}}@media (width>=2320px){.week-grid,.masonry{grid-template-columns:repeat(7,minmax(0,1fr))}.board{max-width:2160px}}.sticky{--tilt:-.4deg;min-height:160px;color:var(--ink);cursor:pointer;text-align:left;border:0;width:100%;padding:28px 16px 16px;position:relative;box-shadow:2px 3px #1c28341f}.sticky:before{content:"";background:var(--tape);opacity:.9;width:52px;height:14px;position:absolute;top:6px;left:50%;transform:translate(-50%)rotate(-2deg)}.sticky.yellow{background:var(--yellow)}.sticky.pink{background:var(--pink)}.sticky.mint{background:var(--mint)}.sticky.lilac{background:var(--lilac)}.sticky.peach{background:var(--peach)}.sticky.archived{filter:grayscale(.55)brightness(.96)}.sticky.archived:before{background:#c8c4ba}.file-stamp{font-family:var(--hand);color:var(--red-marker);margin-top:10px;font-size:1rem;display:inline-block;transform:rotate(-8deg)}.toggle{cursor:pointer;align-items:center;gap:8px;font-weight:600;display:flex!important}.toggle input{width:18px;height:18px;accent-color:var(--marker)}.hint{color:var(--muted);margin:6px 0 0;font-size:.8rem}.rank-bar{justify-content:center;align-items:center;gap:4px;margin:-8px 0 8px;display:flex}.rank-bar .ghost{min-width:32px;padding:2px 8px}.rank{min-width:28px;height:28px;font-family:var(--hand);cursor:grab;background:#1c28341f;border-radius:50%;justify-content:center;align-items:center;font-size:1.1rem;display:inline-flex}.rank:active{cursor:grabbing}.sticky h3{font-family:var(--hand);margin:0 0 8px;font-size:1.25rem;font-weight:400}.sticky p{white-space:pre-wrap;margin:0;font-size:.95rem}.note-body{text-align:left;font-size:.95rem}.note-body p{white-space:pre-wrap;margin:0 0 .45em}.note-body p:last-child{margin-bottom:0}.note-body ul{margin:.2em 0 .45em;padding-left:1.15em}.note-body li{margin:.12em 0}.note-body s{opacity:.72;text-decoration:line-through}.mark-bar{flex-wrap:wrap;gap:6px;margin:0 0 8px;display:flex}.mark-bar .ghost{min-width:40px;padding:4px 10px;font-weight:700}.sticky time{color:var(--muted);margin-top:12px;font-size:.75rem;display:block}.empty{font-family:var(--hand);color:var(--marker);padding:24px 8px;font-size:1.4rem}.fab{right:max(16px, env(safe-area-inset-right,0px));bottom:max(16px, calc(16px + env(safe-area-inset-bottom,0px)));background:var(--yellow);width:56px;height:56px;color:var(--ink);cursor:pointer;box-shadow:0 8px 0 var(--board-edge);z-index:30;border:0;border-radius:50%;font-size:2rem;line-height:1;position:fixed}.sheet{z-index:40;background:#1c283473;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}.login-card{background:var(--paper);border-top:8px solid var(--yellow);padding:20px}.sheet form{background:var(--paper);border-top:8px solid var(--yellow);-webkit-overflow-scrolling:touch;width:min(520px,100%);max-height:min(92dvh,100%);padding:20px;padding-bottom:calc(20px + env(safe-area-inset-bottom,0px));overflow-y:auto}@media (width<=860px){.sheet form{border-radius:16px 16px 0 0;width:100%;max-height:92dvh}}@media (width>=861px){.sheet{align-items:center;padding:40px 32px}.sheet form{border-radius:14px;width:min(1200px,96vw);max-height:min(94dvh,1200px);padding:36px 36px 32px;box-shadow:8px 14px #1c283429}.sheet textarea{min-height:min(60vh,560px)}}.sheet label,.login-card label{margin:12px 0 6px;font-size:.8rem;font-weight:600;display:block}.sheet textarea,.sheet input,.search{background:#fff;border:2px solid #d7dee4;border-radius:6px;width:100%;padding:10px}.sheet textarea{resize:vertical;min-height:120px}.colors{gap:8px;display:flex}.swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:28px;height:28px;transition:transform .15s}.swatch:hover{transform:scale(1.18)}.swatch.on{border-color:var(--ink)}.row{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.error{color:var(--red-marker);font-size:.9rem}.login{background:var(--board);place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{width:min(420px,100%);box-shadow:8px 10px #1c28341f}.login-card h1{font-family:var(--hand);color:var(--marker);margin:0 0 8px;font-size:2.4rem}.token-box{color:#e8f0f4;word-break:break-all;background:#11181f;border-radius:6px;padding:12px;font-family:ui-monospace,monospace;font-size:.8rem}@media (width<=860px){.board{border-width:6px;box-shadow:inset 0 0 0 2px #f7fbfe,0 10px #8fa3b0}}@keyframes pin-in{0%{opacity:0;transform:translateY(-32px) rotate(calc(var(--tilt,0deg) - 10deg)) scale(.88)}to{opacity:1;transform:translateY(0) rotate(var(--tilt,0deg)) scale(1)}}@keyframes tape-press{0%{opacity:0;transform:translate(-50%)rotate(-18deg)scaleX(.3)}to{opacity:.9;transform:translate(-50%)rotate(-2deg)scaleX(1)}}@keyframes board-in{0%{opacity:0;transform:translateY(16px)scale(.985)}to{opacity:1;transform:none}}@keyframes grid-drift{0%{background-position:0 0,0 0,0 0}to{background-position:28px 28px,28px 28px,0 0}}@keyframes room-light{0%,to{filter:brightness()}50%{filter:brightness(1.03)}}@keyframes sun-spot{0%,to{opacity:.55;transform:translate(0)}50%{opacity:1;transform:translate(-12px,8px)}}@keyframes marker-wiggle{0%,to{transform:rotate(-2deg)}40%{transform:rotate(1.4deg)}70%{transform:rotate(-2.6deg)}}@keyframes stamp{0%{transform:scale(1.12)rotate(-8deg)}to{transform:rotate(-1deg)}}@keyframes col-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes scribble{0%{opacity:0;letter-spacing:.12em}to{opacity:1;letter-spacing:0}}@keyframes fab-pop{0%{opacity:0;transform:scale(.4)rotate(-40deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes fab-pulse{0%,to{box-shadow:0 8px 0 var(--board-edge)}50%{box-shadow:0 8px 0 var(--board-edge), 0 0 0 10px #ffe56b47}}@keyframes veil{0%{background:#1c283400}to{background:#1c283459}}@keyframes sheet-up{0%{opacity:0;transform:translateY(48px)}to{opacity:1;transform:none}}@keyframes login-float{0%,to{transform:rotate(-1deg)translateY(0)}50%{transform:rotate(1deg)translateY(-6px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.sticky,.brand,.nav a.active,.login-card{transform:none}}
