:root{--screen: #fffefb;--warm-white: #fffcf8;--cream: #faf6f1;--track: #f4ede4;--track-alt: #f3ece2;--warm-black: #1a1715;--mid: #4a433d;--muted: #8a7e75;--subtle: #b3a99a;--subtle-2: #c2b6a8;--accent: #c4563a;--line: #f0eae2;--line-2: #f5efe7;--line-3: #efe7dd;--line-4: #f0e8df;--james: #5b7e99;--grace: #c46b86}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{font-family:DM Sans,sans-serif;background:#e9e7e3;color:var(--warm-black);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}textarea,button,input{font-family:DM Sans,sans-serif}textarea{outline:none;border:none;resize:none;background:transparent;padding:0}textarea::placeholder{color:#bcb3a8}input{outline:none}button{cursor:pointer;border:none;background:none;font-family:DM Sans,sans-serif;padding:0}.scroll::-webkit-scrollbar{width:0;height:0}.scroll{scrollbar-width:none;-ms-overflow-style:none}.serif{font-family:"Instrument Serif",serif}#root{display:flex;align-items:stretch;justify-content:center}.app{position:relative;height:100dvh;width:100vw;display:flex;flex-direction:column;background:var(--screen);overflow:hidden}@media (min-width: 540px){#root{align-items:center;min-height:100dvh}.app{height:min(880px,calc(100dvh - 48px));width:404px;border-radius:44px;box-shadow:0 30px 80px #1a171538}}.view{height:100%;display:flex;flex-direction:column;background:var(--screen);min-height:0}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--accent)}.topbar{padding:max(52px,calc(env(safe-area-inset-top) + 14px)) 16px 0;display:flex;align-items:center;justify-content:space-between}.topbar .label{font-size:12px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--subtle-2)}.icon-btn{width:36px;height:36px;border-radius:10px;background:var(--track-alt);display:flex;align-items:center;justify-content:center;color:#6b6259;transition:transform .2s ease,background .2s ease}.icon-btn:hover{background:#ece3d6}.icon-btn:active{transform:translateY(-1px)}.header{padding:9px 18px 0}.eyebrow-row{display:flex;align-items:center;gap:7px}.dot-sep{color:#e0d3c6}.name-input{font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--accent);background:transparent;border:none;border-bottom:1px dashed rgba(196,86,58,.45);padding:0 0 1px}.title-row{display:flex;align-items:baseline;gap:9px;margin-top:2px}.title-row .today{font-size:33px;line-height:1;color:var(--warm-black)}.title-row .date{font-size:13px;color:var(--muted)}.day-strip{display:flex;gap:7px;overflow-x:auto;padding:11px 18px 12px;scroll-behavior:smooth}.chip-wrap{display:flex;align-items:center;gap:7px;flex-shrink:0}.month-sep{font-size:8.5px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--subtle-2);writing-mode:vertical-rl;transform:rotate(180deg);align-self:stretch;display:flex;align-items:center}.chip{display:flex;flex-direction:column;align-items:center;gap:1px;min-width:46px;padding:7px 6px;border-radius:12px;flex-shrink:0;background:transparent;cursor:pointer;transition:transform .2s ease,background .2s ease}.chip:active{transform:translateY(-1px)}.chip.active{background:var(--warm-black)}.chip .dow{font-size:9px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--subtle)}.chip .num{font-size:15px;font-weight:600;color:#6b6259}.chip.active .dow{color:#e8c4af}.chip.active .num{color:#fff}.entries{flex:1;min-height:0;overflow-y:auto;padding:2px 16px 12px;display:flex;flex-direction:column;gap:9px}.empty-day{color:var(--subtle);font-size:13.5px;text-align:center;padding:28px 18px;line-height:1.6}.entry-card{position:relative;border-radius:4px 14px 14px 4px;padding:13px 15px;box-shadow:0 2px 20px #1a17150f}.entry-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}.author-chip{display:inline-block;padding:3px 9px;border-radius:100px;font-size:9.5px;font-weight:700;letter-spacing:1px;text-transform:uppercase}.entry-time{font-size:11px;color:#b5a99a;font-weight:500}.entry-text{font-size:14.5px;line-height:1.55;color:#2d2926;white-space:pre-wrap;word-break:break-word}.entry-photos{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}.entry-photos img{width:78px;height:78px;object-fit:cover;border-radius:10px;background:var(--cream)}.composer{padding:9px 14px max(12px,env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--screen)}.author-toggle{display:flex;gap:5px;background:var(--track);border-radius:11px;padding:3px;margin-bottom:9px}.pill{flex:1;text-align:center;padding:7px 0;border-radius:9px;font-size:11.5px;font-weight:600;letter-spacing:.3px;color:#a99f94;background:transparent;border:1px solid transparent;transition:background .2s ease,color .2s ease,border-color .2s ease}.pill[disabled]{cursor:default;opacity:.55}.pill-inner{display:inline-flex;align-items:center;gap:6px;justify-content:center}.swatch{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrink:0}.compose-box{border-radius:14px;background:#fff;padding:10px 12px;border:1.5px solid var(--grace);box-shadow:0 0 0 3px #c46b8621;transition:border-color .2s ease,box-shadow .2s ease}.compose-box textarea{width:100%;font-size:14.5px;line-height:1.5;color:#2d2926;min-height:40px}.compose-actions{display:flex;align-items:center;justify-content:space-between;margin-top:6px}.compose-actions .tools{display:flex;gap:13px;color:var(--subtle);align-items:center}.tool-btn{display:inline-flex;color:var(--subtle);transition:color .2s ease,transform .2s ease}.tool-btn:hover{color:var(--mid)}.tool-btn:active{transform:translateY(-1px)}.send{width:34px;height:34px;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:transform .2s ease,filter .2s ease}.send[disabled]{opacity:.45;cursor:default}.send:not([disabled]):active{transform:translateY(-1px)}.draft-photos{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.draft-photo{position:relative;width:56px;height:56px;border-radius:9px;overflow:hidden;background:var(--cream)}.draft-photo img{width:100%;height:100%;object-fit:cover}.draft-photo button{position:absolute;top:2px;right:2px;width:18px;height:18px;border-radius:50%;background:#1a1715b8;color:#fff;font-size:12px;line-height:1;display:flex;align-items:center;justify-content:center}.tl-topbar{padding:max(52px,calc(env(safe-area-inset-top) + 14px)) 14px 8px;display:flex;align-items:center;border-bottom:1px solid var(--line-3)}.back-btn{display:flex;align-items:center;gap:3px;color:#6b6259;font-size:14px;font-weight:600;width:84px;transition:transform .2s ease}.back-btn:active{transform:translateY(-1px)}.tl-title{flex:1;text-align:center}.tl-title .h{font-size:22px;line-height:1;color:var(--warm-black)}.tl-title .sub{font-size:10.5px;color:#a99f94;margin-top:2px}.tl-spacer{width:84px}.filter-wrap{padding:9px 16px 10px;background:var(--screen)}.filter{display:flex;gap:4px;background:var(--track);border-radius:11px;padding:3px}.seg{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 0;border-radius:9px;font-size:12px;font-weight:600;color:#a99f94;background:transparent;transition:background .2s ease,color .2s ease,box-shadow .2s ease}.seg.active{color:var(--warm-black);background:#fff;box-shadow:0 1px 3px #00000017}.tl-scroll{flex:1;min-height:0;overflow-y:auto}.week-header{position:sticky;top:0;z-index:3;background:#fffefbed;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:9px 18px 7px;display:flex;align-items:baseline;gap:8px;border-bottom:1px solid var(--line-4)}.week-header .wk{font-size:19px;color:var(--warm-black);white-space:nowrap;flex-shrink:0}.week-header .range{font-size:9.5px;text-transform:uppercase;letter-spacing:1px;color:#bcb0a2;font-weight:600}.day-row{display:flex;gap:12px;padding:13px 18px;border-bottom:1px solid var(--line-2);width:100%;text-align:left;align-items:flex-start}.day-row:hover{background:#faf6f199}.date-col{width:40px;flex-shrink:0;text-align:center}.date-col .dow{font-size:9px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--subtle)}.date-col .num{font-size:25px;line-height:1.05;color:var(--warm-black)}.date-col .mon{font-size:8.5px;text-transform:uppercase;letter-spacing:.5px;color:#c8bcae}.day-right{flex:1;min-width:0}.count-row{display:flex;gap:6px;margin-bottom:7px}.count-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px 2px 6px;border-radius:100px;font-size:10.5px;font-weight:700}.count-chip .swatch{width:6px;height:6px}.previews{display:flex;flex-direction:column;gap:6px}.preview{display:flex;gap:8px;align-items:flex-start}.preview .swatch{width:6px;height:6px;margin-top:5px}.preview .text{flex:1;min-width:0;font-size:12.5px;line-height:1.4;color:var(--mid);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-end{text-align:center;padding:22px 18px 34px;color:var(--subtle-2);font-size:11px;letter-spacing:.5px}.gate{flex:1;display:flex;flex-direction:column;justify-content:center;padding:32px 26px max(32px,env(safe-area-inset-bottom));gap:16px}.gate .brand-eyebrow{font-family:"Instrument Serif",serif;font-size:13px;letter-spacing:3px;text-transform:uppercase;color:var(--accent)}.gate h1{font-family:"Instrument Serif",serif;font-weight:400;font-size:40px;line-height:1.04;color:var(--warm-black);margin:6px 0 0}.gate p{font-size:14.5px;color:var(--mid);line-height:1.6;margin:0}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}.field input,.field select{width:100%;font-size:15px;color:var(--warm-black);background:#fff;border:1.5px solid var(--line);border-radius:12px;padding:12px 14px}.field input:focus,.field select:focus{border-color:var(--accent)}.role-toggle{display:flex;gap:8px}.role-toggle .role{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:12px 0;border-radius:12px;border:1.5px solid var(--line);font-size:14px;font-weight:600;color:var(--mid);background:#fff}.role-toggle .role.active{color:#fff}.btn-primary{width:100%;padding:14px 0;border-radius:12px;background:var(--warm-black);color:#fff;font-size:15px;font-weight:700;letter-spacing:.2px;transition:transform .2s ease,filter .2s ease}.btn-primary:active{transform:translateY(-1px)}.btn-primary[disabled]{opacity:.5;cursor:default}.link-btn{background:none;color:var(--accent);font-weight:600;font-size:13.5px;align-self:center}.note-msg{font-size:13px;color:var(--muted);text-align:center;line-height:1.55}.error-msg{font-size:13px;color:#b5462f;text-align:center;line-height:1.5}.invite-code{font-family:"Instrument Serif",serif;font-size:28px;letter-spacing:4px;color:var(--warm-black);text-align:center;background:var(--cream);border-radius:12px;padding:14px;-webkit-user-select:all;user-select:all}.signout{position:absolute;top:max(16px,env(safe-area-inset-top));right:16px;z-index:5;font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--subtle)}.center-screen{flex:1;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:14px}.entry-tools{margin-left:auto;display:flex;gap:2px}.entry-tool{width:26px;height:26px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:var(--subtle);transition:background .2s ease,color .2s ease}.entry-tool:hover{background:#1a17150d;color:var(--mid)}.react-trigger.on{color:var(--accent);background:#c4563a1a}.edit-text{width:100%;font-size:14.5px;line-height:1.55;color:#2d2926;background:#fff;border:1px solid var(--line);border-radius:10px;padding:9px 11px;resize:vertical}.edit-fields{display:flex;gap:8px;margin-top:8px}.edit-fields input{flex:1;min-width:0;font-size:13px;color:var(--mid);background:#fff;border:1px solid var(--line);border-radius:9px;padding:8px 10px}.edit-actions{display:flex;align-items:center;justify-content:space-between;margin-top:10px}.edit-del{font-size:13px;font-weight:600;color:#b5462f}.edit-cancel{font-size:13px;font-weight:600;color:var(--muted);padding:7px 12px}.edit-save{font-size:13px;font-weight:700;color:#fff;padding:7px 16px;border-radius:9px}.edit-del[disabled],.edit-cancel[disabled],.edit-save[disabled]{opacity:.5;cursor:default}.sheet-scrim{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;background:#1a171552;display:flex;align-items:flex-end;animation:fade .2s ease both}@media (min-width: 540px){.sheet-scrim{border-radius:44px;overflow:hidden}}.sheet{width:100%;background:var(--screen);border-radius:22px 22px 0 0;padding:18px 18px max(22px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:16px;box-shadow:0 -10px 40px #1a17152e;animation:slideUp .26s ease both}.sheet-head{display:flex;align-items:center;justify-content:space-between}.sheet-title{font-size:22px;color:var(--warm-black)}.field-hint{font-size:12px;color:var(--muted);line-height:1.5}.sheet-action{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:13px 0;border-radius:12px;background:var(--cream);color:var(--warm-black);font-size:14.5px;font-weight:600}.sheet-action:active{transform:translateY(-1px)}.sheet-signout{font-size:13px;font-weight:600;color:var(--muted);padding:6px 0;align-self:center}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#12100eed;display:flex;align-items:center;justify-content:center;padding:24px;animation:fade .18s ease both;overflow:hidden}.lb-img{max-width:100%;max-height:100%;border-radius:10px;object-fit:contain;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;will-change:transform}.lightbox-close{position:absolute;top:max(16px,env(safe-area-inset-top));right:16px;width:40px;height:40px;border-radius:50%;background:#ffffff29;color:#fff;display:flex;align-items:center;justify-content:center;z-index:2}.lb-counter{position:absolute;top:max(20px,calc(env(safe-area-inset-top) + 4px));left:50%;transform:translate(-50%);color:#ffffffd9;font-size:13px;font-weight:600;letter-spacing:.5px;z-index:2}.lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;background:#ffffff24;color:#fff;font-size:26px;line-height:1;display:flex;align-items:center;justify-content:center;z-index:2}.lb-prev{left:12px}.lb-next{right:12px}.tl-thumbs{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}.tl-thumbs img{width:56px;height:56px;object-fit:cover;border-radius:9px;background:var(--cream);cursor:pointer;transition:transform .2s ease}.tl-thumbs img:active{transform:translateY(-1px)}.entry-photos img{cursor:pointer}.sticker{position:absolute;z-index:4;display:inline-flex;align-items:center;gap:2px;padding:3px 6px;background:#fff;border-radius:100px;border:1px solid rgba(26,23,21,.06);box-shadow:0 2px 9px #1a17152e;animation:fade .2s ease both}.sticker.mine{border-color:#c4563a66;box-shadow:0 2px 11px #c4563a57}.sticker-emoji{font-size:16px;line-height:1}.sticker-count{font-size:10px;font-weight:700;color:var(--mid)}.react-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30}.sticker-palette{position:absolute;z-index:31;top:-20px;left:50%;transform:translate(-50%);display:inline-flex;gap:2px;padding:6px 9px;background:#fff;border:1px solid var(--line);border-radius:100px;box-shadow:0 8px 26px #1a171538;animation:pop .18s ease both}.react-choice{font-size:21px;line-height:1;padding:3px 5px;border-radius:9px;transition:transform .12s ease,background .12s ease}.react-choice:hover{transform:scale(1.22);background:var(--cream)}@keyframes pop{0%{opacity:0;transform:translate(-50%) scale(.6)}to{opacity:1}}.swatch-picker{display:flex;gap:9px;flex-wrap:wrap}.swatch-pick{width:30px;height:30px;border-radius:50%;border:2px solid transparent;box-shadow:0 0 0 1px #1a171514;transition:transform .15s ease}.swatch-pick:active{transform:translateY(-1px)}.swatch-pick.active{border-color:#fff;box-shadow:0 0 0 2px var(--warm-black)}.sheet-divider{height:1px;background:var(--line);margin:2px 0}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(24px);opacity:.4}to{transform:translateY(0);opacity:1}}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:fadeUp .5s ease-out both}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}.fade-up{animation:none}}
