:root{--ink: #231f20;--paper: #f6f2e8;--accent: #6b8f3f;--line: #d8d0b8;--blue: #456c90;--gold: #d99531;font-family:Noto Sans TC,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink)}button{font-family:inherit;cursor:pointer;border:1px solid var(--ink);background:var(--ink);color:var(--paper);border-radius:999px;padding:.6rem 1.4rem;transition:opacity .16s ease,transform .12s ease}button:active:not(:disabled){transform:scale(.98)}button:disabled{opacity:.5;cursor:not-allowed}input,textarea{font-family:inherit;font-size:1rem;border:1px solid var(--line);border-radius:8px;padding:.6rem .8rem;background:#fff}.page{min-height:100vh;padding:2rem 1.25rem;max-width:480px;margin:0 auto;display:flex;flex-direction:column;gap:1rem}.page--center{justify-content:center;align-items:center;text-align:center}.page__error{color:#b23b3b}.play-page__greeting{margin:0;font-weight:700;color:var(--accent)}.play-page__hint{color:#5a5a4a}.play-page__message-label{display:flex;flex-direction:column;gap:.4rem;font-size:.9rem}.plant-picker{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}.plant-picker__item{background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:12px;padding:.6rem .4rem .5rem;display:flex;flex-direction:column;align-items:center;gap:.2rem;transition:border-color .16s ease,box-shadow .16s ease,transform .12s ease,background-color .16s ease}.plant-picker__item:active{transform:scale(.97)}.plant-picker__item--selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent) inset;background:#fbfaf3}.plant-picker__select{background:none;border:none;color:inherit;padding:.15rem;display:flex;flex-direction:column;align-items:center;gap:.3rem;width:100%}.plant-picker__name{font-weight:600;font-size:.85rem}.plant-picker__meaning{font-size:.75rem;color:#6a6a5a}.plant-picker__story-btn{background:none;border:none;color:#8a7a52;font-size:.7rem;text-decoration:underline;padding:.1rem}.nickname-field{display:flex;flex-direction:column;gap:.4rem;font-size:.85rem}.nickname-field__label{font-weight:600}.nickname-field__option{display:flex;align-items:center;gap:.4rem}.nickname-field__option input{width:auto}.nickname-field__solo{display:flex;flex-direction:column;gap:.3rem;font-weight:600}.nickname-field__input{margin-top:.2rem}.wall{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;background:#1a2c40;color:var(--paper)}.wall__stage,.wall__hud{position:absolute;top:0;right:0;bottom:0;left:0}.wall__canvas,.wall__overlay{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.wall__overlay,.wall__hud{pointer-events:none}.wall__header{position:absolute;top:3.4vh;left:2.6vw;max-width:46vw;text-shadow:0 1px 12px rgba(12,20,30,.45)}.wall__eyebrow{font-family:JetBrains Mono,Noto Sans TC,monospace;font-size:max(.7rem,1.25vh);letter-spacing:.18em;color:#f0c27a}.wall__header h1{font-family:"Noto Serif TC",serif;font-weight:900;font-size:max(1.4rem,4.2vh);line-height:1.2;margin:.25em 0 .2em}.wall__header p{margin:0;font-size:max(.85rem,1.75vh);color:#f6f2e8d1;display:flex;align-items:baseline;gap:.9em;flex-wrap:wrap}.wall__header strong{font-family:"Noto Serif TC",serif;font-size:1.35em;color:var(--paper)}.wall__offline{font-size:.85em;color:#f0c27a}.word-cloud{position:absolute;left:5vw;right:5vw;top:14.5vh;height:23vh}.word-cloud__word{position:absolute;top:0;left:0;white-space:nowrap;font-family:"Noto Serif TC",serif;font-weight:700;line-height:1;letter-spacing:.02em;color:var(--paper);text-shadow:0 0 .6em rgba(246,242,232,.22),0 .04em .18em rgba(12,22,34,.7),0 .08em .6em rgba(12,22,34,.45);transition:transform 1.8s cubic-bezier(.25,.8,.25,1),font-size 1.8s cubic-bezier(.25,.8,.25,1),opacity 1.2s ease,color 1.2s ease;animation:word-in 1.6s ease-out both}.word-cloud__word--meaning{font-weight:500;color:#c8d9e8}.word-cloud__word--fresh{color:#ffc56e;text-shadow:0 0 .45em rgba(217,149,49,.85),0 0 1.2em rgba(217,149,49,.5),0 .06em .35em rgba(12,22,34,.5)}.word-cloud__word--fresh .word-cloud__float{animation:word-pop 1.4s cubic-bezier(.2,1.6,.4,1) both,word-float 9s ease-in-out infinite}.word-cloud__float{display:inline-block;animation:word-float 9s ease-in-out infinite}@keyframes word-in{0%{opacity:0}}@keyframes word-pop{0%{transform:scale(.4);opacity:0}}@keyframes word-float{0%,to{transform:translate(0)}33%{transform:translate(.06em,-.12em)}66%{transform:translate(-.05em,.08em)}}.join-card{position:absolute;right:2.4vw;bottom:calc(max(46px,6.2vh) + 2.4vh);display:flex;align-items:center;gap:1.6vh;padding:1.4vh 2.2vh 1.4vh 1.4vh;max-width:36vw;background:#f6f2e8f5;color:var(--ink);border-radius:2vh;box-shadow:0 1.2vh 4vh #0a101873,0 0 0 1px #f6f2e899;pointer-events:auto;transition:box-shadow .4s ease,transform .4s ease}.join-card--pulse{transform:translateY(-.4vh);box-shadow:0 1.2vh 4vh #0a101873,0 0 0 .35vh #d99531e6,0 0 4vh #d995318c}.join-card__qr{width:max(112px,15vh);height:max(112px,15vh);display:block;border-radius:1vh;image-rendering:pixelated}.join-card__text{display:flex;flex-direction:column;gap:.5vh;min-width:0}.join-card__eyebrow{font-family:JetBrains Mono,monospace;font-size:max(.62rem,1.1vh);letter-spacing:.16em;color:var(--blue)}.join-card__text strong{font-family:"Noto Serif TC",serif;font-weight:900;font-size:max(1rem,2.5vh);line-height:1.25}.join-card__hint{font-size:max(.75rem,1.45vh);line-height:1.5;color:#5b5446;max-width:15em}.join-card__link{display:none}.ticker{position:absolute;left:0;right:0;bottom:0;height:max(46px,6.2vh);display:flex;align-items:center;font-size:max(.8rem,1.7vh);background:linear-gradient(to bottom,#120f0c00,#120f0cb8 38%)}.ticker__latest{flex:0 0 auto;display:flex;align-items:center;gap:.8em;max-width:46vw;height:100%;padding:0 1.4em 0 2.6vw;background:linear-gradient(to right,#120f0ccc 85%,#120f0c00);animation:ticker-latest-in .7s cubic-bezier(.2,.8,.2,1);white-space:nowrap;overflow:hidden}.ticker__latest--empty{color:#f6f2e8b3}@keyframes ticker-latest-in{0%{transform:translateY(100%);opacity:0}}.ticker__badge{font-size:.78em;font-weight:700;color:var(--ink);background:var(--gold);border-radius:999px;padding:.15em .7em}.ticker__viewport{flex:1;min-width:0;overflow:hidden;-webkit-mask-image:linear-gradient(to right,transparent,#000 4%,#000 96%,transparent);mask-image:linear-gradient(to right,transparent,#000 4%,#000 96%,transparent)}.ticker__track{display:flex;align-items:center;gap:2.6em;width:max-content;animation:ticker-scroll linear infinite}@keyframes ticker-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}.ticker__item{display:inline-flex;align-items:center;gap:.5em;white-space:nowrap;color:#f6f2e8eb}.ticker__dot{width:.55em;height:.55em;border-radius:50%;box-shadow:0 0 0 2px #f6f2e840}.ticker__plant{color:#f6f2e899}.ticker__message{color:#f0c27a;quotes:"「" "」"}@media (prefers-reduced-motion: reduce){.word-cloud__float,.ticker__track{animation:none}}@media (max-width: 700px){.wall__header{top:1.1rem;left:1.1rem;right:1.1rem;max-width:none}.wall__header h1{font-size:1.3rem}.word-cloud{left:3vw;right:3vw;top:8.5rem;height:22vh}.join-card{left:1rem;right:1rem;bottom:calc(52px + .8rem);max-width:none;padding:.7rem .9rem;border-radius:14px}.join-card__qr,.join-card__hint,.join-card__eyebrow,.join-card__scan{display:none}.join-card__text{flex-direction:row;align-items:center;justify-content:space-between;width:100%;gap:.6rem}.join-card__text strong{font-size:1rem}.join-card__link{display:inline-block;flex:0 0 auto;background:var(--ink);color:var(--paper);text-decoration:none;font-size:.85rem;font-weight:700;border-radius:999px;padding:.5rem .9rem}.ticker{height:52px;font-size:.85rem}.ticker__latest{max-width:62vw;padding-left:1rem}}.story-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0f0c09b8;display:flex;align-items:flex-end;justify-content:center;animation:story-fade-in .24s ease-out}@media (min-width: 640px){.story-modal{align-items:center}}.story-card{width:100%;max-width:480px;max-height:88vh;overflow-y:auto;background:#1d1814;color:#ede6d6;border:1px solid #3a3128;border-radius:24px 24px 0 0;padding:1.6rem 1.4rem 1.8rem;position:relative;animation:story-slide-up .32s cubic-bezier(.2,.8,.2,1)}@media (min-width: 640px){.story-card{border-radius:24px}}@keyframes story-fade-in{0%{opacity:0}}@keyframes story-slide-up{0%{transform:translateY(24px);opacity:0}}@media (prefers-reduced-motion: reduce){.story-modal,.story-card{animation:none}}.story-close{position:absolute;z-index:3;top:.9rem;right:.9rem;width:34px;height:34px;border-radius:50%;border:1px solid rgba(246,242,232,.25);background:#15110db3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#ede6d6;padding:0;font-size:.85rem}.closeup-viewer{position:relative;margin:-1.6rem -1.4rem 1rem;height:46vh;min-height:240px;max-height:360px;border-radius:24px 24px 0 0;overflow:hidden;background:radial-gradient(ellipse 120% 90% at 50% 15%,#2f2820,#15110d 75%)}@media (min-width: 640px){.closeup-viewer{border-radius:24px 24px 0 0}}.closeup-viewer canvas{width:100%;height:calc(100% - 3.6rem);display:block;touch-action:none}.closeup-viewer__stills{position:absolute;top:0;right:0;bottom:0;left:0;transition:opacity .5s ease}.closeup-viewer__stills.is-hidden{opacity:0;pointer-events:none}.closeup-viewer__still{position:absolute;top:0;left:0;width:100%;height:calc(100% - 3.6rem);object-fit:contain;object-position:50% 50%;opacity:0;transition:opacity .9s ease}.closeup-viewer__still.is-active{opacity:1}.closeup-viewer__introbar{position:absolute;top:.9rem;left:0;right:0;text-align:center;font-size:.78rem;color:#d8d0b8;letter-spacing:.02em}.closeup-viewer__hint,.closeup-viewer__tag{position:absolute;left:.9rem;bottom:4.1rem;font-size:.72rem;color:#d8d0b8;background:#15110d99;padding:.25rem .6rem;border-radius:999px;pointer-events:none}.closeup-viewer__slider{position:absolute;left:0;right:0;bottom:0;padding:.5rem .9rem .6rem;background:#0a0d108c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.closeup-viewer__range{width:100%;height:4px;border-radius:999px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:linear-gradient(to right,#d995318c 0,#d995318c 25%,#456c908c 25%,#456c908c 50%,#d995318c 50%,#d995318c 75%,#456c908c 75%,#456c908c);outline:none;padding:0}.closeup-viewer__range::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--gold);border:2px solid #15110d;cursor:pointer}.closeup-viewer__range::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--gold);border:2px solid #15110d;cursor:pointer}.closeup-viewer__range--disabled{height:4px;border-radius:999px;background:#d8d0b833}.closeup-viewer__slider--locked{opacity:.6}.closeup-viewer__slider-labels{display:flex;justify-content:space-between;margin-top:.35rem;font-size:.66rem;color:#a9a396}.closeup-viewer__retry{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:max-content;height:max-content;font-size:.8rem;color:#ede6d6;background:#0a0d10a6;border:1px solid #4a4030;padding:.5rem .9rem;border-radius:999px}.story-head{padding-right:2.2rem;margin-bottom:.8rem}.story-role{font-family:JetBrains Mono,monospace;font-size:.75rem;color:var(--gold);letter-spacing:.03em}.story-name{font-family:"Noto Serif TC",serif;font-weight:900;font-size:1.4rem;margin:.1rem 0}.story-meaning{font-size:.75rem;color:#a9a396}.story-body{font-size:.9rem;line-height:1.9;white-space:pre-line}.admin-page__header{display:flex;justify-content:space-between;align-items:center}.admin-page__section-title{font-size:.9rem;color:#5a5a4a;margin:.5rem 0 -.25rem}.admin-page__stats{display:flex;gap:1rem}.admin-page__stats>div{flex:1;background:#fff;border:1px solid var(--line);border-radius:12px;padding:.75rem;display:flex;flex-direction:column;align-items:center}.admin-page__stat-value{font-size:1.5rem;font-weight:700}.admin-page__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.admin-page__item{background:#fff;border:1px solid var(--line);border-radius:12px;padding:.75rem 1rem;display:flex;justify-content:space-between;gap:1rem;align-items:center}.admin-page__actions{display:flex;gap:.5rem}.admin-page__source-badge{display:inline-block;margin-left:.5rem;font-size:.7rem;color:#6a6a5a;border:1px solid var(--line);border-radius:999px;padding:.05rem .5rem}.admin-page__export-row{display:flex;justify-content:flex-end}.planted{align-items:center;text-align:center;justify-content:center;gap:.9rem}.planted__eyebrow{font-family:JetBrains Mono,monospace;font-size:.72rem;letter-spacing:.18em;color:var(--blue)}.planted__stage{position:relative;width:min(78vw,320px);aspect-ratio:4 / 3;border-radius:24px;overflow:hidden;background:radial-gradient(ellipse 90% 80% at 50% 70%,#3a3226,#1d1814 75%);box-shadow:0 18px 40px #231f2038}.planted__halo{position:absolute;left:50%;bottom:14%;width:46%;aspect-ratio:3 / 1;transform:translate(-50%);border-radius:50%;border:2px solid rgba(217,149,49,.85);box-shadow:0 0 22px #d995318c;animation:planted-halo 2.4s ease-out infinite}@keyframes planted-halo{0%{transform:translate(-50%) scale(.4);opacity:1}to{transform:translate(-50%) scale(1.5);opacity:0}}.planted__still{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;opacity:0;transform:scale(.96);transition:opacity .9s ease,transform 2.4s ease-out}.planted__still.is-active{opacity:1;transform:scale(1)}.planted__title{font-family:"Noto Serif TC",serif;font-weight:900;font-size:1.6rem;margin:.3rem 0 0}.planted__notice{margin:0;color:#5a5a4a;line-height:1.7}.planted__card{margin:.2rem 0 0;width:100%;background:#fff;border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:14px;padding:.9rem 1rem;text-align:left}.planted__card blockquote{margin:0 0 .35rem;font-family:"Noto Serif TC",serif;font-weight:700;font-size:1.15rem}.planted__card blockquote.is-empty{font-family:inherit;font-weight:400;font-size:.95rem;color:#8a8578}.planted__card figcaption{font-size:.82rem;color:#6a6a5a}.planted__actions{display:flex;gap:.75rem;margin-top:.4rem}.planted__secondary{background:transparent;color:var(--ink)}.planted__wall-link{display:block;width:100%;margin-top:.2rem;padding:.8rem 1rem;border-radius:999px;background:var(--blue);color:var(--paper);font-weight:700;text-decoration:none;text-align:center}.planted__countdown{margin:0;font-size:.78rem;color:#8a8578}@media (prefers-reduced-motion: reduce){.planted__halo{animation:none}}.admin-page{max-width:760px}.admin-join{display:flex;gap:1rem;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:14px;padding:1rem}.admin-join__qr{width:132px;height:132px;flex:0 0 auto;border-radius:8px}.admin-join__body{min-width:0;display:flex;flex-direction:column;gap:.5rem}.admin-join__body h2{margin:0;font-size:1rem}.admin-join__body p{margin:0;font-size:.85rem;color:#5a5a4a;line-height:1.6}.admin-join__url{font-family:JetBrains Mono,monospace;font-size:.8rem;background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:.4rem .6rem;overflow-wrap:anywhere}.admin-join__actions{display:flex;flex-wrap:wrap;gap:.5rem}.admin-join__actions button,.admin-join__button{font-size:.85rem;padding:.45rem 1rem}.admin-join__button{display:inline-block;border:1px solid var(--ink);border-radius:999px;color:var(--ink);text-decoration:none;background:transparent}.admin-page__item.is-hidden{opacity:.6;background:#f3efe6}.admin-page__item p{margin:.3rem 0}.admin-page__item time{font-size:.75rem;color:#8a8578}.admin-page__status{display:inline-block;margin-left:.4rem;font-size:.7rem;border-radius:999px;padding:.05rem .5rem;color:#2f5d3a;background:#e3efe1}.admin-page__status.is-hidden{color:#8a3b2b;background:#f6e2dc}.admin-page__hide{background:transparent;color:#8a3b2b;border-color:#c9a297}@media (max-width: 560px){.admin-join{flex-direction:column;align-items:center;text-align:center}.admin-join__actions{justify-content:center}.admin-page__stats{flex-wrap:wrap}.admin-page__stats>div{min-width:40%}}
