/* Layout: full-bleed viewfinder stage; floating glass header up top, tool dock in the bottom thumb zone.
   One deliberate dark look (a camera viewfinder), so there is no light theme. */
:root{
  --graphite:#16181c;
  --glass:rgba(28,31,37,.9);
  --sheet-solid:#1d2026;
  --well:#2b2f37;
  --well-hi:#363b45;
  --rule:rgba(255,255,255,.08);
  --ink:#eeebe4;
  --muted:#a3a7b0;
  --pencil:#f2c14e;
  --pencil-ink:#2a2105;
  --paper:#fbfaf6;
  --grid:rgba(242,193,78,.8);
  --good:#5ccf8a;
  --warn:#f0a04b;
  --rec:#ef5b4c;
  --font-display:"Young Serif", Georgia, "Times New Roman", serif;
  --font-ui:"Figtree", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  color-scheme:dark;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%;margin:0}
body{
  background:var(--graphite);color:var(--ink);
  font-family:var(--font-ui);font-size:15px;line-height:1.4;
  overflow:hidden;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;
  -webkit-user-select:none;user-select:none;
}
button{font:inherit;color:inherit;border:0;cursor:pointer;background:none}
button:focus-visible,.add:focus-within,input:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--pencil);outline-offset:2px}
svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
svg .fill{fill:currentColor;stroke:none}

/* Stage */
.stage{position:fixed;inset:0;overflow:hidden;touch-action:none;background:var(--graphite);cursor:grab}
.stage.is-lightbox{background:var(--paper)}
.stage.dragging{cursor:grabbing}
body.locked .stage{cursor:default}
.stage video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:var(--graphite)}
.layer{position:absolute;left:50%;top:50%;transform-origin:center center;will-change:transform}
.layer canvas{display:block;width:100%;height:100%}
.grid{
  position:absolute;inset:0;pointer-events:none;
  background-image:
    linear-gradient(to right, var(--grid) var(--gl,2px), transparent var(--gl,2px)),
    linear-gradient(to bottom, var(--grid) var(--gl,2px), transparent var(--gl,2px));
  background-size:25% 25%;
  outline:var(--gl,2px) solid var(--grid);
}

.glass{background:var(--glass);border:1px solid var(--rule);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}

/* Header */
.top{
  position:fixed;top:0;left:0;right:0;z-index:5;
  display:flex;align-items:center;gap:8px;
  padding:calc(env(safe-area-inset-top,0px) + 10px) max(16px, env(safe-area-inset-right,0px)) 8px max(16px, env(safe-area-inset-left,0px));
  pointer-events:none;
}
.top > *{pointer-events:auto}
.brand{display:flex;align-items:center;gap:8px;height:44px;padding:0 14px;border-radius:14px;font-family:var(--font-display);font-size:18px;white-space:nowrap}
.brand i{width:8px;height:8px;border-radius:50%;background:var(--pencil);flex:none;display:grid;place-items:center;font-style:normal;font-family:var(--font-ui);font-weight:700;font-size:13px;color:var(--pencil-ink)}
.brand i.avatar{width:26px;height:26px}
.brand{color:var(--ink)}
.seg{display:inline-flex;gap:4px;padding:4px;border-radius:14px}
.seg button{height:36px;padding:0 13px;border-radius:10px;color:var(--muted);font-weight:600;font-size:14px;white-space:nowrap}
.seg button[aria-pressed="true"]{background:var(--pencil);color:var(--pencil-ink)}
.top .seg{margin-left:auto}
.icon-btn{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;flex:none}
.icon-btn svg,.tool svg,.add svg{width:22px;height:22px}

