/* Focused V6.5 repairs. No drawing-mode background on the control container. */
#erase-ink,#erase-ink-floating{
 position:relative;isolation:isolate;min-height:44px;padding:10px 15px;
 color:#754055;background:#fff0e4;border:1px solid #bc8199;border-radius:2px 8px 3px 6px;
 box-shadow:2px 3px 0 #87536b26;transform:rotate(-1.5deg);text-decoration:none;
 font:10px/1.5 var(--mono);border-bottom:2px dashed #be8da0;
}
#erase-ink::before,#erase-ink-floating::before{
 content:'';position:absolute;width:27px;height:9px;top:-4px;left:12px;
 background:repeating-linear-gradient(45deg,#dfacc08c 0 3px,#f2d1dca8 3px 6px);
 transform:rotate(-9deg);pointer-events:none;
}
#erase-ink:hover,#erase-ink-floating:hover{background:#ffe9df;border-color:#a8647f}
#erase-ink:active,#erase-ink-floating:active{box-shadow:1px 1px 0 #87536b26}
#erase-ink:focus-visible,#erase-ink-floating:focus-visible{outline:2px solid #84425b;outline-offset:4px}
/* Canvas backing covers the document; the transparent viewport clips it only.
   JS translates the raster by negative scroll, never the stored point data. */
#ink-art{contain:strict}
#ink-art #magic-ink{inset:auto;left:0;top:0;max-width:none;max-height:none;transform-origin:0 0;will-change:transform}

/* Persistent notebook deterioration. All variables are deterministic per page.
   Text remains on a pale printing area even when the margins are nearly black. */
