/* Tetri’s Smile · feedback Post-Its (v13) */
.tsn{position:absolute;left:0;top:0;width:100%;height:0;z-index:95;pointer-events:none;font-family:"Outfit","Avenir Next","Segoe UI",system-ui,sans-serif}
.tsn.is-hidden{display:none}
.tsn__pin{position:absolute;left:0;top:0;width:30px;height:30px;border:0;padding:0;margin:0;background:#ffe66d;color:#1b1b1b;font:600 12px/1 "Outfit",system-ui,sans-serif;box-shadow:0 2px 10px rgba(0,0,0,.28),inset 0 -3px 0 var(--k,#ffd166);border-radius:2px 2px 2px 8px;transform-origin:center;cursor:grab;pointer-events:auto;display:grid;place-items:center;transition:box-shadow .2s,scale .2s;touch-action:none;z-index:1}
.tsn__pin:hover{scale:1.1;box-shadow:0 6px 18px rgba(0,0,0,.35),inset 0 -3px 0 var(--k,#ffd166)}
.tsn__pin.is-drag{cursor:grabbing;scale:1.15;box-shadow:0 12px 26px rgba(0,0,0,.4),inset 0 -3px 0 var(--k,#ffd166)}
.tsn__pin.is-lost{outline:2px dashed rgba(27,27,27,.5);outline-offset:2px}
.tsn__pin span{pointer-events:none}
.tsn__card{position:absolute;width:300px;background:#fff7a8;color:#1b1b1b;border-radius:3px;box-shadow:0 18px 44px rgba(0,0,0,.34),0 2px 6px rgba(0,0,0,.18);pointer-events:auto;padding:0 0 10px;z-index:2;animation:tsn-pop .22s cubic-bezier(.2,.7,.2,1) both}
@keyframes tsn-pop{from{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:none}}
.tsn__card.is-flash{animation:tsn-pop .22s both,tsn-flash 1.6s .2s 2}
@keyframes tsn-flash{0%,100%{box-shadow:0 18px 44px rgba(0,0,0,.34)}50%{box-shadow:0 0 0 6px rgba(255,209,102,.9),0 18px 44px rgba(0,0,0,.34)}}
.tsn__head{display:flex;align-items:center;gap:8px;padding:10px 10px 8px 12px;border-bottom:1px solid rgba(0,0,0,.08);cursor:grab;touch-action:none;background:linear-gradient(0deg,rgba(0,0,0,.03),rgba(0,0,0,0));border-top:4px solid var(--k,#ffd166);border-radius:3px 3px 0 0}
.tsn__no{font:600 11px/1 "Outfit",system-ui,sans-serif;letter-spacing:.12em}
.tsn__loc{flex:1;min-width:0;font:500 10px/1.3 "Outfit",system-ui,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#4a4a4a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tsn__x{width:26px;height:26px;border:0;border-radius:50%;background:rgba(0,0,0,.06);color:#1b1b1b;font:400 18px/1 system-ui;cursor:pointer;display:grid;place-items:center}
.tsn__x:hover{background:rgba(0,0,0,.12)}
.tsn__what{margin:8px 12px 4px;font:400 11px/1.4 "Outfit",system-ui,sans-serif;color:#5a5a5a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tsn__card textarea{display:block;width:calc(100% - 24px);margin:4px 12px;box-sizing:border-box;border:0;border-radius:2px;background:rgba(255,255,255,.55);padding:8px 10px;font:400 14px/1.45 "Outfit",system-ui,sans-serif;color:#1b1b1b;resize:vertical;min-height:88px;outline:none}
.tsn__card textarea:focus{background:rgba(255,255,255,.85);box-shadow:0 0 0 2px rgba(11,19,36,.25)}
.tsn__row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:4px 12px}
.tsn__row select,.tsn__row input{width:100%;box-sizing:border-box;border:0;border-radius:2px;background:rgba(255,255,255,.55);padding:7px 8px;font:400 12px/1.3 "Outfit",system-ui,sans-serif;color:#1b1b1b;outline:none}
.tsn__row select:focus,.tsn__row input:focus{background:rgba(255,255,255,.85);box-shadow:0 0 0 2px rgba(11,19,36,.25)}
.tsn__foot{display:flex;align-items:center;gap:8px;margin:8px 12px 0}
.tsn__foot small{flex:1;font:400 10px/1.3 "Outfit",system-ui,sans-serif;letter-spacing:.06em;color:#6a6a6a}
.tsn__foot button{border:0;border-radius:999px;padding:8px 12px;font:600 11px/1 "Outfit",system-ui,sans-serif;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;background:rgba(0,0,0,.07);color:#1b1b1b}
.tsn__foot button.tsn__save{background:#0b1324;color:#fff}
.tsn__foot button:hover{filter:brightness(1.08)}

/* context menu */
.tsn-menu{position:fixed;z-index:990;width:300px;max-width:calc(100vw - 16px);background:rgba(255,255,255,.98);color:#0b1324;border-radius:6px;box-shadow:0 20px 50px rgba(6,17,47,.35),0 1px 0 rgba(255,255,255,.6) inset;padding:6px;font-family:"Outfit","Avenir Next","Segoe UI",system-ui,sans-serif;animation:tsn-pop .16s cubic-bezier(.2,.7,.2,1) both;backdrop-filter:blur(8px)}
.tsn-menu__head{padding:8px 10px 10px;border-bottom:1px solid rgba(11,19,36,.08);margin-bottom:4px}
.tsn-menu__head b{display:block;font:500 11px/1.4 "Outfit",system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#0b1324}
.tsn-menu__head span{display:block;margin-top:3px;font:400 11px/1.4 "Outfit",system-ui,sans-serif;color:#6a7891;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tsn-menu button{display:block;width:100%;text-align:left;border:0;background:none;padding:9px 10px;border-radius:4px;font:400 13px/1.2 "Outfit",system-ui,sans-serif;color:#0b1324;cursor:pointer}
.tsn-menu button:hover,.tsn-menu button:focus-visible{background:rgba(11,19,36,.06);outline:none}
.tsn-menu button.is-primary{background:#0b1324;color:#fff;font-weight:500;margin:2px 0 4px}
.tsn-menu button.is-primary:hover{background:#12297a}
.tsn-menu button.is-primary::before{content:"＋ ";opacity:.8}
.tsn-menu hr{border:0;border-top:1px solid rgba(11,19,36,.08);margin:4px 0}
.tsn-menu__hint{margin:4px 10px 4px;font:400 10px/1.4 "Outfit",system-ui,sans-serif;letter-spacing:.04em;color:#8a94a6}

/* toast */
.tsn-toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translate(-50%,8px);z-index:998;background:#0b1324;color:#fff;padding:10px 16px;border-radius:999px;font:500 12px/1.3 "Outfit",system-ui,sans-serif;letter-spacing:.06em;box-shadow:0 10px 30px rgba(6,17,47,.4);opacity:0;transition:opacity .25s,transform .25s;pointer-events:none;max-width:calc(100vw - 32px)}
.tsn-toast.on{opacity:1;transform:translate(-50%,0)}

/* report panel */
.tsn-report{position:fixed;top:0;right:0;bottom:0;width:min(520px,100vw);z-index:995;background:#f5f6f9;color:#0b1324;box-shadow:-20px 0 60px rgba(6,17,47,.35);overflow:auto;transform:translateX(100%);transition:transform .3s cubic-bezier(.2,.7,.2,1);font-family:"Outfit","Avenir Next","Segoe UI",system-ui,sans-serif;padding:0 0 40px}
.tsn-report.is-open{transform:none}
.tsn-report__head{position:sticky;top:0;z-index:1;display:flex;align-items:flex-start;gap:12px;padding:22px 22px 14px;background:#0b1324;color:#fff}
.tsn-report__head > div{flex:1}
.tsn-report__lab{margin:0 0 6px;font:500 11px/1.4 "Outfit",system-ui,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:#9fc0ef}
.tsn-report__head h2{margin:0;font:500 22px/1.15 "Outfit",system-ui,sans-serif;letter-spacing:-.02em}
.tsn-report__head small{display:block;margin-top:4px;font:400 11px/1.4 "Outfit",system-ui,sans-serif;color:#a9bddc}
.tsn-report__head .tsn__x{background:rgba(255,255,255,.14);color:#fff}
.tsn-report__tools{display:flex;flex-wrap:wrap;gap:8px;padding:14px 22px;border-bottom:1px solid rgba(11,19,36,.08)}
.tsn-report__tools button,.tsn-report__tools a{border:1px solid rgba(11,19,36,.18);background:#fff;color:#0b1324;border-radius:999px;padding:8px 12px;font:500 11px/1 "Outfit",system-ui,sans-serif;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;text-decoration:none}
.tsn-report__tools button:hover,.tsn-report__tools a:hover{background:#0b1324;color:#fff}
.tsn-report__tools button.danger{margin-left:auto;border-color:rgba(200,40,40,.35);color:#9b1c1c}
.tsn-report__tools button.danger:hover{background:#9b1c1c;color:#fff}
.tsn-report__page{padding:12px 22px 4px}
.tsn-report__page h3{margin:10px 0 10px;font:500 13px/1.3 "Outfit",system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#0b1324}
.tsn-report__page h3 span{display:inline-block;min-width:20px;padding:2px 7px;border-radius:999px;background:#0b1324;color:#fff;font:600 10px/1.4 "Outfit",system-ui,sans-serif;text-align:center;margin-left:6px}
.tsn-report__note{background:#fff;border-radius:4px;padding:12px 14px 10px;margin:0 0 10px;border-left:4px solid var(--k,#ffd166);box-shadow:0 2px 8px rgba(11,19,36,.06)}
.tsn-report__meta{display:flex;flex-wrap:wrap;gap:4px 12px;font:500 10px/1.4 "Outfit",system-ui,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:#6a7891}
.tsn-report__meta b{color:#0b1324}
.tsn-report__loc{margin:6px 0 4px;font:400 11px/1.5 "Outfit",system-ui,sans-serif;color:#4b5467}
.tsn-report__loc code{font:400 11px/1.4 "Outfit",monospace;color:#6a7891}
.tsn-report__text{margin:6px 0 8px;font:400 14px/1.5 "Outfit",system-ui,sans-serif;color:#0b1324;white-space:pre-wrap}
.tsn-report__act{display:flex;gap:8px}
.tsn-report__act button{border:0;background:rgba(11,19,36,.06);color:#0b1324;border-radius:999px;padding:7px 11px;font:500 10px/1 "Outfit",system-ui,sans-serif;letter-spacing:.1em;text-transform:uppercase;cursor:pointer}
.tsn-report__act button:hover{background:#0b1324;color:#fff}
.tsn-report__empty{padding:30px 22px;font:300 15px/1.6 "Outfit",system-ui,sans-serif;color:#4b5467}
html.a11y-darkc .tsn-menu,html.a11y-darkc .tsn-report,html.a11y-darkc .tsn__card{filter:none}
@media (max-width:640px){.tsn__card{width:calc(100vw - 16px)!important}}
@media print{.tsn,.tsn-menu,.tsn-toast{display:none!important}}