/* Hint, toast, recording chip */
.hint,.toast{
  position:fixed;left:50%;transform:translateX(-50%);
  top:calc(env(safe-area-inset-top,0px) + 66px);
  width:max-content;max-width:min(440px, calc(100vw - 32px));
  padding:10px 14px;border-radius:14px;font-size:13px;text-align:center;text-wrap:balance
}
.hint{z-index:4}
.hint b{color:var(--pencil);font-weight:600}
.toast{z-index:30;opacity:0;pointer-events:none;transform:translate(-50%,-8px);transition:opacity .2s, transform .2s;font-size:13.5px}
.toast.show{opacity:1;transform:translate(-50%,0)}
body.locked .toast{top:calc(env(safe-area-inset-top,0px) + 14px)}
.rec-chip{
  position:fixed;z-index:8;left:max(16px, env(safe-area-inset-left,0px));
  top:calc(env(safe-area-inset-top,0px) + 66px);
  display:flex;align-items:center;gap:8px;height:36px;padding:0 14px;border-radius:18px;
  background:var(--rec);color:#fff;font-weight:700;font-size:13px;font-variant-numeric:tabular-nums
}
.rec-chip i{width:9px;height:9px;border-radius:50%;background:#fff;animation:blink 1.2s infinite}
body.locked .rec-chip{top:calc(env(safe-area-inset-top,0px) + 14px)}
@keyframes blink{50%{opacity:.25}}

/* Dock */
.dock{
  position:fixed;left:0;right:0;bottom:0;z-index:5;display:flex;justify-content:center;
  padding:8px max(12px, env(safe-area-inset-right,0px)) calc(env(safe-area-inset-bottom,0px) + 12px) max(12px, env(safe-area-inset-left,0px));
}
.dock-inner{width:100%;max-width:640px;display:grid;gap:12px;padding:6px 12px 12px;border-radius:20px;min-width:0}
.handle{display:flex;justify-content:center;align-items:center;height:22px;width:100%}
.handle::before{content:"";width:36px;height:4px;border-radius:2px;background:var(--well-hi)}
.handle span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.dock.collapsed .more{display:none!important}

.shelf{display:flex;gap:10px;align-items:center;overflow-x:auto;scrollbar-width:none;min-width:0;padding:4px 2px}
.shelf::-webkit-scrollbar,.tools::-webkit-scrollbar{display:none}
.shelf-items{display:flex;gap:10px}
.add{flex:none;position:relative;height:60px;padding:0 14px;border-radius:14px;background:var(--pencil);color:var(--pencil-ink);font-weight:700;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px;cursor:pointer;white-space:nowrap;font-size:12.5px}
.add-alt{background:var(--well);color:var(--ink)}
.add-lib{background:var(--paper);color:var(--pencil-ink)}
.add input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;font-size:0}
.thumb-wrap{position:relative;flex:none}
.thumb{display:block;width:60px;height:60px;border-radius:12px;padding:0;background:var(--paper);overflow:hidden;box-shadow:0 0 0 2px transparent;transition:box-shadow .15s}
.thumb[aria-pressed="true"]{box-shadow:0 0 0 2px var(--graphite),0 0 0 4px var(--pencil)}
.thumb canvas{display:block;width:100%;height:100%}
.thumb-x{position:absolute;top:-6px;right:-6px;width:24px;height:24px;border-radius:50%;background:var(--well-hi);color:var(--ink);font-size:15px;line-height:24px;text-align:center;box-shadow:0 0 0 2px var(--graphite)}

.field{display:grid;grid-template-columns:64px minmax(0,1fr) 46px;align-items:center;gap:10px}
.field > label,.label{font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600}
.field output{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;font-size:14px}
input[type="range"]{width:100%;height:28px;margin:0;accent-color:var(--pencil);background:transparent}
.style-row{display:grid;grid-template-columns:64px minmax(0,1fr);align-items:center;gap:10px}
.style-row .seg,.seg-wide{background:var(--well);border:0;display:flex}
.style-row .seg button,.seg-wide button{flex:1;padding:0 6px;font-size:13.5px}

.tools{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 -12px;padding:0 12px;scroll-padding:0 12px;
  -webkit-mask-image:linear-gradient(to right,transparent,#000 12px,#000 calc(100% - 20px),transparent);mask-image:linear-gradient(to right,transparent,#000 12px,#000 calc(100% - 20px),transparent)}
.tool{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;width:66px;min-height:58px;padding:6px 2px;border-radius:12px;background:var(--well);font-size:11.5px;font-weight:600;color:var(--ink);white-space:nowrap}
.tool[aria-pressed="true"]{background:var(--pencil);color:var(--pencil-ink)}
#recBtn svg{color:var(--rec)}
.tool-get{background:var(--paper);color:var(--pencil-ink)}

/* Library */
.lib-top{position:sticky;top:-18px;z-index:2;display:grid;gap:10px;margin:0 -18px;padding:10px 18px;background:var(--sheet-solid);border-bottom:1px solid var(--rule)}
.sheet-tall{height:88%}
.sheet-head p{margin:2px 0 0}
.search{width:100%;height:46px;font:inherit;font-size:16px;color:var(--ink);background:var(--well);border:1px solid var(--rule);border-radius:12px;padding:0 14px;-webkit-user-select:text;user-select:text}
.chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 -18px;padding:0 18px}
.chips::-webkit-scrollbar{display:none}
.chips button{flex:none;height:36px;padding:0 14px;border-radius:18px;background:var(--well);font-weight:600;font-size:13.5px;white-space:nowrap}
.chips button[aria-pressed="true"]{background:var(--pencil);color:var(--pencil-ink)}
.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:8px}
.lib-item{aspect-ratio:1;max-width:100%;border-radius:12px;background:var(--paper);padding:8px;overflow:hidden;display:grid;place-items:center}
.lib-item img,.lib-item canvas{width:100%;height:100%;object-fit:contain;display:block}
.lib-item:active{transform:scale(.96)}
.sheet a{color:var(--pencil)}

