:root{--controller-body-size: clamp(1rem, .74rem + .75vmin, 1.65rem);--page-shell-padding: clamp(1rem, 2.8vmin, 4.5rem);--page-shell-width: min(92vw, 1760px);--page-frame-gap: clamp(1rem, 1.6vmin, 2.4rem);--page-header-gap: clamp(.35rem, .6vmin, .9rem);--page-eyebrow-size: clamp(.78rem, .55rem + .5vmin, 1.15rem);--page-title-size: clamp(2.15rem, 1.1rem + 5vmin, 7.5rem);--page-title-line-height: 1.02;--page-description-size: clamp(1rem, .72rem + .86vmin, 1.85rem);--section-card-gap: clamp(1rem, 1.2vmin, 2rem);--section-card-padding: clamp(1.15rem, 1.4vmin, 2.6rem);--section-title-size: clamp(1.45rem, .95rem + 1.55vmin, 3rem);--section-description-size: clamp(1rem, .74rem + .72vmin, 1.65rem);color-scheme:light;font-family:Iowan Old Style,Palatino Linotype,Book Antiqua,serif;line-height:1.5;font-weight:400;color:#1b261d;background:radial-gradient(circle at top left,rgba(204,176,104,.28),transparent 30%),linear-gradient(180deg,#f8f3e7,#efe5cc)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;font-size:var(--controller-body-size)}a{color:#255540}button,input,select{font:inherit}#root{min-height:100vh}#root>main{padding-top:clamp(5.75rem,5rem + 3vmin,9rem)!important}.action-row{display:flex;flex-wrap:wrap;gap:clamp(.75rem,.85vmin,1.45rem)}.action-button{border:0;border-radius:999px;min-height:clamp(3rem,2.35rem + 1.85vmin,5.25rem);padding:clamp(.8rem,.66rem + .48vmin,1.25rem) clamp(1.2rem,.9rem + 1.1vmin,2.25rem);background:#234734;color:#f7f2e7;cursor:pointer;transition:transform .16s ease,opacity .16s ease}.action-button.prominent,.action-button.recitation-action{min-height:clamp(3.25rem,2.5rem + 2vmin,5.75rem);padding:clamp(.95rem,.72rem + .65vmin,1.45rem) clamp(1.45rem,1rem + 1.35vmin,2.65rem);font-size:clamp(1rem,.8rem + .62vmin,1.6rem);font-weight:700}.action-button.recitation-action.start{background:#0f6b45;color:#fffaf0;box-shadow:0 10px 24px #0f6b4538}.action-button.recitation-action.stop{background:#a13535;color:#fff7f0;box-shadow:0 10px 24px #a1353538}.action-button.secondary{background:#2347341f;color:#234734}.action-button.compact{padding:clamp(.65rem,.55rem + .38vmin,1rem) clamp(1rem,.72rem + .85vmin,1.7rem)}.action-button:disabled{cursor:not-allowed;opacity:.55}.action-button:not(:disabled):hover{transform:translateY(-1px)}.controller-status{position:fixed;top:max(clamp(1rem,1.1vmin,2rem),env(safe-area-inset-top));right:max(clamp(1rem,1.1vmin,2rem),env(safe-area-inset-right));z-index:20;display:inline-flex;align-items:center;gap:clamp(.7rem,.75vmin,1.35rem);max-width:min(42rem,calc(100vw - 2rem));border:1px solid rgba(35,71,52,.14);border-radius:999px;padding:clamp(.65rem,.55rem + .45vmin,1.15rem) clamp(.85rem,.68rem + .72vmin,1.55rem);background:#fffcf4e6;box-shadow:0 12px 30px #1d251b1f;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.controller-status-dot{flex:0 0 auto;width:clamp(.7rem,.55rem + .48vmin,1.15rem);height:clamp(.7rem,.55rem + .48vmin,1.15rem);border-radius:999px;background:#7c8f83}.controller-status-text{display:flex;flex-direction:column;min-width:0;line-height:1.18}.controller-status-text strong,.controller-status-text span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.controller-status-text strong{font-size:clamp(.92rem,.74rem + .52vmin,1.4rem)}.controller-status-text span{color:#5d6e63;font-size:clamp(.78rem,.64rem + .42vmin,1.15rem)}.controller-status-ready .controller-status-dot{background:#2e7d57}.controller-status-active .controller-status-dot{background:#0f6b45;box-shadow:0 0 0 5px #0f6b4524}.controller-status-warning .controller-status-dot{background:#c49a34}.controller-status-error .controller-status-dot{background:#a13535}.session-grid{display:grid;gap:clamp(.85rem,1vmin,1.65rem);grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr))}.session-item{display:flex;flex-direction:column;gap:clamp(.25rem,.36vmin,.65rem);padding:clamp(.85rem,.68rem + .72vmin,1.55rem) clamp(1rem,.76rem + .92vmin,1.9rem);border-radius:18px;background:#ffffffad}.session-item.wide{grid-column:1 / -1}.label{font-size:clamp(.82rem,.66rem + .42vmin,1.18rem);letter-spacing:.06em;text-transform:uppercase;color:#5d6e63}.value,.mono-value{font-size:clamp(1.05rem,.78rem + .9vmin,1.95rem)}.mono-value{font-family:SFMono-Regular,Menlo,Monaco,monospace}.muted{margin:0;color:#5d6e63}.scan-status{margin:0;color:#255540}.waveform-panel{display:flex;flex-direction:column;gap:clamp(.6rem,.7vmin,1.25rem);width:100%;overflow:hidden;border:1px solid rgba(15,107,69,.16);border-radius:18px;padding:clamp(.85rem,.68rem + .72vmin,1.55rem) clamp(1rem,.76rem + .92vmin,1.9rem) clamp(1rem,.78rem + .9vmin,1.9rem);background:#ffffff94}.waveform-header{display:inline-flex;align-items:center;gap:clamp(.55rem,.58vmin,1rem);color:#255540;font-size:clamp(.9rem,.7rem + .55vmin,1.4rem);font-weight:700}.waveform-header .controller-status-dot{width:clamp(.6rem,.48rem + .42vmin,1rem);height:clamp(.6rem,.48rem + .42vmin,1rem);background:#0f6b45;box-shadow:0 0 0 5px #0f6b451f}.waveform-canvas{display:block;width:100%;height:clamp(4.25rem,3.2rem + 3.2vmin,8rem);border-radius:12px;background:linear-gradient(90deg,rgba(35,71,52,.07),transparent 24%),#f7f2e7ad}.scanner-overlay{position:fixed;inset:0;z-index:50;width:100vw;min-height:100vh;min-height:100svh;overflow:hidden;background:#07110c;color:#f7f2e7}.scanner-header,.scanner-footer{position:absolute;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:clamp(1rem,1.1vmin,2rem);padding-right:max(clamp(1rem,1.25vmin,2.5rem),env(safe-area-inset-right));padding-left:max(clamp(1rem,1.25vmin,2.5rem),env(safe-area-inset-left))}.scanner-header{top:0;padding-top:max(clamp(1rem,1.25vmin,2.5rem),env(safe-area-inset-top));padding-bottom:clamp(1rem,1.15vmin,2rem);background:linear-gradient(180deg,#07110cdb,#07110c00)}.scanner-kicker,.scanner-status{margin:0;color:#cbd6c4}.scanner-kicker{font-size:clamp(.78rem,.6rem + .46vmin,1.2rem);letter-spacing:.08em;text-transform:uppercase}.scanner-title{margin:.1rem 0 0;max-width:min(46rem,76vw);font-size:clamp(1.25rem,1rem + 2.5vmin,4.4rem);line-height:1.1}.scanner-close-button{flex:0 0 auto;border:1px solid rgba(247,242,231,.24);border-radius:999px;min-height:clamp(2.75rem,2.2rem + 1.5vmin,4.75rem);padding:clamp(.72rem,.58rem + .52vmin,1.25rem) clamp(1rem,.74rem + .9vmin,1.85rem);background:#f7f2e71f;color:#f7f2e7;cursor:pointer}.scanner-viewport{position:absolute;inset:0;overflow:hidden;background:#14241a}.scanner-video{width:100%;height:100%;min-height:100vh;min-height:100svh;display:block;background:#14241a;object-fit:cover}.scanner-target{position:absolute;inset:50% auto auto 50%;width:min(68vw,44vmin,620px);aspect-ratio:1;transform:translate(-50%,-50%);border:1px solid rgba(247,242,231,.35);border-radius:24px;box-shadow:0 0 0 999px #07110c57}.scanner-target span{position:absolute;width:clamp(3.2rem,2.4rem + 2.4vmin,6rem);height:clamp(3.2rem,2.4rem + 2.4vmin,6rem);border-color:#f2c84b}.scanner-target span:nth-child(1){top:-2px;left:-2px;border-top:5px solid;border-left:5px solid;border-top-left-radius:22px}.scanner-target span:nth-child(2){top:-2px;right:-2px;border-top:5px solid;border-right:5px solid;border-top-right-radius:22px}.scanner-target span:nth-child(3){right:-2px;bottom:-2px;border-right:5px solid;border-bottom:5px solid;border-bottom-right-radius:22px}.scanner-target span:nth-child(4){bottom:-2px;left:-2px;border-bottom:5px solid;border-left:5px solid;border-bottom-left-radius:22px}.scanner-footer{bottom:0;min-height:2rem;justify-content:center;padding-top:clamp(1.25rem,1rem + 1.1vmin,2.5rem);padding-bottom:max(clamp(1rem,1.25vmin,2.5rem),env(safe-area-inset-bottom));background:linear-gradient(0deg,#07110ce6,#07110c00);text-align:center}.scanner-canvas{display:none}.scanner-fallback-panel{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(.9rem,1vmin,1.8rem);padding:clamp(7rem,12vmin,12rem) clamp(1.5rem,2vmin,4rem) clamp(9rem,14vmin,15rem);text-align:center}.scanner-fallback-title{margin:0;color:#f7f2e7;font-size:clamp(1.6rem,1rem + 4vmin,6rem);line-height:1.05}.scanner-fallback-copy{margin:0;max-width:46rem;color:#cbd6c4;font-size:clamp(1rem,.75rem + .85vmin,1.8rem)}.scanner-code-form{display:flex;flex-direction:column;gap:clamp(.7rem,.8vmin,1.45rem);width:min(100%,64rem)}.scanner-code-row{display:flex;gap:clamp(.7rem,.8vmin,1.45rem);width:100%}.scanner-code-input{flex:1 1 auto;min-width:0;border:1px solid rgba(247,242,231,.2);border-radius:999px;min-height:clamp(3rem,2.35rem + 1.8vmin,5.25rem);padding:clamp(.9rem,.7rem + .7vmin,1.55rem) clamp(1rem,.76rem + .9vmin,1.9rem);background:#f7f2e71a;color:#f7f2e7;font-family:SFMono-Regular,Menlo,Monaco,monospace;letter-spacing:.16em;text-align:center;text-transform:uppercase}.scanner-code-input::placeholder{color:#f7f2e785}.scanner-submit-button{flex:0 0 auto;border:0;border-radius:999px;min-height:clamp(3rem,2.35rem + 1.8vmin,5.25rem);padding:clamp(.9rem,.7rem + .7vmin,1.55rem) clamp(1.2rem,.9rem + 1vmin,2.25rem);background:#f2c84b;color:#07110c;cursor:pointer}.scanner-submit-button:disabled{cursor:not-allowed;opacity:.58}.link-panel{display:flex;flex-direction:column;gap:clamp(.3rem,.38vmin,.7rem);padding:clamp(1rem,.76rem + .9vmin,1.9rem);border-radius:18px;background:#ffffffad}.translation-control{display:flex;flex-direction:column;gap:clamp(.45rem,.54vmin,1rem)}.translation-select{width:100%;border:1px solid rgba(35,71,52,.16);border-radius:18px;min-height:clamp(3rem,2.35rem + 1.8vmin,5.25rem);padding:clamp(.9rem,.7rem + .7vmin,1.55rem) clamp(1rem,.76rem + .9vmin,1.9rem);background:#fffc;color:#1b261d}.transcript-stack{display:flex;flex-direction:column;gap:clamp(1rem,1.05vmin,1.9rem)}.transcript-copy{margin:0;font-size:clamp(1.02rem,.78rem + .85vmin,1.8rem);line-height:1.7;white-space:pre-wrap}.error-banner{margin:0;padding:clamp(1rem,.78rem + .9vmin,1.9rem) clamp(1.2rem,.9rem + 1.1vmin,2.3rem);border-radius:18px;background:#922c2c1f;color:#7c2020}@media(max-width:720px){.controller-status{left:1rem;right:1rem;justify-content:flex-start}.action-row{flex-direction:column}.action-button{width:100%}.scanner-header{align-items:flex-start}.scanner-title{max-width:16rem}.scanner-code-row{flex-direction:column}.scanner-submit-button{width:100%}}
