.button{background:var(--ink);min-height:2.75rem;color:var(--paper);cursor:pointer;transition:transform .3s var(--ease), opacity .25s var(--ease);border-radius:999px;justify-content:center;align-items:center;gap:.5rem;padding:.5rem 1.375rem;font-size:.9375rem;font-weight:500;display:inline-flex}.button:disabled{opacity:.35;cursor:default}@media (hover:hover){.button:not(:disabled):hover{opacity:.82}}.button:not(:disabled):active{transform:scale(.96)}.button-quiet{background:var(--surface);color:var(--ink)}.text-button{color:var(--ink-2);cursor:pointer;transition:color .2s var(--ease);font-size:.8125rem}.text-button:hover{color:var(--ink)}.form{gap:1.125rem;display:grid}.field{border:0;gap:.375rem;min-width:0;font-size:.875rem;display:grid}.field>span,.field>legend{font-weight:500}.field small,.form small{color:var(--ink-2);font-size:.8125rem}.field input:not([type=radio],[type=checkbox]),.field select,.field textarea,.filter input,.filter select{border-radius:var(--radius-small);background:var(--surface);width:100%;min-height:2.75rem;color:var(--ink);transition:border-color .2s var(--ease), background-color .2s var(--ease);border:1px solid #0000;padding:.5rem .875rem;font-size:1rem}.field input:focus,.field select:focus,.field textarea:focus,.filter input:focus,.filter select:focus{border-color:var(--ink);background:var(--paper);outline:none}.field-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.choice{flex-wrap:wrap;gap:.5rem 1.5rem;display:flex}.choice legend{margin-block-end:.375rem;font-weight:500}.choice label{cursor:pointer;align-items:center;gap:.5rem;min-height:2rem;display:inline-flex}.choice input{accent-color:var(--ink)}.teacher-only{display:none}.signup-form:has(input[value=teacher]:checked) .student-only{display:none}.signup-form:has(input[value=teacher]:checked) .teacher-only{display:block}.form-error,.form-success{border-radius:var(--radius-small);background:var(--surface);animation:rise .4s var(--ease) both;padding:.625rem .875rem;font-size:.875rem}.form-error{font-weight:500}.form-success{color:var(--ink-2)}.auth{min-height:100svh;padding:2rem var(--gutter);align-content:center;justify-items:center;gap:2rem;display:grid}.auth-name{letter-spacing:-.01em;font-size:1.25rem;font-weight:700;line-height:1}.auth-panel{width:min(100%,24rem);animation:rise .7s var(--ease) both}.auth-title{letter-spacing:-.025em;margin-block-end:1.75rem;font-size:clamp(2.25rem,8vw,3rem);font-weight:800;line-height:1.05}.auth-links{color:var(--ink-2);flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;margin-block-start:1.5rem;font-size:.8125rem;display:flex}.auth-links a{transition:color .2s var(--ease)}.auth-links a:hover{color:var(--ink)}.studio-bar{z-index:10;width:calc(100% - 2 * var(--gutter));max-width:calc(var(--page-max) - 2 * var(--gutter));border:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:blur(20px)saturate(180%);border-radius:1.625rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.25rem 1rem;min-height:3.25rem;margin:.75rem auto 0;padding:.375rem 1.25rem;display:flex;position:sticky;inset-block-start:.75rem}.studio-nav{flex-wrap:wrap;align-items:center;gap:.125rem .25rem;font-size:.875rem;display:flex}.studio-nav a{color:var(--ink-2);transition:color .25s var(--ease), background-color .25s var(--ease);border-radius:999px;padding:.4375rem .75rem;font-weight:500}@media (hover:hover){.studio-nav a:hover{background:var(--surface);color:var(--ink)}}.studio-nav .text-button{padding:.4375rem .75rem;font-size:.875rem;font-weight:500}.studio-page{max-width:60rem;padding:clamp(2rem, 5vw, 3.5rem) var(--gutter) 5rem;animation:rise .6s var(--ease) both;margin-inline:auto}.studio-title{letter-spacing:-.025em;margin-block-end:1.75rem;font-size:clamp(2.25rem,6vw,3.5rem);font-weight:800;line-height:1.05}.studio-subtitle{letter-spacing:-.01em;margin-block:2.75rem 1rem;font-size:1.25rem;font-weight:700;line-height:1.25}.studio-note{color:var(--ink-2);font-size:.875rem}.narrow{max-width:28rem}.filter{flex-wrap:wrap;gap:.5rem;margin-block-end:1.25rem;display:flex}.filter input{flex:14rem;width:auto}.filter select{flex:none;width:auto}.rows{gap:.125rem;display:grid}.row{border-radius:var(--radius-small);transition:background-color .25s var(--ease);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.125rem 1.5rem;padding:.875rem 1rem;display:grid}@media (hover:hover){.row:hover{background:var(--surface)}}.row-title{letter-spacing:-.01em;font-size:1.0625rem;font-weight:600;line-height:1.35}.row-meta{color:var(--ink-2);flex-wrap:wrap;grid-column:1;gap:.125rem .875rem;font-size:.8125rem;display:flex}.row-actions{flex-wrap:wrap;grid-area:1/2/span 2;justify-content:flex-end;align-items:center;gap:.25rem 1rem;display:flex}@media (max-width:560px){.row{grid-template-columns:minmax(0,1fr)}.row-actions{grid-area:auto/1;justify-content:flex-start;margin-block-start:.375rem}}.stats{grid-template-columns:repeat(auto-fit,minmax(7.5rem,1fr));gap:.75rem;margin-block-end:2.5rem;display:grid}.stats div{border-radius:var(--radius);background:var(--surface);flex-direction:column;gap:.25rem;padding:1.125rem 1.25rem;display:flex}.stats dd{letter-spacing:-.02em;font-size:clamp(1.875rem,5vw,2.5rem);font-weight:700;line-height:1}.stats dt{color:var(--ink-2);order:2;font-size:.8125rem}.link-box{grid-column:1/-1;gap:.5rem;margin-block-start:.5rem;font-size:.8125rem;display:grid}.link-box code{border-radius:var(--radius-small);background:var(--paper);overflow-wrap:anywhere;padding:.625rem .75rem;font-size:.75rem}.editor{max-width:44rem;padding:clamp(2rem, 5vw, 3.5rem) var(--gutter) 6rem;animation:rise .6s var(--ease) both;gap:1.5rem;margin-inline:auto;display:grid}.editor-title{width:100%;color:var(--ink);letter-spacing:-.02em;resize:none;field-sizing:content;background:0 0;font-size:clamp(2.125rem,5vw,3.5rem);font-weight:700;line-height:1.15}.editor-title::placeholder{color:var(--line)}.editor-title:focus{outline:none}.editor-notice{border-radius:var(--radius-small);background:var(--surface);padding:.75rem 1rem;font-size:.875rem}.toolbar{z-index:2;border:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:blur(20px)saturate(180%);border-radius:1.25rem;flex-wrap:wrap;gap:.125rem;padding:.25rem;display:flex;position:sticky;inset-block-start:4.75rem}.toolbar button{cursor:pointer;block-size:2.5rem;inline-size:2.5rem;transition:background-color .2s var(--ease), color .2s var(--ease), transform .25s var(--ease);border-radius:.875rem;place-items:center;display:grid}@media (hover:hover){.toolbar button:not(:disabled):hover{background:var(--surface)}}.toolbar button:not(:disabled):active{transform:scale(.92)}.toolbar button[aria-pressed=true]{background:var(--ink);color:var(--paper)}.toolbar button:disabled{opacity:.3;cursor:default}.toolbar-link{flex:100%;gap:.375rem;padding:.25rem;display:flex}.toolbar-link input{background:var(--surface);min-width:0;min-height:2.5rem;color:var(--ink);border-radius:999px;flex:1;padding-inline:.75rem}.toolbar-link .button{inline-size:auto;min-height:2.5rem}.editor-body{min-height:18rem;margin-block-start:1.5rem}.editor-body .article-body{max-width:none;animation:none}.editor-body .tiptap{outline:none;min-height:18rem}.editor-body .tiptap p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:inline-start;block-size:0;color:var(--ink-2);pointer-events:none}.editor-body img{border-radius:var(--radius);max-width:100%;height:auto}.editor-body img.ProseMirror-selectednode{outline:2px solid var(--ink)}.editor-actions{flex-wrap:wrap;align-items:center;gap:.625rem;padding-block-start:.5rem;display:flex}.save-state{min-height:1.25rem;color:var(--ink-2);font-size:.8125rem}.cover-preview{aspect-ratio:4/3;border-radius:var(--radius);object-fit:cover;width:100%;animation:fade-in .5s var(--ease) both;display:block}.cover-actions{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-block-start:.25rem;display:flex}.modal{border-radius:var(--radius);background:var(--paper);width:min(100% - 2rem,30rem);max-height:calc(100svh - 2rem);color:var(--ink);animation:modal-in .42s var(--ease) both;border:0;margin:auto;padding:1.5rem;overflow-y:auto}.modal::backdrop{-webkit-backdrop-filter:blur(6px);background:#00000073;animation:.3s both fade-in}@keyframes modal-in{0%{opacity:0;transform:translateY(.75rem)scale(.97)}}.modal h2{letter-spacing:-.01em;margin-block-end:.5rem;font-size:1.375rem;font-weight:700;line-height:1.2}.modal p{color:var(--ink-2);font-size:.9375rem}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;margin-block-start:1.5rem;display:flex}.crop-stage{border-radius:var(--radius-small);background:#000;height:min(55svh,22rem);margin-block:1rem;position:relative;overflow:hidden}.crop-zoom{gap:.25rem;font-size:.875rem;display:grid}.crop-zoom input{width:100%;accent-color:var(--ink)}.survey-list{gap:.25rem;max-height:50svh;margin-block-start:1rem;display:grid;overflow-y:auto}.survey-list label{border-radius:var(--radius-small);cursor:pointer;transition:background-color .2s var(--ease);justify-content:space-between;align-items:center;gap:1rem;padding:.625rem .75rem;font-size:.9375rem;display:flex}.survey-list label:hover{background:var(--surface)}.survey-list input{accent-color:var(--ink);flex:none}