/* Account */
#acctOut,#acctIn{display:grid;gap:12px}
.google-btn{display:flex;align-items:center;justify-content:center;gap:12px;height:52px;border-radius:14px;background:#fff;color:#1f1f1f;font-weight:600;font-size:16px;border:1px solid #dadce0}
.google-btn svg{width:22px;height:22px}
.who{display:flex;align-items:center;gap:12px}
.avatar-lg{width:48px;height:48px;border-radius:50%;background:var(--pencil);color:var(--pencil-ink);display:grid;place-items:center;font-weight:700;font-size:20px;flex:none}
.text-btn{justify-self:start;color:var(--muted);font-size:13.5px;text-decoration:underline;padding:4px 0}
.confirm{display:grid;gap:10px;padding:12px;border-radius:14px;background:var(--well)}
.danger{display:flex;align-items:center;justify-content:center;height:50px;border-radius:14px;font-weight:700;background:var(--rec);color:#fff}

/* Locked bar */
.lockbar{
  position:fixed;z-index:6;left:50%;transform:translateX(-50%);
  bottom:calc(env(safe-area-inset-bottom,0px) + 14px);
  width:min(440px, calc(100vw - 32px));
  display:grid;gap:6px;padding:8px 8px 8px 16px;border-radius:16px
}
.lock-row{display:flex;align-items:center;gap:12px}
.lock-row input{flex:1;min-width:0}
.pin-status{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted)}
.pin-status i{width:8px;height:8px;border-radius:50%;background:var(--warn);flex:none}
.pin-status.ok i{background:var(--good)}
.pin-status.ok{color:var(--ink)}
.unlock{height:44px;padding:0 14px;border-radius:12px;background:var(--pencil);color:var(--pencil-ink);font-weight:700;display:flex;align-items:center;gap:6px}
.unlock svg{width:20px;height:20px;stroke-width:1.9}

/* Sheets */
.scrim{position:fixed;inset:0;z-index:20;background:rgba(8,9,11,.55)}
.sheet{
  position:fixed;z-index:21;left:50%;transform:translateX(-50%);bottom:0;
  width:min(560px,100%);max-height:88%;overflow:auto;-webkit-user-select:text;user-select:text;
  display:grid;gap:12px;align-content:start;
  border-radius:22px 22px 0 0;
  padding:18px max(18px, env(safe-area-inset-right,0px)) calc(env(safe-area-inset-bottom,0px) + 20px) max(18px, env(safe-area-inset-left,0px));
}
.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.sheet h2{margin:0;font-family:var(--font-display);font-weight:400;font-size:22px;text-wrap:balance}
.sheet h3{margin:6px 0 0;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--pencil);font-weight:700}
.sheet p{margin:0;max-width:62ch;color:var(--ink)}
.close{width:40px;height:40px;border-radius:12px;background:var(--well);font-size:24px;line-height:1}
.steps{margin:0;padding-left:22px;display:grid;gap:6px;max-width:62ch}
.muted{color:var(--muted)!important}
.small{font-size:12.5px}
textarea{width:100%;font:inherit;font-size:17px;color:var(--ink);background:var(--well);border:1px solid var(--rule);border-radius:12px;padding:10px 12px;resize:vertical;-webkit-user-select:text;user-select:text}
.font-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.font-grid button{height:52px;border-radius:12px;background:var(--well);font-size:19px;padding:0 6px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.font-grid button[aria-pressed="true"]{background:var(--pencil);color:var(--pencil-ink)}
.letter-preview{width:100%;height:auto;aspect-ratio:600/220;max-width:100%;border-radius:12px;background:var(--paper)}
.primary,.secondary{display:flex;align-items:center;justify-content:center;height:50px;border-radius:14px;font-weight:700;font-size:16px;text-decoration:none;padding:0 18px}
.primary{background:var(--pencil);color:var(--pencil-ink)}
.secondary{background:var(--well);color:var(--ink)}
.btn-row{display:flex;gap:10px}
.btn-row > *{flex:1}
.progress{height:8px;border-radius:4px;background:var(--well);overflow:hidden}
.progress i{display:block;height:100%;width:0;background:var(--pencil);transition:width .2s}
.rec-video{width:100%;max-width:100%;border-radius:12px;background:#000;max-height:50vh}

@media (max-width:370px){ .brand span{display:none} .brand{padding:0 13px} .seg button{padding:0 11px} }
@media (min-width:700px){ .sheet{bottom:24px;border-radius:22px} }
@media (prefers-reduced-motion:reduce){ *{transition:none!important;animation:none!important} }
