:root{--color-cream: #FDFBF7;--color-sand: #F5F1EA;--color-stone: #E8E1D5;--color-earth: #8B7E6A;--color-charcoal: #2D2A26;--color-deep: #1A1816;--color-accent: #B8956A;--font-display: "Cormorant Garamond", serif;--font-body: "Jost", sans-serif;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--radius: 8px;--max-width: 480px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100dvh;overflow:hidden}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);font-weight:300;color:var(--color-charcoal);background:var(--color-cream);line-height:1.5}input,button,textarea{font-family:inherit;font-weight:inherit;font-size:inherit}#app{max-width:var(--max-width);margin:0 auto;height:100dvh;overflow:hidden;display:flex;flex-direction:column}.view{display:flex;flex-direction:column;height:100dvh;overflow:hidden}.loading{color:var(--color-earth);text-align:center;padding-top:var(--space-2xl)}.logo{font-family:var(--font-display);font-size:1.5rem;font-weight:500;color:var(--color-deep);letter-spacing:-.01em}.join-view{justify-content:center;align-items:center;text-align:center;gap:var(--space-lg)}.subtitle{color:var(--color-earth);font-size:.95rem}.join-form,.identify-form{display:flex;flex-direction:column;gap:var(--space-sm);width:100%;max-width:320px}.join-form input,.identify-form input{padding:var(--space-md);border:1px solid var(--color-stone);border-radius:var(--radius);background:#fff;font-size:1rem;color:var(--color-charcoal);text-align:center;transition:border-color .2s}.join-form input:focus,.identify-form input:focus{outline:none;border-color:var(--color-accent)}.join-form input::placeholder,.identify-form input::placeholder{color:var(--color-earth)}button{cursor:pointer;border:none;border-radius:var(--radius);font-size:.95rem;font-weight:400;transition:all .2s}.join-form button,.identify-form button{padding:var(--space-md);background:var(--color-charcoal);color:var(--color-cream)}.join-form button:hover,.identify-form button:hover{background:var(--color-deep)}.join-form button:disabled,.identify-form button:disabled{opacity:.6;cursor:not-allowed}.error{color:#c0392b;font-size:.85rem;text-align:center}.info{color:var(--color-accent);font-size:.85rem;text-align:center}.identify-view{justify-content:center;align-items:center;text-align:center;gap:var(--space-lg)}.returning-toggle{padding:var(--space-sm) var(--space-md);background:none;color:var(--color-earth);font-size:.85rem;text-decoration:underline;text-underline-offset:2px}.returning-toggle:hover{color:var(--color-charcoal)}.divider{display:flex;align-items:center;width:100%;max-width:320px;gap:var(--space-md);color:var(--color-earth);font-size:.8rem}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--color-stone)}#app:has(.room-view){max-width:none}.room-view{gap:0;position:relative}.room-header{padding:var(--space-md) var(--space-md) var(--space-sm);border-bottom:1px solid var(--color-stone);flex-shrink:0}.room-header-top{display:flex;justify-content:space-between;align-items:flex-start}.header-left{display:flex;flex-direction:column;gap:2px;min-width:0}.header-title{font-family:var(--font-display);font-size:1.15rem;font-weight:500;color:var(--color-deep);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-right{display:flex;flex-direction:column;align-items:center;gap:2px;flex-shrink:0}.phase-label{font-size:.75rem;font-weight:400}.phase-pre{color:var(--color-earth)}.phase-live{color:var(--color-accent)}.phase-ended{color:var(--color-earth);font-style:italic}.others-link{background:none;color:var(--color-earth);font-size:.65rem;padding:0;border-radius:0;white-space:nowrap;letter-spacing:.02em}.others-link:hover{color:var(--color-charcoal)}.settings-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:none;color:var(--color-earth);border-radius:50%;padding:0}.settings-btn:hover{background:var(--color-sand);color:var(--color-charcoal)}.focus-board{flex:1;position:relative;overflow:hidden;user-select:none;-webkit-user-select:none}.focus-board.pannable{cursor:grab}.focus-board:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5}.others-canvas{position:absolute;top:50%;left:50%;z-index:1;transition:opacity .6s ease}.others-canvas.others-hidden{opacity:0;pointer-events:none}.center-shadow{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:480px;height:300px;border-radius:50%;background:radial-gradient(ellipse at center,rgba(0,0,0,.035) 0%,rgba(0,0,0,.015) 40%,transparent 75%);z-index:2;pointer-events:none}.center-blur-zone{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:440px;height:280px;z-index:2;background:radial-gradient(ellipse at center,rgba(253,251,247,.4) 0%,rgba(253,251,247,.2) 35%,transparent 75%);pointer-events:none;border-radius:50%}.board-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:3;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;width:85%;max-width:360px;pointer-events:none}.board-center .bubble-mine,.board-center .reciprocity-prompt{pointer-events:auto}.reciprocity-prompt{color:var(--color-earth);font-size:1rem;line-height:1.6;text-align:center;animation:fadeIn .4s ease both}.bubble{width:fit-content;max-width:240px;border-radius:20px;padding:10px 16px;line-height:1.4}.bubble-size-icon{display:inline-flex;vertical-align:middle;margin-right:4px;color:var(--color-earth);position:relative;top:-1px}.bubble-mine{font-size:1rem;background:var(--color-sand);color:var(--color-charcoal);cursor:pointer;display:inline-flex;align-items:center;gap:var(--space-sm);transition:box-shadow .2s ease,background .2s ease,max-width .2s ease,border-color .2s ease;position:relative;padding:10px 18px;max-width:280px;box-shadow:0 1px 4px #0000000f;border:1px solid var(--color-stone);z-index:3}.bubble-mine.bubble-new{animation:fadeIn .3s ease both}.bubble-mine:hover{box-shadow:0 0 0 2px var(--color-stone),0 1px 4px #0000000f}.bubble-pencil{position:absolute;right:-22px;top:50%;transform:translateY(-50%);opacity:0;transition:opacity .15s;color:var(--color-earth);pointer-events:none;line-height:0}@media(hover:hover){.bubble-mine:hover .bubble-pencil{opacity:.6}}.bubble-mine.editing{background:#fff;box-shadow:0 0 0 2px var(--color-accent);cursor:default;max-width:300px;flex-direction:column;align-items:stretch;gap:var(--space-sm);overflow:visible}.bubble-mine.editing .bubble-pencil{display:none}.bubble-other{position:absolute;font-size:.8rem;background:var(--color-stone);color:var(--color-earth);opacity:.65;margin-bottom:16px;max-width:200px;z-index:1;contain:layout style}.bubble-drift-1{animation:bubbleDrift1 8s ease-in-out infinite}.bubble-drift-2{animation:bubbleDrift2 10s ease-in-out infinite}.bubble-drift-3{animation:bubbleDrift3 9s ease-in-out infinite}.bubble-drift-4{animation:bubbleDrift4 11s ease-in-out infinite}.bubble-other.bubble-new{animation:gentleFadeIn .6s ease both}.bubble-other.bubble-new.bubble-drift-1{animation:gentleFadeIn .6s ease both,bubbleDrift1 8s ease-in-out .6s infinite}.bubble-other.bubble-new.bubble-drift-2{animation:gentleFadeIn .6s ease both,bubbleDrift2 10s ease-in-out .6s infinite}.bubble-other.bubble-new.bubble-drift-3{animation:gentleFadeIn .6s ease both,bubbleDrift3 9s ease-in-out .6s infinite}.bubble-other.bubble-new.bubble-drift-4{animation:gentleFadeIn .6s ease both,bubbleDrift4 11s ease-in-out .6s infinite}.bubble-other.bubble-new:nth-child(2){animation-delay:.1s}.bubble-other.bubble-new:nth-child(3){animation-delay:.2s}.bubble-other.bubble-new:nth-child(4){animation-delay:.3s}.bubble-other.bubble-new:nth-child(5){animation-delay:.4s}.bubble-other.bubble-new:nth-child(6){animation-delay:.5s}.bubble-author{font-size:.65rem;color:var(--color-earth);position:absolute;bottom:-13px;right:8px;white-space:nowrap}.add-btn{position:fixed;bottom:var(--space-lg);left:50%;transform:translate(-50%);width:52px;height:52px;border-radius:50%;background:var(--color-charcoal);color:var(--color-cream);font-size:1.5rem;display:flex;align-items:center;justify-content:center;border:none;line-height:1;box-shadow:0 4px 12px #0003;z-index:10}.add-btn-glyph{padding-top:1px}.add-btn:hover{background:var(--color-deep);transform:translate(-50%) scale(1.05)}.compose-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1d181666;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:35vh;z-index:50;padding-left:var(--space-md);padding-right:var(--space-md)}.compose-overlay.compose-hidden{display:none}.compose-wrap{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%;max-width:360px}.compose-input-wrap{position:relative;width:100%}.compose-input-wrap input{width:100%;padding:14px 44px 14px 16px;border:1px solid var(--color-stone);border-radius:24px;background:#fff;font-size:.95rem;color:var(--color-charcoal);box-shadow:0 4px 20px #0000001a;transition:border-color .2s,opacity .3s}.compose-input-wrap input:focus{outline:none;border-color:var(--color-accent)}.compose-input-wrap input::placeholder{color:var(--color-earth)}.compose-input-wrap input.compose-input-locked{opacity:.5;pointer-events:none}.compose-check{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;color:var(--color-stone);padding:6px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color .15s}.compose-check:hover{color:var(--color-earth)}.compose-check.compose-check-post{display:inline-flex;align-items:center;gap:3px;font-size:.75rem;color:var(--color-earth);right:6px;padding:4px 8px;border-radius:12px;background:var(--color-sand)}.compose-check.compose-check-post:hover{background:var(--color-stone);color:var(--color-charcoal)}.compose-size-pills{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;animation:fadeIn .2s ease both}.compose-size-pill{display:inline-flex;align-items:center;gap:5px;padding:7px 14px;background:#fdfbf7eb;border:1.5px solid var(--color-accent);border-radius:20px;font-size:.85rem;color:var(--color-accent);cursor:pointer;width:fit-content;white-space:nowrap;transition:background .15s,color .15s;box-shadow:0 1px 6px #0000001a}.compose-size-pill:hover{background:#b8956a1f}.compose-size-pill svg{flex-shrink:0;color:var(--color-accent)}.bubble-edit-input{border:none;background:transparent;font-size:1rem;color:var(--color-charcoal);font-family:var(--font-body);font-weight:300;padding:0;min-width:80px;width:100%;resize:none;overflow:hidden;line-height:1.4}.bubble-edit-input:focus{outline:none}.bubble-post-btn{position:absolute;bottom:-8px;right:-8px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:var(--color-cream);color:var(--color-earth);border-radius:50%;padding:0;cursor:pointer;box-shadow:0 1px 4px #0000001a;transition:background .15s,color .15s;z-index:1}.bubble-post-btn svg{width:11px;height:11px}.bubble-post-btn:hover{background:#fff;color:var(--color-charcoal)}.bubble-delete{position:absolute;top:-8px;left:-8px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:var(--color-cream);color:var(--color-earth);border-radius:50%;padding:0;box-shadow:0 1px 4px #0000001a;transition:background .15s,color .15s;z-index:1}.bubble-delete svg{width:11px;height:11px}.bubble-delete:hover{background:#fff;color:#c0392b}.size-pills{display:grid;grid-template-columns:1fr 1fr;gap:5px}.size-pill{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;background:var(--color-sand);border:1px solid var(--color-stone);border-radius:16px;font-size:.7rem;color:var(--color-earth);cursor:pointer;transition:border-color .15s,background .15s,color .15s}.size-pill:hover{border-color:var(--color-accent)}.size-pill.size-pill-active{border-color:var(--color-accent);background:#b8956a26;color:var(--color-accent)}.size-pill svg{flex-shrink:0}.size-pill.size-pill-active svg{color:var(--color-accent)}.identify-email-row{display:flex;align-items:center;gap:var(--space-sm);width:100%;max-width:320px}.identify-email-row input{flex:1;padding:var(--space-md);border:1px solid var(--color-stone);border-radius:var(--radius);background:#fff;font-size:1rem;color:var(--color-charcoal);transition:border-color .2s}.identify-email-row input:focus{outline:none;border-color:var(--color-accent)}.identify-email-row input::placeholder{color:var(--color-earth)}.email-arrow-btn{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:var(--color-charcoal);color:var(--color-cream);border-radius:50%;flex-shrink:0;padding:0}.email-arrow-btn:hover{background:var(--color-deep)}.email-arrow-btn:disabled{opacity:.6;cursor:not-allowed}.identify-otp-message{font-size:.9rem;color:var(--color-earth);line-height:1.5;margin-bottom:var(--space-sm);max-width:320px;text-align:center}.settings-panel{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:transparent;transition:background .3s ease}.settings-panel.settings-hidden{display:none}.settings-panel.settings-visible{background:#1d181626}.settings-content{position:absolute;top:58px;right:max(var(--space-md),calc((100vw - var(--max-width)) / 2 + var(--space-md)));width:260px;max-width:calc(100vw - var(--space-md) * 2);background:#fdfbf7f2;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:16px;padding:var(--space-md) var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm);box-shadow:0 4px 20px #00000014;border:1px solid var(--color-stone);transform:translateY(-12px);opacity:0;pointer-events:none;transition:transform .4s cubic-bezier(.4,0,.2,1),opacity .3s ease}.settings-panel.settings-visible .settings-content{transform:translateY(0);opacity:1;pointer-events:all}.settings-header{display:flex;justify-content:space-between;align-items:center}.settings-header h3{font-family:var(--font-display);font-size:1.2rem;font-weight:500}.settings-close-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:none;color:var(--color-earth);border-radius:50%;padding:0}.settings-close-btn:hover{background:var(--color-sand);color:var(--color-charcoal)}.settings-row{display:flex;align-items:center;gap:var(--space-sm)}.settings-label{font-size:.9rem;color:var(--color-charcoal)}.settings-name-value{font-size:.9rem;font-weight:500;color:var(--color-charcoal);outline:none;border-bottom:1px solid transparent;transition:border-color .2s}.settings-name-value.name-editing{border-bottom-color:var(--color-accent)}.settings-inline-btn{display:inline-flex;align-items:center;justify-content:center;background:none;color:var(--color-earth);padding:var(--space-xs);border-radius:50%}.settings-inline-btn:hover{background:var(--color-sand);color:var(--color-charcoal)}.settings-expandable{overflow:hidden;max-height:60px;transition:max-height .25s ease,opacity .25s ease;opacity:1}.settings-expandable.settings-collapsed{max-height:0;opacity:0;margin:0}.settings-note{font-size:.85rem;color:var(--color-earth)}.settings-link-btn{background:none;color:var(--color-accent);font-size:.85rem;padding:0;text-align:left;text-decoration:underline;text-underline-offset:2px}.settings-link-btn:hover{color:var(--color-charcoal)}.settings-email-section{display:flex;align-items:center;gap:var(--space-sm)}.settings-email-input{flex:1;min-width:0;padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-stone);border-radius:var(--radius);background:#fff;font-size:.85rem;color:var(--color-charcoal)}.settings-email-input:focus{outline:none;border-color:var(--color-accent)}@media(min-width:768px){:root{--max-width: 720px}.room-header{max-width:720px;margin:0 auto;width:100%}.board-center{max-width:420px}.center-blur-zone{width:560px;height:340px}.center-shadow{width:600px;height:360px}.focus-board:after{background:radial-gradient(ellipse at center,transparent 70%,rgba(253,251,247,.25) 88%,rgba(253,251,247,.5) 100%)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes gentleFadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:.65;transform:scale(1)}}@keyframes bubbleDrift1{0%,to{transform:translate(0)}25%{transform:translate(4px,-6px)}50%{transform:translate(-3px,-10px)}75%{transform:translate(5px,-4px)}}@keyframes bubbleDrift2{0%,to{transform:translate(0)}25%{transform:translate(-5px,-4px)}50%{transform:translate(6px,-8px)}75%{transform:translate(-2px,-5px)}}@keyframes bubbleDrift3{0%,to{transform:translate(0)}25%{transform:translate(3px,-8px)}50%{transform:translate(-6px,-5px)}75%{transform:translate(4px,-9px)}}@keyframes bubbleDrift4{0%,to{transform:translate(0)}25%{transform:translate(-4px,-7px)}50%{transform:translate(5px,-3px)}75%{transform:translate(-3px,-8px)}}
