/* Classic redwood frame. Corner sprites use the user's unmodified reference. */
.ktv-letter{--redwood-art:url('/ktv-redwood-reference.png');box-sizing:border-box;width:min(560px,calc(100vw - 24px));height:min(480px,calc(100dvh - 40px));max-width:none;max-height:calc(100dvh - 40px);margin:auto;padding:9px 10px 11px;border:1px solid #baa584;border-radius:0;color:#e9e2a2;background:repeating-linear-gradient(0deg,#39090d66 0 1px,transparent 1px 4px),repeating-linear-gradient(90deg,#6c2225 0 2px,#27080a 2px 4px,#b7655266 4px 5px,#511619 5px 9px);box-shadow:0 0 0 1px #200605,0 0 0 2px #775c42,0 16px 50px #000b,inset 0 0 0 2px #551418,inset 0 0 0 3px #b7786266,inset 0 0 0 5px #21090b,inset 0 0 0 6px #a3574566;overflow:visible;font-family:SimSun,"Songti SC","Noto Serif SC",serif;isolation:isolate}
.ktv-letter::backdrop{background:#060408c9}
.ktv-letter-frame{height:100%;box-sizing:border-box;position:relative;display:flex;flex-direction:column;min-height:0;border:1px solid #b99b79;border-radius:0;outline:1px solid #21090a;background:repeating-linear-gradient(91deg,#76514213 0 1px,transparent 1px 3px),repeating-linear-gradient(1deg,#08060633 0 1px,transparent 1px 4px),radial-gradient(ellipse at 25% 40%,#47212470,transparent 55%),#241416;box-shadow:inset 0 0 0 2px #410c11,inset 0 0 20px #0c0507bb}
.ktv-letter-head{position:relative;display:flex;align-items:center;justify-content:center;flex:0 0 auto;min-height:36px;height:auto;max-width:none;margin:0;padding:5px 87px 7px;border-bottom:1px solid #ad7359;background:linear-gradient(#150f10ee,#101012ee);box-shadow:0 1px 0 #190407,inset 0 1px #624039}
.ktv-letter-head:after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:3px;background:repeating-linear-gradient(90deg,#b8896955 0 1px,#611f2455 1px 3px,#18080b 3px 5px);pointer-events:none}
.ktv-letter-head h2{font-family:inherit;font-size:20px;line-height:1.35;letter-spacing:3px;font-weight:700;color:#e9e096;text-shadow:1px 1px #151100,0 0 2px #a2924255;margin:0;text-align:center;overflow-wrap:anywhere}
.letter-head-rule{display:none}
.ktv-letter-close{position:absolute;z-index:4;top:8px;right:8px;width:20px;height:20px;padding:0;border:1px solid #c4ae7d;border-radius:0;background:#211b10;box-shadow:inset 0 0 0 1px #090907;color:#ece29a;font:bold 20px/16px SimSun,serif;cursor:pointer}.ktv-letter-close:active{transform:translateY(1px);background:#120c08}
.ktv-letter-body{position:relative;display:flex;flex:1;min-height:0;margin:14px 13px 8px;padding:0;container-type:size;container-name:letter-body}
.ktv-letter-paper{flex:1;min-width:0;min-height:0;margin:0;padding:17px 18px;border:1px solid #d0b290;outline:1px solid #3d0e13;background:repeating-linear-gradient(0deg,#87705606 0 1px,transparent 1px 3px),linear-gradient(100deg,#0e0c0de8,#100d10f2);box-shadow:0 0 0 3px #44181a66,inset 0 0 0 1px #3e2223,inset 0 0 13px #0008;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#92252b #191114}
/* The translucent hint floats above the rightmost body text without intercepting scrolling. */
.ktv-letter-scroll-hint{position:absolute;z-index:5;right:26px;top:50%;transform:translateY(-50%) translateZ(0);display:flex;flex-direction:column;align-items:center;gap:12px;width:30px;max-height:100%;margin:0;padding:0;border:0;background:transparent;color:#fff;opacity:.42;text-shadow:0 2px 2px #000c,0 5px 10px #0008,0 0 2px #fff3;pointer-events:none;user-select:none;transition:opacity 220ms ease}
.ktv-letter-scroll-hint>span{writing-mode:vertical-rl;text-orientation:upright;white-space:nowrap;font-family:ClubKai,KaiTi,STKaiti,'楷体',serif;font-size:24px;font-weight:400;line-height:1.15;letter-spacing:2px}
.ktv-letter-scroll-arrow{display:block;flex:none;width:24px;height:30px;filter:drop-shadow(0 3px 3px #0009)}
.ktv-letter.is-at-bottom .ktv-letter-scroll-hint{opacity:0;visibility:hidden;transition:opacity 220ms ease,visibility 0s 220ms}
.ktv-letter-read-status{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

.ktv-letter-paper::-webkit-scrollbar{width:12px}.ktv-letter-paper::-webkit-scrollbar-track{background:#170d10;border-left:1px solid #bba175}.ktv-letter-paper::-webkit-scrollbar-thumb{background:linear-gradient(90deg,#6c151c,#ba3535 40%,#811621);border:1px solid #d49d7b;box-shadow:inset 0 0 0 1px #4c1015}
.ktv-letter-content{position:relative;z-index:2;white-space:pre-wrap;overflow-wrap:anywhere;font-size:18px;line-height:1.8;letter-spacing:.5px;text-align:left;color:#e2dfae;text-shadow:1px 1px #000}
.ktv-letter-foot{flex:0 0 auto;display:flex;align-items:center;justify-content:center;padding:9px 16px 17px;margin:0}
.ktv-letter-action{position:relative;min-width:116px;min-height:37px;padding:6px 23px;border:1px solid #d0aa7d;border-radius:3px 3px 1px 1px;background:repeating-linear-gradient(92deg,#e99a6120 0 1px,#10040818 1px 3px),repeating-linear-gradient(1deg,#dd796220 0 1px,transparent 1px 4px),linear-gradient(#75171e,#4b1018 45%,#781923 75%,#490c15);box-shadow:0 0 0 1px #280509,0 2px 0 #140406,inset 0 0 0 1px #381017,inset 0 0 0 2px #a35946,inset 0 0 0 3px #50151b,inset 0 1px 4px #e09c57aa;color:#fff0a0;font:700 19px/1.25 SimSun,"Songti SC",serif;letter-spacing:4px;text-indent:4px;text-shadow:1px 1px #3c1600,0 0 2px #c79a3755;cursor:pointer;transition:transform 100ms,box-shadow 100ms,filter 100ms}
.ktv-letter-action:before,.ktv-letter-action:after{content:"";position:absolute;top:8px;bottom:8px;width:4px;border-top:1px solid #d1a373;border-bottom:1px solid #d1a373;border-left:1px solid #9b6454;pointer-events:none}.ktv-letter-action:before{left:5px}.ktv-letter-action:after{right:5px;transform:scaleX(-1)}
.ktv-letter-action:enabled:hover{filter:brightness(1.13)}.ktv-letter-action:enabled:active,.ktv-letter.is-pressing .ktv-letter-read{transform:translateY(3px) scale(.97);box-shadow:0 0 0 1px #250509,inset 1px 3px 5px #150408cc,inset 0 0 0 2px #783d35;filter:brightness(.84)}
.ktv-letter-read.is-locked{filter:grayscale(1) brightness(.68);color:#c2c2c2;cursor:not-allowed;text-shadow:1px 1px #191919}
.ktv-letter :is(button,.ktv-letter-paper):focus-visible{outline:1px solid #f0df93;outline-offset:3px}
.letter-corner{position:absolute;z-index:3;pointer-events:none;border:0;box-shadow:none;background-image:var(--redwood-art);background-repeat:no-repeat;background-size:928px 526px}
/* CSS windows preserve the reference's carving pixels without stretching. */
.letter-corner.tl,.letter-corner.tr{top:-9px;width:103px;height:29px;background-position:-350px -5px}.letter-corner.tl{left:-10px}.letter-corner.tr{right:-10px;transform:scaleX(-1)}
.letter-corner.bl,.letter-corner.br{bottom:-10px;width:28px;height:28px;background-position:-357px -473px}.letter-corner.bl{left:-7px}.letter-corner.br{right:-7px;transform:scaleX(-1)}
.ktv-letter.is-pressing{animation:ktv-letter-press 280ms ease-in-out both}@keyframes ktv-letter-press{0%{transform:translateY(0) scale(1)}50%{transform:translateY(5px) scale(.977);filter:brightness(.88);box-shadow:0 0 0 1px #200605,0 0 0 2px #775c42,0 5px 18px #0009}100%{transform:translateY(2px) scale(.987);filter:brightness(.95)}}
.admin-form.ktv-notice-editor{margin-bottom:24px}.admin-form.ktv-notice-editor textarea{resize:both;min-width:min(240px,100%);max-width:100%;min-height:150px;height:210px;line-height:1.7}.ktv-notice-editor .notice-actions{display:flex;flex-wrap:wrap;gap:10px}.ktv-notice-editor .notice-actions button{flex:1;min-width:120px}.ktv-notice-editor p{font-size:13px;line-height:1.6;margin:0;color:#c9bc81}.ktv-notice-editor .notice-status{min-height:1.5em;color:#e7d793}.ktv-notice-editor h3{margin:0;font-size:20px}.ktv-notice-editor input[type=checkbox]{width:20px;height:20px;min-height:0;padding:0;margin:0}.ktv-notice-editor .notice-enabled{display:flex;flex-direction:row;align-items:center;gap:10px}
@media(max-width:480px){.ktv-letter{max-height:calc(100dvh - 24px)}.ktv-letter-head{padding:7px 65px;min-height:38px}.ktv-letter-head h2{font-size:18px;letter-spacing:2px}.ktv-letter-body{margin:12px 9px 7px;padding:0}.ktv-letter-paper{padding:13px 12px}.ktv-letter-scroll-hint{right:24px;width:28px}.ktv-letter-scroll-hint>span{font-size:22px}.ktv-letter-scroll-arrow{max-width:24px}.ktv-letter-content{font-size:17px;line-height:1.8}.ktv-letter-foot{padding-bottom:15px}}
@media(prefers-reduced-motion:reduce){.ktv-letter.is-pressing{animation:none}.ktv-letter-action,.ktv-letter-scroll-hint,.ktv-letter.is-at-bottom .ktv-letter-scroll-hint{transition:none}}
.ktv-letter-close[hidden]{display:none}
.ktv-letter-content{font-size:var(--letter-font-size,18px)}
.letter-editor-field{display:flex;flex-direction:column;gap:9px;min-width:0}
.letter-editor-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px;border:1px solid #65551b;border-radius:8px;background:#17160d}
.letter-editor-toolbar>span{font-size:14px}
.admin-form .letter-editor-toolbar button{width:auto;min-height:36px;padding:5px 12px;margin:0;font-size:14px;flex:none}
.admin-form .letter-editor-toolbar [data-letter-color]{background:#090909;color:var(--swatch);border:1px solid var(--swatch)}
.admin-form .letter-editor-toolbar .letter-color-picker{display:flex;flex-direction:row;align-items:center;gap:7px;font-size:14px}
.admin-form .letter-color-picker input[type=color]{width:42px;height:36px;min-height:0;padding:3px;margin:0}
.letter-content-editor{box-sizing:border-box;min-width:min(240px,100%);max-width:100%;min-height:150px;height:270px;width:100%;resize:both;overflow:auto;border:1px solid #65551b;border-radius:10px;padding:14px 16px;background:#080707;color:#e2dfae;font:18px/1.8 SimSun,"Songti SC",serif;white-space:pre-wrap;overflow-wrap:anywhere;text-align:left;caret-color:#fff}
.letter-content-editor:focus{outline:2px solid #f5df4d;outline-offset:2px}
.letter-content-editor:empty:before{content:attr(data-placeholder);color:#b2a468;pointer-events:none}
.letter-content-editor::selection,.letter-content-editor *::selection{background:#3452b9;color:#fff}
@media(max-width:480px){.letter-editor-toolbar{gap:7px}.admin-form .letter-editor-toolbar button{min-height:42px}.letter-content-editor{min-height:220px}}

.ktv-letter-foot{gap:16px}.ktv-letter-action{min-width:100px}
.founder-permission-badge{display:inline-block;margin-left:10px;color:#ff4545;font-size:clamp(16px,2.5vw,22px);font-weight:700;vertical-align:middle}.admin-sidebar [data-founder-only][hidden],.admin-form[data-founder-only][hidden]{display:none!important}
#admin-products{border:1px solid #65551b;border-radius:12px;padding:8px 20px;margin:0 0 24px;background:#11110b}#admin-products>div:last-child{border-bottom:0}@media(max-width:480px){#admin-products{padding:8px 14px;margin-bottom:20px}}
.admin-form .letter-logic-toggle{display:flex;align-items:center;gap:12px;text-align:left;margin:0;padding:14px 16px}.letter-logic-toggle small{flex:1;font-size:13px;font-weight:400;text-align:right}.letter-logic-options{margin:0;padding:16px;border:1px solid #65551b;border-radius:10px;display:flex;flex-direction:column;gap:16px}.ktv-notice-editor .letter-logic-choice{display:flex;flex-direction:row;align-items:center;gap:10px;margin:0;line-height:1.6}.admin-form .letter-logic-choice input[type=radio]{appearance:auto;flex:0 0 20px;width:20px;height:20px;min-height:0;margin:0;padding:0;accent-color:#f5df4d}.letter-logic-options legend{padding:0 8px}.letter-logic-options[hidden],#letter-interval-field[hidden]{display:none}@media(max-width:480px){.admin-form .letter-logic-toggle{flex-wrap:wrap;gap:6px}.letter-logic-toggle small{font-size:12px}.letter-logic-options{padding:12px}}

@container letter-body (max-height:260px){.ktv-letter-scroll-hint{gap:8px}.ktv-letter-scroll-hint>span{font-size:clamp(8px,calc((100cqh - 48px)/8),22px);letter-spacing:1px;line-height:1}.ktv-letter-scroll-arrow{width:20px;height:26px}}

/* Balance the right padding with the thin scrollbar's occupied width. */
.ktv-letter-paper{padding-right:12px}
.ktv-letter-paper::-webkit-scrollbar{width:6px}
@media(max-width:480px){.ktv-letter-paper{padding-right:6px}}

.admin-sidebar .password-founder-badge{color:#ff4545;font-size:12px;font-weight:700;margin-left:4px}.admin-sidebar .password-founder-badge[hidden]{display:none!important}

.admin-sidebar button[data-admin-panel="passwords"],.admin-sidebar button[data-admin-panel="passwords"][aria-current="page"]{color:#ff4545}
