:root{--fn-bg:#0b3325;--fn-chat:#f7f3ea;--fn-ink:#14241c;--fn-accent:#0b3325;--fn-accent-ink:#f7f3ea;--fn-muted:#5c6b63;--fn-error:#9b1c1c;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:var(--fn-bg);margin:0}.fn-shell{justify-content:center;align-items:stretch;min-height:100dvh;display:flex}.fn-frame{background:var(--fn-chat);width:100%;max-width:480px;min-height:100dvh;color:var(--fn-ink);flex-direction:column;display:flex}.fn-frame--loading{color:var(--fn-muted);justify-content:center;align-items:center}.fn-header{background:var(--fn-bg);color:var(--fn-accent-ink);align-items:center;gap:.75rem;padding:1rem 1.25rem;display:flex}.fn-avatar{object-fit:cover;background:#f7f3ea2e;border-radius:50%;width:40px;height:40px}.fn-header-text{flex-direction:column;line-height:1.2;display:flex}.fn-header-text span{opacity:.8;font-size:.8rem}.fn-parties{background:#0a2b1f;gap:.5rem;padding:.6rem 1rem;display:flex}.fn-party{color:#f7f3eabf;background:#f7f3ea14;border:1px solid #f7f3ea2e;border-radius:.6rem;flex-direction:column;flex:1;gap:.05rem;padding:.4rem .6rem;font-size:.72rem;line-height:1.25;display:flex}.fn-party strong{color:var(--fn-accent-ink);font-size:.78rem}.fn-party.is-shared{color:#cdeed7;background:#78c89629;border-color:#78c89680}.fn-party.is-shared strong:after{content:" ✓";color:#7ad39a}.fn-chat{flex-direction:column;flex:1;gap:.6rem;padding:1.25rem;display:flex;overflow-y:auto}.fn-turn{flex-direction:column;gap:.2rem;display:flex}.fn-turn-q{max-width:85%;color:var(--fn-ink);background:#fff;border-radius:.9rem .9rem .9rem .2rem;align-self:flex-start;margin:0;padding:.5rem .8rem;font-size:.9rem;box-shadow:0 1px 3px #0000000f}.fn-turn-a{background:var(--fn-accent);max-width:85%;color:var(--fn-accent-ink);word-break:break-word;border-radius:.9rem .9rem .2rem;align-self:flex-end;margin:0;padding:.5rem .8rem;font-size:.9rem}.fn-bubble{background:#fff;border-radius:1rem;padding:1rem 1.1rem;box-shadow:0 1px 4px #00000014}.fn-bubble h1{margin:0 0 .4rem;font-size:1.15rem}.fn-bubble p{color:var(--fn-ink);margin:0}.fn-error{color:var(--fn-error);margin-top:.75rem;font-size:.9rem}.fn-info{color:var(--fn-accent);background:#e7f0ea;border-radius:.7rem;margin-top:.75rem;padding:.7rem .85rem;font-size:.9rem}.fn-consent{color:var(--fn-ink);background:#fff;border:1px solid #00000026;border-radius:.8rem;align-items:flex-start;gap:.6rem;padding:.7rem .85rem;font-size:.9rem;display:flex}.fn-consent input{flex-shrink:0;width:1.1rem;height:1.1rem;margin-top:.15rem}.fn-form{flex-direction:column;gap:.5rem;display:flex}.fn-label{color:var(--fn-muted);font-size:.85rem;font-weight:600}.fn-input{appearance:none;color:var(--fn-ink);background:#fff;border:1px solid #0003;border-radius:.8rem;padding:.85rem 1rem;font-size:1rem}.fn-input:focus{outline:2px solid var(--fn-accent);outline-offset:1px}.fn-field{flex-direction:column;gap:.55rem;display:flex}.fn-checklist{-webkit-overflow-scrolling:touch;border:1px solid #0000001f;border-radius:.7rem;flex-direction:column;gap:.15rem;max-height:42vh;padding:.35rem;display:flex;overflow-y:auto}.fn-check{cursor:pointer;border-radius:.5rem;align-items:flex-start;gap:.6rem;padding:.6rem .5rem;display:flex}.fn-check:hover{background:#0000000a}.fn-check input{flex:none;width:1.15rem;height:1.15rem;margin-top:.15rem}.fn-check span{font-size:.95rem;line-height:1.35}.fn-canvas{touch-action:none;cursor:crosshair;background:#fff;border:1px solid #0003;border-radius:.7rem;width:100%;height:46vh;max-height:340px}.fn-canvas--signature{height:24vw;max-height:150px}.fn-canvas-stack{touch-action:none;cursor:crosshair;background:#fff;border:1px solid #0003;border-radius:.7rem;width:100%;position:relative;overflow:hidden}.fn-canvas-layer{touch-action:none;width:100%;height:100%;position:absolute;inset:0}.fn-canvas-layer--bg{pointer-events:none}.fn-review-mark{background:#fff;border:1px solid #00000026;border-radius:.4rem;max-width:9rem}.fn-mark-preview{background:#fff;border:1px solid #00000026;border-radius:.4rem;width:9rem;display:block;position:relative;overflow:hidden}.fn-mark-preview-layer{width:100%;height:100%;position:absolute;inset:0}.fn-mark-preview-layer:first-child{position:relative}.fn-canvas-actions{gap:.6rem;display:flex}.fn-canvas-actions .fn-btn{flex:1}.fn-invite{flex-direction:column;align-items:stretch;gap:.6rem;display:flex}.fn-qr{background:#fff;border:1px solid #0000001f;border-radius:.8rem;align-self:center;padding:.75rem}.fn-invite-hint{text-align:center;color:var(--fn-muted);margin:0;font-size:.9rem}.fn-invite .fn-input{font-size:.8rem}.fn-review{-webkit-overflow-scrolling:touch;flex-direction:column;gap:.6rem;max-height:58vh;display:flex;overflow-y:auto}.fn-review-title{color:var(--fn-muted);margin:.4rem 0 0;font-size:.95rem}.fn-review-list{flex-direction:column;gap:.35rem;margin:0;display:flex}.fn-review-row{border-bottom:1px solid #00000014;flex-direction:column;gap:.1rem;padding:.5rem 0;display:flex}.fn-review-row--sketch dd{margin-top:.4rem;display:block}.fn-review-sketch{object-fit:contain;background:#fff;border:1px solid #00000024;border-radius:.6rem;width:100%;max-height:240px;display:block}.fn-review-row dt{color:var(--fn-muted);font-size:.8rem}.fn-review-point{min-width:1.3rem;color:var(--fn-accent);font-weight:700;display:inline-block}.fn-review-row dd{justify-content:space-between;align-items:baseline;gap:.75rem;margin:0;display:flex}.fn-review-row dd span{word-break:break-word}.fn-review-empty{color:var(--fn-muted);font-style:italic}.fn-review-edit{appearance:none;color:var(--fn-accent);cursor:pointer;background:0 0;border:none;flex:none;font-weight:600;text-decoration:underline}.fn-actions{padding:1rem 1.25rem calc(1rem + env(safe-area-inset-bottom));border-top:1px solid #00000014;flex-direction:column;gap:.6rem;display:flex}.fn-btn{appearance:none;text-align:center;cursor:pointer;border:1px solid #0000;border-radius:.8rem;padding:.85rem 1rem;font-size:1rem;font-weight:600;text-decoration:none}.fn-btn:disabled{opacity:.5;cursor:progress}.fn-btn--primary{background:var(--fn-accent);color:var(--fn-accent-ink)}.fn-btn--secondary{color:var(--fn-accent);border-color:var(--fn-accent);background:0 0}.fn-btn--link{color:var(--fn-accent);background:0 0;text-decoration:underline}.fn-btn--status{color:var(--fn-muted);background:0 0;font-weight:500}