.attempt-sheet{
 --damage:0;--edge:0px;--stain:0px;--scar:0;--leak:0;--paper:rgb(255 240 243);
 background:linear-gradient(100deg,#fff0f3,#f2e4ef);isolation:isolate;
 clip-path:polygon(0 0,23% 0,24% var(--edge),26% 0,100% 0,100% 29%,calc(100% - var(--edge)) 31%,100% 35%,100% 100%,73% 100%,70% calc(100% - var(--edge)),67% 100%,0 100%,0 68%,var(--edge) 66%,0 62%);
}
.attempt-sheet::before{
 content:'';position:absolute;inset:0;pointer-events:none;z-index:0;opacity:var(--damage);
 background:radial-gradient(ellipse at 0 90%,#13090f 0,#4c1126 45%,transparent 73%) 0 100% / var(--stain) 90% no-repeat,
 radial-gradient(ellipse at 100% 0,#2b0b16 0,#681c32 48%,transparent 75%) 100% 0 / calc(var(--stain)*1.2) 80% no-repeat,
 repeating-linear-gradient(112deg,transparent 0 23px,#b44b6655 23px 24px,transparent 24px 31px),var(--paper);
 border:2px solid #692139;
}
.attempt-sheet::after{
 content:'';position:absolute;inset:5px;pointer-events:none;z-index:1;opacity:var(--scar);
 border-top:3px dashed #1d0b15;border-right:2px dotted #9b3b54;
 background:linear-gradient(8deg,transparent 11%,#1b0d18 11% 12%,transparent 12% 87%,#bf5672 87% 88%,transparent 88%);
}
.attempt-header,.attempt-body,.attempt-date,.attempt-binding{position:relative;z-index:2}
.attempt-binding{position:absolute;opacity:calc(1 - var(--damage)*.75);translate:calc(var(--damage)*3px) 0}
.attempt-header,.attempt-body,.attempt-date{
 background:rgb(255 240 243 / var(--damage));
 box-shadow:0 0 0 calc(var(--damage)*3px) rgb(255 240 243 / var(--damage));
 text-shadow:calc(var(--damage)*1px) 0 rgb(160 43 78 / var(--scar));
}
.attempt-body{transform:rotate(calc(var(--damage)*-1.4deg));color:#73425b}
.attempt-sheet .pencil-trace{display:block;z-index:2;opacity:var(--damage);width:calc(28px + var(--damage)*23px)}
.attempt-leaks{position:absolute;inset:0;pointer-events:none;opacity:var(--leak,0);z-index:3}
.attempt-leaks i{position:absolute;background:#461025;border-right:2px solid #b4506a;clip-path:polygon(0 0,83% 0,83% 33%,100% 33%,100% 70%,45% 70%,45% 100%,0 100%)}
.attempt-leaks i:nth-child(1){left:-7px;top:30%;width:12px;height:24px;transform:rotate(-3deg)}
.attempt-leaks i:nth-child(2){right:-8px;top:58%;width:14px;height:9px}
.attempt-leaks i:nth-child(3){bottom:-6px;left:28%;height:11px;width:28px;transform:rotate(3deg)}
.flying-attempt{clip-path:none}
.flying-attempt .attempt-sheet{width:100%;height:100%}
/* The irreversible switch removes visual infection without advancing/resetting pages. */
body:not([data-angel-state=alive]) .attempt-sheet,
body:not([data-angel-state=alive]) .attempt-leaks{--damage:0!important;--edge:0px!important;--scar:0!important;--leak:0!important}

/* Layer 1: a continuous infected identity, local to the two DNI surfaces. */
:is(#boundaries-window,#dni-dialog)[data-infected=true]{
 color:#f1c0cf;background:#250c19;border-color:#7e2c47;border-style:solid dashed double dashed;
 box-shadow:3px 3px 0 #4b112a,6px 5px 0 #a64c6866,inset 0 0 0 1px #b25771;
}
:is(#boundaries-window,#dni-dialog)[data-infected=true]>.titlebar{
 position:relative;background:repeating-linear-gradient(0deg,transparent 0 7px,#a43f5d30 7px 8px),linear-gradient(105deg,#250a17,#661d38 62%,#1f0a13);
 border-color:#b95173;color:#ffdbe5;overflow:visible;
}
:is(#boundaries-window,#dni-dialog)[data-infected=true]>.titlebar::before{
 content:'//// /';position:absolute;left:30%;right:45px;top:-3px;height:5px;overflow:hidden;
 color:#dc7b94;background:#2c0c1b;border-top:1px dashed #bb5c78;pointer-events:none;
}
:is(#boundaries-window,#dni-dialog)[data-infected=true]>.titlebar::after{
 content:'';position:absolute;right:-6px;top:-3px;width:46px;height:calc(100% + 5px);
 border:1px dashed #bd4969;clip-path:polygon(0 0,100% 0,100% 40%,82% 40%,82% 90%,0 90%);pointer-events:none;
}
:is(#boundaries-window,#dni-dialog)[data-infected=true] .damage-surface{
 color:#f6cad6;background:radial-gradient(ellipse at 0 85%,#8d2546 0,transparent 48%),
 radial-gradient(ellipse at 100% 0,#61132f 0,transparent 52%),
 repeating-linear-gradient(92deg,transparent 0 21px,#cb466923 21px 22px),#210d19;
 border-color:#7b2a45;box-shadow:inset 3px 0 #b24a69,inset -3px -4px #110810;
}
:is(#boundaries-window,#dni-dialog)[data-infected=true] .damage-surface::after{
 content:'';position:absolute;inset:0;pointer-events:none;z-index:1;
 background:linear-gradient(177deg,transparent 0 17%,#0e07118c 17% 19%,transparent 19% 81%,#a632554d 81% 83%,transparent 83%);
 border:2px dashed #79304b;clip-path:polygon(0 0,100% 0,100% 27%,98% 27%,98% 50%,100% 50%,100% 100%,0 100%,0 75%,2% 75%,2% 39%,0 39%);
}
:is(#boundaries-window,#dni-dialog)[data-infected=true] :is(.dni-button,.dni-caption,.boundary-whisper,.document-file,.dni-rule,.document-artifact){color:#f7cbd8}
:is(#boundaries-window,#dni-dialog)[data-infected=true] .dni-label{color:#ffd8e4;text-shadow:2px 0 #a33557,-1px 0 #4c1429;display:block;height:54px;line-height:54px}
:is(#boundaries-window,#dni-dialog)[data-infected=true] .tiny-halo{border-color:#d77e9b;box-shadow:3px 1px 0 #a13556}
:is(#boundaries-window,#dni-dialog)[data-infected=true] .document-heart{color:#dc7795}
:is(#boundaries-window,#dni-dialog)[data-infected=true] :is(.window-close,.move-handle,#accept-dni){position:relative;z-index:4;background:#f7dbe5;color:#67273e;border-color:#c77d98}
:is(#boundaries-window,#dni-dialog)[data-infected=true] :is(#restore-document,#restore-dni){position:relative;z-index:4;background:#3d1428;color:#ffdae6;border-color:#c47d95}
:is(#boundaries-window,#dni-dialog)[data-infected=true] .dni-rule{position:relative;z-index:2;background:#29101e;padding:6px;color:#ffe4ec}
:is(#boundaries-window,#dni-dialog)[data-infected=true] .text-echo{color:#e7829e;text-shadow:3px 0 #a83252}

/* Layer 2: sharp, changing cuts. Hit targets themselves are never displaced. */
:is(#boundaries-window,#dni-dialog)[data-infected=true]>.breach{--reach:35px}
:is(#boundaries-window,#dni-dialog)[data-infected=true]>.breach i{background:repeating-linear-gradient(0deg,#300a1a 0 4px,#bb4165 4px 6px,#63132f 6px 10px);border-color:#e187a1}
:is(#boundaries-window,#dni-dialog)[data-infected=true]>.breach .escape-text{color:#efabc1;background:#350d20;text-shadow:4px 0 #a23554}
:is(#boundaries-window,#dni-dialog)[data-infected=true]>.breach .escape-line{border-color:#cb5679;background:#200917}
:is(#boundaries-window,#dni-dialog)[data-infected=true][data-burst="0"] .dni-label{transform:translateX(-4px);text-shadow:6px 1px #9e3355,-3px 0 #da7796}
:is(#boundaries-window,#dni-dialog)[data-infected=true][data-burst="1"]>.titlebar h2{transform:translateX(4px);text-shadow:-5px 0 #b44466}
:is(#boundaries-window,#dni-dialog)[data-infected=true][data-burst="1"]>.titlebar::before{height:12px;left:-13px;right:33%;top:7px;transform:translateX(5px)}
:is(#boundaries-window,#dni-dialog)[data-infected=true][data-burst="2"] .damage-surface::after{transform:translateX(-3px);background:repeating-linear-gradient(0deg,transparent 0 19px,#9e335557 19px 22px,transparent 22px 40px)}
:is(#boundaries-window,#dni-dialog)[data-infected=true][data-burst="3"] .text-echo{display:block;transform:translate(7px,-2px);clip-path:polygon(0 30%,100% 30%,100% 68%,0 68%)}
:is(#boundaries-window,#dni-dialog)[data-infected=true][data-burst="3"]>.breach .escape-line{bottom:41%;height:9px;left:-25px;right:-30px}
/* Layer 3: rare ruptures combine frame, text and multiple detached fragments. */
:is(#boundaries-window,#dni-dialog)[data-infected=true][data-burst="4"]>.breach :is(i,b,span){opacity:1}
:is(#boundaries-window,#dni-dialog)[data-infected=true][data-burst="4"]>.titlebar h2{text-shadow:7px 0 #b95374,-4px -1px #a34767;transform:translateX(-3px)}
:is(#boundaries-window,#dni-dialog)[data-infected=true][data-burst="4"]>.titlebar::after{transform:translate(4px,-4px);border-width:3px}
:is(#boundaries-window,#dni-dialog)[data-infected=true][data-burst="4"] .damage-surface::after{background:linear-gradient(0deg,transparent 0 28%,#0d060ed9 28% 32%,transparent 32% 65%,#9a2a4b88 65% 72%,transparent 72%);transform:translateX(4px)}
:is(#boundaries-window,#dni-dialog)[data-infected=true][data-burst="4"] .dni-label{text-shadow:8px -2px #bf5274,-5px 2px #962846}

/* Motion reduction preserves the dark identity with stable readable content. */
:is(#boundaries-window,#dni-dialog)[data-infection-mode=restrained] .text-echo{display:none!important}
:is(#boundaries-window,#dni-dialog)[data-infection-mode=restrained]>.breach{visibility:hidden!important}
:is(#boundaries-window,#dni-dialog)[data-infection-mode=restrained] .dni-label{text-shadow:none}
.safe-background :is(#boundaries-window,#dni-dialog) .text-echo{display:none!important}
@media(prefers-reduced-motion:reduce){
 :is(#boundaries-window,#dni-dialog) .text-echo{display:none!important}
 :is(#boundaries-window,#dni-dialog)>.breach{visibility:hidden!important}
}
@media(max-width:760px){
 :is(#boundaries-window,#dni-dialog)[data-infected=true]>.breach{--reach:14px}
 :is(#boundaries-window,#dni-dialog)[data-infected=true][data-burst="3"]>.breach .escape-line{left:-12px;right:-14px}
 #erase-ink,#erase-ink-floating{padding:9px 12px;max-width:100%;transform:rotate(-1deg)}
}
